rsync verwendet immer Prüfsummen, um zu überprüfen, ob eine Datei korrekt übertragen wurde. Wenn die Zieldatei bereits vorhanden ist, überspringt rsync möglicherweise die Aktualisierung der Datei, wenn Änderungszeit und -größe mit der Quelldatei übereinstimmen. Wenn rsync jedoch feststellt, dass Daten übertragen werden müssen, werden für die zwischen dem sendenden und dem empfangenden rsync-Prozess übertragenen Daten immer Prüfsummen verwendet . Dies stellt sicher, dass die empfangenen Daten mit der hohen Wahrscheinlichkeit mit den gesendeten Daten übereinstimmen, ohne den hohen Aufwand eines Vergleichs auf Byte-Ebene über das Netzwerk.
Sobald die Dateidaten empfangen wurden, schreibt rsync die Daten in die Datei und vertraut darauf, dass die Daten ohne Beschädigung auf die Festplatte geschrieben wurden, wenn der Kernel einen erfolgreichen Schreibvorgang anzeigt. rsync liest die Daten nicht erneut und vergleicht sie als zusätzliche Prüfung mit der bekannten Prüfsumme.
Für die Verifizierung selbst verwendet rsync ab Protokoll 30 (erstmals in 3.0.0 unterstützt) MD5 . Für ältere Protokolle wird die Prüfsumme MD4 verwendet .
Während MD5 und MD4 lange als veraltet für sichere kryptografische Hashes angesehen wurden, sind sie für die Überprüfung von Dateibeschädigungen weiterhin geeignet.
Quelle: Die Manpage und der zu überprüfende rsync-Quellcode.
-c
Flags auf der Manpage : "Beachten Sie, dass rsync immer überprüft, ob jede übertragene Datei auf der Empfängerseite korrekt rekonstruiert wurde, indem eine Prüfsumme für die gesamte Datei überprüft wird, die beim Übertragen der Datei generiert wird, jedoch nach der Übertragung automatisch Die Überprüfung hat nichts mit der Überprüfung dieser Option vor der Übertragung zu tun.rsync
ist nicht tun , um die Post-Kopie Überprüfung für lokale Dateikopien. Sie können überprüfen, ob dies nicht der Fall ist, indem Siersync
eine große Datei auf ein langsames (dh USB-) Laufwerk kopieren und dann dieselbe Datei mit kopierencp
, dh:Beide Befehle benötigen ungefähr die gleiche Zeit und
rsync
können daher möglicherweise nicht die Prüfsumme ausführen, da dies ein erneutes Lesen der Zieldatei von der langsamen Festplatte erfordern würde.Die
man
Seite ist leider irreführend. Ich habe dies auch mit überprüft -strace
nachdem der Kopiervorgang abgeschlossen ist, werden für diersync
Zieldatei keineread()
Aufrufe mehr ausgegeben, sodass keine Prüfsummen erstellt werden können. Eine weitere Möglichkeit, die Sie überprüfen können, besteht in etwa darin, dassiotop
Siersync
gleichzeitig lesen und schreiben (Kopieren von der Quelle zum Ziel). Anschließend wird das Programm beendet. Wenn die Integrität überprüft würde, gäbe es eine Nur-Lese-Phase.quelle
rsync -c
erneut ausgeführt, wenn Sie die Überprüfung erzwingen möchten.rsync
führt vor dem Kopieren (in einigen Fällen) einen Prüfsummenvergleich durch , um zu vermeiden, dass bereits vorhandene Daten kopiert werden. Mit dem Prüfsummenvergleich soll nicht überprüft werden, ob die Kopie erfolgreich war. Das ist die Aufgabe der zugrunde liegenden Infrastruktur: die Dateisystemtreiber, die Festplattentreiber, die Netzwerktreiber usw. Einzelne Anwendungen wiersync
müssen sich nicht um diesen Wahnsinn kümmern. Allesrsync
, was Sie tun müssen (und tun müssen!), Ist, die Rückgabewerte von Systemaufrufen zu überprüfen, um sicherzustellen, dass kein Fehler aufgetreten ist.quelle
Schnelle und schmutzige Antworten, direkt auf die Fragen.
F: Wird
rsync
der Vergleich durchgeführt, wenn die Dateien zwischen zwei lokalen Laufwerken kopiert werden? A: Es wird ein Vergleich durchgeführt, um herauszufinden, was kopiert werden soll.F: Wenn es eine Überprüfung durchführt - ist es eine sichere Wette? Oder ist es besser, einen Byte-für-Byte-Vergleich durchzuführen? A: So sicher wie die Mathematik hinter der MD5-Prüfsumme der Datei. Sie können versuchen, ein einfaches Experiment durchzuführen, um das Tool zu erlernen und ihm zu vertrauen.
Lange Antwort: Ich denke, Sie wollten
rsync
nach dem Kopieren von Dateien einen Dateivergleich (Stück für Stück oder per Prüfsumme) durchführen. Wenn Sie einer der wenigen sind, die Datenintegrität schätzen, ist das Folgende möglicherweise hilfreich:Der obige
rsync
Ordner mit den Codedateien wird beim ersten Start und wenn er ohne Probleme abgeschlossen ist,rsync
sofort wieder ausgeführt, während der gleiche Dateinamenvergleich mit dem Hash der gesamten Datei durchgeführt wird.quelle
Verwenden von rsync zum Überprüfen der Integrität eines Duplikats
Um zu gewährleisten, dass dieser Test die Dateien von den Laufwerksmedien physisch neu liest, empfehle ich, beide Laufwerke herunterzufahren und neu zu starten, bevor dieser Test ausgeführt wird. Dadurch werden die internen flüchtigen Caches gelöscht.
Wenn Sie Linux nicht auch neu starten, sollten Sie zumindest die Caches ( * ) löschen mit:
Dann lesen Sie beide Bäume noch einmal und vergleichen ihre Prüfsummen:
Die moderne rsync-Prüfsumme verwendet MD5 (128 Bit). Die Wahrscheinlichkeit, dass ein Fehler in einer einzelnen Datei nicht erkannt wird, ist astronomisch gering (einige Diskussionen hier ), aber nicht unmöglich.
quelle
--checksum
bis der Test ohne ihn bestanden ist.