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

RSync:Wie synchronisiere ich in beide Richtungen?

Führen Sie es einfach zweimal aus, mit dem "neueren" Modus (Flag -u oder --update) plus -t (um die Änderungszeit der Datei zu kopieren), -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 keine Löschungen handhaben, aber ich bin mir nicht sicher, ob es eine gute Lösung für dieses Problem mit nur periodischer Synchronisierung gibt.


Kennen Sie Unison File Synchronizer?

Unison ist ein Dateisynchronisierungstool für Unix und Windows. Es ermöglicht, dass zwei Kopien einer Sammlung von Dateien und Verzeichnissen auf unterschiedlichen Hosts (oder verschiedenen Platten auf demselben Host) gespeichert, separat modifiziert und dann auf den neuesten Stand gebracht werden, indem die Änderungen in jeder Kopie an die andere weitergegeben werden. ...

Beachten Sie auch, dass es ausfallsicher ist:

Unisono ist widerstandsfähig gegen Fehler. Es ist darauf zu achten, dass die Replikate und ihre eigenen privaten Strukturen jederzeit in einem vernünftigen Zustand bleiben, selbst im Falle einer anormalen Beendigung oder eines Kommunikationsfehlers.


Sie müssen rsync ausführen zweimal und ich empfehle, es mit -au auszuführen :

rsync -au /local/source/* /remote/destination
rsync -au /remote/destination/* /local/source

-a (a für Archiv) ist eine Abkürzung für -rlptgoD :

  • -r Rekursion in Unterverzeichnisse
  • -l Auch symbolische Links synchronisieren
  • -p Auch Dateiberechtigungen synchronisieren
  • -t Auch Änderungszeiten von Dateien synchronisieren
  • -g Auch Dateigruppen synchronisieren
  • -o Auch Dateieigentümer synchronisieren
  • -D Synchronisieren Sie auch spezielle (nicht reguläre/Meta-) Dateien

Grundsätzlich immer dann, wenn Sie mit rsync eine identische Eins-zu-Eins-Kopie erstellen möchten , sollten Sie immer -a verwenden da dies die meisten Benutzer erwarten, wenn sie über "synchronisieren" sprechen ". Andere Antworten hier scheinen zu übersehen, dass manchmal der Inhalt einer Datei unverändert bleibt, sich aber möglicherweise der Besitzer geändert hat oder sich die Zugriffsberechtigungen geändert haben und in diesem Fall rsync würde die Datei nicht synchronisieren, was fatal sein könnte.

Sie benötigen aber auch -u wie das rsync sagt jede Datei/Ordner vollständig in Ruhe zu lassen, falls sie bereits am Ziel vorhanden sind und ein neueres letztes Änderungsdatum haben. Ohne -u rsync würde unabhängig davon synchronisieren, ob eine Datei/ein Ordner neuer ist oder nicht.

Bitte beachten Sie, dass diese Lösung gelöschte Dateien nicht verarbeiten kann. Der Umgang mit Löschungen ist nicht ohne weiteres möglich, wenn man sich folgende Situation vor Augen führt:Eine Datei wurde an der Quelle gelöscht, wie soll nun rsync wissen, ob diese Datei einmal existierte und gelöscht wurde (in diesem Fall muss sie auch am Ziel gelöscht werden) oder ob sie an der Quelle nie existierte (in diesem Fall muss sie vom Ziel kopiert werden). Diese beiden Situationen sehen identisch zu rsync aus daher kann es nicht wissen, wie es richtig reagieren soll. Es hilft nicht, umgekehrt zu synchronisieren, da dies zu derselben Situation führen kann:Eine Datei existiert an der Quelle, aber nicht am Ziel. Wieso den? Hat es am Zielort nie existiert oder wurde es gelöscht? Beide Fälle sehen identisch aus wie rsync .

Synchronisierungstools, die gelöschte Dateien zuverlässig synchronisieren können, verwalten normalerweise ein Synchronisierungsprotokoll über alle vergangenen Synchronisierungsvorgänge. Wenn dieses Protokoll zeigt, dass es einmal eine Datei gab und synchronisiert wurde, aber jetzt fehlt, ist es klar, dass sie gelöscht wurde. Wenn es laut Protokoll nie eine solche Datei gab, muss sie synchronisiert werden. Indem alle Protokolleinträge mit Zeitstempel gespeichert werden, ist es sogar möglich, dass eine gelöschte Datei zurückkommt und mehrmals gelöscht wird, aber das Synchronisierungstool weiß immer, was zu tun ist, und das Ergebnis ist immer korrekt. rsync hat kein solches Protokoll, es verlässt sich nur auf den aktuellen Dateistatus von zwei Seiten der Operation.

Sie können sich jedoch mit rsync einen Synchronisierungsbefehl erstellen und ein bisschen POSIX-Shell-Skripting, das einem oben beschriebenen Sync-Tool schon sehr nahe kommt. Da ich selbst ein solches Tool brauchte, ist hier eine Antwort auf Stackoverflow, die Sie durch die Erstellung eines solchen Skripts führt.


Linux
  1. Wie plane ich einen Rsync-Befehl?

  2. Wie macht man eine Datei spärlich?

  3. So sortieren Sie eine Datei an Ort und Stelle

  4. Wie kann ich rsync mit einem FAT-Dateisystem verwenden?

  5. Wie kann ich Dateien/Ordner ab einem bestimmten Datum synchronisieren?

So erstellen Sie eine Datei unter Linux

So erstellen Sie eine Tar-Gz-Datei

So entpacken (öffnen) Sie die Gz-Datei

So verknüpfen Sie eine Datei unter Linux per Symlink

So verwenden Sie Rsync zum Kopieren/Synchronisieren von Dateien zwischen Servern

Wie Echo in Datei