GNU/Linux >> Tutoriales Linux >  >> Linux

¿Opción desconocida de Rsync de la ejecución del script Bash?

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.


Linux
  1. ¿Obtener ruta completa desde dentro de Bash Script?

  2. Canalizar hacia/desde el portapapeles en el script Bash

  3. Script bash:usar el comando de script desde un script bash para iniciar sesión

  4. Abra Vim desde dentro de un script de shell Bash

  5. archivo de creación atómica si no existe desde el script bash

35 ejemplos de secuencias de comandos Bash

Cómo ejecutar un script Bash

Bash Script para Center Fortune/texto de Stdin/pipe?

Ejecute el comando bash en la canalización de jenkins

¿Hay alguna forma de mostrar la notificación del script bash en Ubuntu?

Bash script para eliminar el archivo más antiguo de una carpeta