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.