Ist die Verwendung von rsync während der Aktualisierung der Quelle sicher?

19

Ist es sicher zu verwenden, rsyncwenn das Quelldateisystem eingehängt und beschreibbar ist, vorausgesetzt, es kann sehr gut geändert werden, während rsync ausgeführt wird? Ich gehe davon aus, dass ich unter Rennbedingungen möglicherweise nicht die neuesten Modifikationen bekomme, aber besteht das Risiko einer Korruption?

brianmearns
quelle
1
Befürchten Sie bei Änderungen die Konsistenz (zwischen Dateien, z. B. einer Datendatei und einer zugehörigen Metadatendatei, einem Protokoll oder Ähnlichem) oder die Beschädigung (innerhalb einer einzelnen Datei)?
ein Lebenslauf vom
Guter Punkt, ich hatte nicht über die Konsistenz zwischen Dateien nachgedacht. Ich glaube nicht, dass ich rsyncwirklich etwas dagegen tun kann, nur ein Schnappschuss, aber ich mache mir mehr Sorgen um Korruption in einer Datei.
Brianmearns

Antworten:

20

Die Verwendung rsyncist auf Dateisystemen mit Lese- / Schreibzugriff ziemlich sicher. Beim rsyncStart erstellt es eine Dateiliste und beginnt dann, diese Dateien zu kopieren. Diese Dateiliste wird während des Laufs nicht aktualisiert. Die eigentlichen Daten werden dann kopiert.

Das heißt, wenn sich eine Datei ändert, nachdem rsync sie die Dateiliste erstellt hat, wird der neue Inhalt kopiert . Wenn jedoch eine neue Datei hinzugefügt wird, nachdem rsyncihre Dateiliste erstellt wurde, wird diese neue Datei nicht kopiert. Wenn eine Datei gelöscht wird, nachdem rsyncdie Liste der Dateien erstellt wurde, warnt rsync, dass diese Datei nicht kopiert werden konnte. Beachten Sie, dass rsynces sich nicht um eine Momentaufnahme handelt. Das bedeutet, dass es schwierig ist festzustellen, zu welchem ​​Zeitpunkt rsyncdie Daten kopiert wurden.

Snapshots von Dateisystemen oder Volume-Managern (z. B. mit ZFS oder LVM) werden dagegen sofort erstellt und stellen einen konsistenten Snapshot des Dateisystems zu einem genau definierten Zeitpunkt dar, der dann auf einen anderen Host kopiert werden kann. rsyncbietet diese Art von Konsistenz nicht.

BEARBEITEN: Wie andere in den Kommentaren darauf hingewiesen haben, besteht die Möglichkeit, dass rsyncIhre Datei tatsächlich beschädigt wird. Wenn rsync mit dem Lesen einer Datei beginnt und eine Anwendung diese Datei gleichzeitig schreibt, wird möglicherweise eine beschädigte Datei angezeigt.

Marco
quelle
2
Hinweis zu gelöschten Dateien hinzugefügt. Würde dies wohl nochmal positiv bewerten, wenn ich für den Volume Manager Snapshot + Rsync vorschlagen könnte. Das einzige, was mir fehlt, ist das Verhalten von rsync, wenn Dateien in der Quelle während des Kopierens geändert werden. Ich bezweifle, dass es so gut funktioniert.
ein Lebenslauf vom
Einverstanden. Wenn Sie sicherstellen möchten, dass die Dateien konsistent sind, benötigen Sie Betriebssystemunterstützung?
Thorbjørn Ravn Andersen
1
Diese Antwort gilt, vorausgesetzt, die Anwendung auf der Quellseite schreibt zuerst in eine temporäre Datei und verschiebt sie dann an ihren Platz. Wenn die Anwendung eine vorhandene Datei zum Schreiben öffnet, während rsync diese Datei liest, kopiert rsync möglicherweise eine beschädigte Mischung aus der alten und der neuen Version.
Gilles 'SO- hör auf böse zu sein'
@ Gilles Danke für den Hinweis. Ich habe meine Antwort aktualisiert. Steht dies in Zusammenhang mit rsync oder tritt dies bei einer Anwendung auf, die liest, während eine andere Anwendung in dieselbe Datei schreibt?
Marco
1
@Marco Das würde bei jeder Anwendung passieren, es sei denn, beide verwenden ein Sperrprotokoll (Unix hat keine obligatorischen Sperren, nur Hinweissperren, dh Sperren, die nur funktionieren, wenn sie von allen verwendet werden). Aus diesem Grund besteht das normale Protokoll zum Ändern einer Datei, wenn gleichzeitig Änderungen vorgenommen werden sollen, darin, eine temporäre Datei zu schreiben und an ihren Platz zu verschieben.
Gilles 'SO- hör auf böse zu sein'