Rsync-Prüfsumme nur für die gleiche Größe von Dateien
Gibt es einen Haufen threads bezüglich rsync Prüfsumme, aber keiner scheint die Lösung dieses müssen, das wäre der effektivste und Schnellste Weg, um sync, zumindest in meinem Fall:
- gleiche Zeit und die gleiche Größe ► Datei überspringen (kein transfer, keine Prüfsumme)
- verschiedenen Größen ► transfer-Datei (keine-Prüfsumme)
- verschiedenen Zeiten und gleiche Größe ► Prüfsumme bilden ► transfer nur, wenn die Prüfsummen unterscheiden sich
Bemerkte ich, dass die option --checksum
kann wirklich eine lange Zeit, um Spiegel einen Ordner, wenn es eine Menge von Dateien. Mit dieser option allein ausgeführt wird eine Prüfsumme für jede Datei einzeln, das ist sehr sicher, aber sehr langsam. Außerdem wird es induzieren Lesezugriff Aufwand zur Berechnung der Prüfsumme.
Die option --ignore-times
ist nicht das, was ich will, wenn es die Zeit und die Größe beide übereinstimmen, ist die chance, dass die Dateien unterschiedlich sind, ist unbedeutend, ich bin bereit das Risiko einzugehen, nicht zu übertragen.
Die option --size-only
ist unvollständig, da es eine gute chance, dass Dateien mit gleicher Größe, aber unterschiedlichen Zeiten tatsächlich werden verschiedene Dateien (zB. ändern eines char in einer anderen möglicherweise nicht auf die Größe, nur die Zeit-edition).
Gibt es eine Möglichkeit, durchführen die spiegelung als pro die Kombination oben mit rsync (hab ich was verpasst in den manpages) oder mit jeder anderen Linux-tools?
Danke.
- Gute Frage! Eine sehr praktische Anwendungsfall bei der Arbeit mit Git. Beim Wechsel zwischen den Zweigen mit Dateien geändert, es ändert sich ständig, das update mal auf die Dateien, die Sie nicht beabsichtigen zu senden, die von einer bestimmten Filiale. Es ist sehr Häufig, um am Ende mit verschiedenen Zeiten auf einer identischen Datei, die Sie wissen, für sicher, dass Sie nicht wollen, zu übertragen. Also nur, wenn es eine andere Zeit und die gleiche Größe brauche ich es zum ausführen der Prüfsumme, um sicherzustellen, es ist anders für die übertragung stattfinden soll.
Du musst angemeldet sein, um einen Kommentar abzugeben.
Beim bestimmen, ob die übertragung von Dateien (oder mit
--dry-run
, ob die Dateien auflisten), rsync wird immer übertragen von Dateien, unterscheiden sich in der Dateigröße. Jedoch, wenn die Dateien die gleiche Größe, rsync hat mehrere Optionen:--size-only
: nie übertragen von Dateien--ignore-times
: immer übertragung von Dateien--checksum
: Prüfsummen berechnen und übertragen von Dateien, wenn Sie sichDas Verhalten, das Sie möchten, wäre eine Kombination der letzten beiden:
"wenn die Zeitstempel unterscheiden, Prüfsummen berechnen und übertragen von Dateien, wenn die Prüfsummen unterschiedlich".
Dies ist derzeit nicht eine option bei rsync.
Leider, Blick auf die rsync-source-code, es scheint, es wäre nicht-trivial, um diese Funktionalität hinzuzufügen. Derzeit, wenn Prüfsummen verwendet werden, die remote-rsync sammelt, Größe, Zeitstempel und checkstum Informationen und sendet Sie alle zusammen. Das gewünschte Verhalten würde erfordern, dass der remote-rsync-erste sendet über die Größe und Zeitstempel, und wenn die lokalen rsync legt fest, dass eine Prüfsumme benötigt wird, kehrt auf die Datei, um die Prüfsumme. Aber das ganze "remote rsync gibt, um die Datei" Aspekt ist nicht in den aktuellen code, und würde erstmal geschrieben werden müssen.
Wenn Sie eine tatsächliche übertragung, der zweite Schritt kann effektiv getan werden, während der transfer-Prozess: übertragung von Dateien, die unterscheiden sich nicht sehr effizient ist. So wird das Standard-Verhalten von rsync ausreichen würde. Bei der Verwendung von
--dry-run
der beste Ansatz wäre wahrscheinlich führen Sie rsync mit Standard-Verhalten sammeln Sie zunächst die--dry-run
Ausgang, und dann führen Sie rsync wieder, mit--checksum
auf die Dateien, die sich im ersten Lauf.Die kurze Antwort... es funktioniert.
Gut und schnell, aber nicht genau, rsync bietet, die standardmäßig. Die Datei, die geändert werden könnten, und die Zeit /Größe sind immer noch die gleichen. (Zeit zurücksetzen) Sie können mit -c wenn paranoid.
Simpel... was ist, wenn es eine 2 gig Datei... und der Unterschied ist nur 1 Zeile am Ende? Die Prüfsumme kann, das herauszufinden und spare die den Datenverkehr im Netzwerk. Sie können-c verwenden, wenn Sie Vertrauen in die Zeit/Größe-Vergleich.
Natürlich.
Ich sehe es nicht, aber ich erinnere mich, rsync verwendet, um ein Problem haben, wenn es vorbei ist ... ich denke, es war etwa 130.000 Dateien. Vielleicht ist das Problem war behoben.
Wenn Sie zu tun haben, dass viele Dateien in einem Verzeichnis, das Sie wohl größere Probleme haben... breitete Sie über verschiedene Verzeichnisse und mehrere rsyncs auf denen mehrere Verzeichnisse zu erstrecken.
Viele kleine Dateien (meistens Dateisysteme) haben eine Menge interne Fragmentierung Probleme und könnten Sie besser dran, die Archivierung der Dateien und rsyncing Archiv... benötigen Sie eine Software, die ermöglicht die Aktualisierung des Archivs, anstatt neu zu erstellen es die ganze Zeit.
Vielleicht, wenn nicht eine Menge von diesen Dateien werden aktualisiert... diejenigen, die sich verändert, sobald ein Datum (finden-neuere Datei) und dann rsync nur die Dateien. (wenn Sie Vertrauen in die Zeiten)
Warum wurde diese Frage ignoriert, so lange?