Ich versuche, einfach einen Ordner mit rsync über mein lokales Netzwerk von meinem Computer vor mir auf den Zielcomputer zu synchronisieren.
#!/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"
Um mir selbst Schreibrechte zu geben
chmod +x nameofscript.sh
Wenn ich es ausführe, gibt es aus:
rsync: --recursive --ignore-existing --progress: unknown option
Wie speichere ich diese Optionen richtig und führe sie als Skript aus?
Akzeptierte Antwort:
Durch Anführungszeichen von "$OPTIONS"
, die Shell übergibt es als einzelne Zeichenfolge an rsync, sodass rsync versucht, eine einzelne Option namens "--recursive --ignore-existing --progress"
zu finden , die offensichtlich nicht existiert, da dies drei separate Optionen sind.
Dies sollte es für Sie beheben:
rsync $OPTIONS "$SRC_DIR" "$DST_DIR"
Eine bessere Option könnte sein, ein Bash-Array zu verwenden, um Ihre Optionen zu speichern.
OPTIONS=(
--recursive
--ignore-existing
--progress
)
# ...
rsync "${OPTIONS[@]}" "$SRC_DIR" "$DST_DIR"
Der Vorteil der Verwendung eines Arrays besteht darin, dass Sie dann Elemente einfügen können, die Leerzeichen enthalten, falls erforderlich.