GNU/Linux >> Linux Esercitazione >  >> Linux

Opzione Rsync sconosciuta dall'esecuzione dello script Bash?

Sto semplicemente cercando di sincronizzare una cartella usando rsync sulla mia rete locale dal mio computer davanti a me al computer di destinazione.

#!/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"

Per darmi i privilegi di scrittura

chmod +x nameofscript.sh

Quando lo eseguo, restituisce:

rsync: --recursive --ignore-existing --progress: unknown option

Come faccio a memorizzare correttamente queste opzioni ed eseguirle come script?

Risposta accettata:

Citando "$OPTIONS" , la shell lo sta passando a rsync come una singola stringa, quindi rsync sta cercando di trovare una singola opzione denominata "--recursive --ignore-existing --progress" , che ovviamente non esiste, poiché si tratta di tre opzioni separate.

Questo dovrebbe risolverlo per te:

rsync $OPTIONS "$SRC_DIR" "$DST_DIR"

Un'opzione migliore potrebbe essere quella di utilizzare un array bash per memorizzare le tue opzioni.

OPTIONS=(
    --recursive
    --ignore-existing
    --progress
)
# ...
rsync "${OPTIONS[@]}" "$SRC_DIR" "$DST_DIR"

Il vantaggio dell'utilizzo di un array è che puoi introdurre elementi che includono spazi, se necessari.


Linux
  1. Script bash:utilizzo del comando script da uno script bash per la registrazione di una sessione

  2. Apri Vim dall'interno di uno script di shell Bash

  3. Chiama lo script Python da bash con argomento

  4. Esegui il comando bash sulla pipeline jenkins

  5. bash + leggi variabili e valori dal file tramite lo script bash

35 Esempi di script Bash

Come eseguire uno script Bash

Script di Bash per centrare Fortune/testo da Stdin/pipe?

C'è un modo per mostrare la notifica dallo script bash in Ubuntu?

Backup rsync/ssh/rsnapshot -- esecuzione remota di script

Script Bash per rimuovere il file più vecchio da una cartella