Estoy intentando simplemente sincronizar una carpeta usando rsync a través de mi red local desde mi computadora frente a mí a la computadora de destino.
#!/bin/bash
echo "This script will sync from my Macbook Dropbox/scripts/ folder to [email protected] @ Norms house"
OPTIONS="--recursive --ignore-existing --progress"
SRC_DIR="~/Dropbox/scripts/"
DST_DIR="[email protected]:~/scripts/"
rsync "$OPTIONS" "$SRC_DIR" "$DST_DIR"
Para darme privilegios de escritura
chmod +x nameofscript.sh
Cuando lo ejecuto, sale:
rsync: --recursive --ignore-existing --progress: unknown option
¿Cómo almaceno correctamente estas opciones y las ejecuto como un script?
Respuesta aceptada:
Citando "$OPTIONS"
, el shell lo pasa a rsync como una sola cadena, por lo que rsync está tratando de encontrar una sola opción llamada "--recursive --ignore-existing --progress"
, que obviamente no existe, ya que estas son tres opciones separadas.
Esto debería solucionarlo por ti:
rsync $OPTIONS "$SRC_DIR" "$DST_DIR"
Una mejor opción podría ser usar una matriz bash para almacenar sus opciones.
OPTIONS=(
--recursive
--ignore-existing
--progress
)
# ...
rsync "${OPTIONS[@]}" "$SRC_DIR" "$DST_DIR"
La ventaja de usar una matriz es que luego puede introducir elementos que incluyen espacios, si es necesario.