GNU/Linux >> LINUX-Kenntnisse >  >> Linux

Rsync Unbekannte Option von der Bash-Skriptausführung?

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.


Linux
  1. Bash-Skript zum Entfernen der ältesten Datei aus einem Ordner?

  2. Vollständigen Pfad aus Bash-Skript abrufen?

  3. In Bash-Skript zur/von der Zwischenablage leiten

  4. Rufen Sie das Python-Skript von bash mit Argument auf

  5. Bash-Skript zum Entfernen der ältesten Datei aus einem Ordner

35 Bash-Skriptbeispiele

So führen Sie ein Bash-Skript aus

Bash-Skript zum Zentrieren von Fortune/Text von Stdin/Pipe?

Gibt es eine Möglichkeit, Benachrichtigungen vom Bash-Skript in Ubuntu anzuzeigen?

rsync/ssh/rsnapshot backup – Remote-Skriptausführung

Ausführen eines Bash-Skripts oder einer C-Binärdatei auf einem Dateisystem mit der Option noexec