Ermöglicht Rsync die beidseitige Synchronisierung von Dateien?

25

Ich habe einen Linux-Webserver mit rsync und cygwin gesichert. Ich habe jetzt eine perfekte Kopie des Servers auf meinem Windows-Laptop. Wenn ich eine Datei auf meinem Laptop lösche oder ändere und rsync erneut mit cygwin ausführe, wird dann dieselbe Datei auf dem Server gelöscht / aktualisiert? Ich habe den Eindruck, dass beim Löschen / Ändern auf dem Server und Ausführen von rsync auf meinem Laptop die lokale Datei auf meinem Laptop gelöscht / geändert wird. Funktioniert dies jedoch in umgekehrter Reihenfolge?

Dan Hastings
quelle
12
Dies ist keine Antwort auf Ihre Frage, aber Sie sollten einen Blick darauf werfen unison. Es ist ein Synchronisationstool, das den Dateizustand auf beiden Kopien speichert und somit eine bidirektionale Synchronisation ermöglicht. Es gibt auch ein Cygwin-Paket.
Dubu

Antworten:

29

Rsync führt eine einseitige Synchronisierung durch. Sie müssen jedoch entscheiden, in welche Richtung die Synchronisierung erfolgen soll.

Die Rsync-Befehlssyntax lautet wie folgt:

rsync [OPTION...] SRC... [DEST]

Beachten Sie, dass Sie die Synchronisierung von Quelle zu Ziel angeben. Quelle und Ziel können beliebige lokale oder entfernte Pfade sein.

Wenn Sie beispielsweise Dateien von Ihrem Server auf Ihren Laptop kopieren möchten, gehen Sie wie folgt vor:

rsync [OPTION...] <server-path> <laptop-path>

So synchronisieren Sie in die entgegengesetzte Richtung:

rsync [OPTION...] <laptop-path> <server-path>

Um Ihre Frage zu beantworten: Es hängt davon ab, wie Sie rsync ausführen.

Wenn Sie möchten, dass Dateien auf dem Ziel gelöscht werden, müssen Sie die --deleteOption verwenden. Aber seien Sie vorsichtig damit, denn wenn Sie bei der Angabe Ihrer Quelle einen Fehler machen, werden Sie am Ende alles an Ihrem Ziel entfernen. Es ist sicherer, zuerst die Synchronisierung ohne --deleteOption zu testen. Wenn Sie mit der Funktionsweise zufrieden sind, können Sie die --deleteOption hinzufügen .

Wie durch vorgeschlagen masegaloeh unten in den Kommentaren, -noder --dry-runOption auch zu Test verwendet werden kann , rsyncFührungsverhalten.

Grekasius
quelle
9
Zusätzlicher Hinweis: Zum Testen des rsync-Verhaltens können Sie Parameter -noder verwenden --dry-run, damit Sie wissen, welche Datei gelöscht und geändert wird
masegaloeh
1

Ein in python3 geschriebenes Wrapper-Tool namens bsyncwraps findund rsynccommand vereinfacht die Aufgabe. Github-Repository: https://github.com/dooblem/bsync

Haben Sie keine Angst, wenn es auf Github läuft (dh auf eine Weise, die Sie für einen Programmierer halten).

Biocyberman
quelle
-1

Wenn Sie --delete-after und nicht --delete verwenden, wird sichergestellt, dass Ihr Empfangsende die Dateien nach der Übertragung löscht, nicht vorher.

Moti
quelle
Ich gehe davon aus, dass die Ablehnung darin besteht, dass das OP nicht versucht, rsyncirgendetwas zu löschen. Er löscht Dinge auf eigene Faust. Trotzdem ein hilfreicher Hinweis für das Rsync im Allgemeinen. Vielen Dank.
Harperville