it-swarm.com.de

RSync: Wie synchronisiere ich in beide Richtungen?

Ich möchte rsync verwenden, um synchronize zwei Verzeichnisse in beide Richtungen auszuführen.

Ich beziehe mich auf die Synchronisation im klassischen Sinne ( nicht wie es in rsync-Handbüchern gemeint ist):
Ich möchte die Verzeichnisse in beide Richtungen , Aktualisieren, je nachdem, welches davon neuere ist.

Kann dies von rsync (bevorzugt auf Linux-Weise) durchgeführt werden?
Falls nicht, welche anderen Lösungen gibt es?

55

Führen Sie es einfach zweimal aus, mit dem "neueren" Modus (-u oder --update flag) plus -t (zum Kopieren der Änderungszeit der Datei), -r (für rekursive Ordner) und -v (für eine ausführliche Ausgabe, um zu sehen, was es ist tun):

rsync -rtuv /path/to/dir_a/* /path/to/dir_b
rsync -rtuv /path/to/dir_b/* /path/to/dir_a

Dies wird nicht mit Löschungen behandelt, aber ich bin nicht sicher, dass es eine gute Lösung für dieses Problem gibt, wenn nur periodisches Synchronisieren ausgeführt wird.

52
jsight

Kennen Sie Unison File Synchronizer ?

Unison ist ein Dateisynchronisierungstool für Unix und Windows. Es erlaubt zwei Repliken einer Sammlung von Dateien und Verzeichnisse, die auf verschiedenen .__ gespeichert werden sollen. Hosts (oder verschiedene Festplatten auf demselben Host), separat geändert und dann durch Weitergabe der wechselt in jeder Replik in die andere. ...

Beachten Sie auch, dass es ausfallsicher ist:

Unison ist ausfallsicher. Es ist vorsichtig, um die Nachbildungen und ihre eigene private Strukturen in einem vernünftigen Zustand immer, auch im Fall von abnormale Beendigungs- oder Kommunikationsfehler.

53
MaD70

Vielen Dank

rsync -urv --progress dir_a dir_b && rsync -urv  --progress dir_b dir_a

Dies würde dazu führen, dass die zweite Synchronisierung unmittelbar nach dem 1. Synchronisieren stattfindet. Wenn die Verzeichnisstruktur riesig ist, spart dies Zeit, da man nicht vor dem PC sitzen muss. Wenn die Struktur sehr groß ist, entfernen Sie das Verbose und den Fortschritt

rsync -ur dir_a dir_b && rsync -ur dir_b dir_a
5
Mayank Agarwal

Verwenden Sie rsync <OPTIONS> [hostname:]source-dir [hostname:]dest-dir

zum Beispiel:

rsync -pogtEtvr --progress --bwlimit=2000 xxx-files different-stuff

Synchronisiert xxx-Dateien mit different-stuff/xxx-Dateien. Wenn different-stuff/xxx-Dateien nicht vorhanden sind, wird es erstellt - d.

-pogtEtv - nur eine Reihe von Optionen, um die Metadaten von Dateien zu erhalten, sowie v - verbose und r - rekursiv

--progress - Fortschritt der Synchronisierung in Echtzeit anzeigen - sehr nützlich, wenn Sie große Dateien kopieren

--bwlimit=2000 - Legt die maximale Geschwindigkeit des Kopierens/Synchronisierens fest (bw = Bandbreite)

P.S. rsync ist von entscheidender Bedeutung, wenn Sie über das Netzwerk arbeiten. Bei einem lokalen Computer können Sie Befehle wie cp verwenden.

Viel Glück! 

1
Bohdan

Ich verwende rsync mit inotifywait. Wenn Sie eine Datei ändern, wird rsync ausgeführt.

inotifywait -m --exclude "$_LOG_FILE" -r -e create,delete,delete_self,modify,moved_to --format "%w%f" "$folder"

Sie müssen inotifywait auf beiden Hosts ausführen. Bitte überprüfen Sie das Beispiel inotifywait

0
iadd

Was Sie brauchen, ist Rclone . Rclone ("rsync für Cloud-Speicher") ist ein Linux-Befehlszeilenprogramm zum Synchronisieren von Dateien und Verzeichnissen zu und von verschiedenen Cloud-Speicheranbietern (Box, Dropbox, FTP usw.) und lokalen Dateisystemen. Rlone unterstützt nur die Spiegelsynchronisation.

Eine andere grafische Lösung, die Echtzeit-Synchronisierung umfasst, wäre die Verwendung von FreeFileSync , die das Programm RealTimeSync enthält. FreefileSync unterstützt bidirektionale 2-Wege-Synchronisierung, einschließlich Löschvorgänge.

 FreFileSync gui

0
user1461607