Lassen Sie rsync Dateien mit gleicher Größe überspringen

Lassen Sie rsync Dateien mit gleicher Größe überspringen

Ich verwende den folgenden Befehl, um eine große Anzahl großer Videodateien auf externe Laufwerke zu kopieren.

rsync -Ph --inplace /Volumes/Production/Prefix* Prefix

Wir hatten einen Stromausfall und der Kopiervorgang wurde unterbrochen. Mit rsync ist es kein Problem, es einfach neu zu starten, aber es dauert ziemlich lange, bis es wieder da ist, wo es war. Es geht jede Datei durch und sieht aus, als würde es die ganze Datei durchlesen. Die Geschwindigkeit soll etwa 3-5 Mal schneller sein als gewöhnlich, bis es an den Punkt kommt, an dem es wieder mit dem Kopieren beginnt.

Was genau macht es während dieser Zeit? Liest es die ganze Datei durch und vergleicht sie mit der Quelle? Oder macht es etwas anderes Ausgefallenes? Gibt es eine Möglichkeit, rsync dazu zu bringen, abgeschlossene Dateien schneller zu überspringen? Zum Beispiel, es anzuweisen, nur Dateien zu prüfen, die eine andere Dateigröße haben oder so etwas?

Antwort1

Die Ursache Ihres Problems ist nicht das Hinzufügen -t(oder -a, which embeds -tund eine Reihe anderer Optionen) auf dervorherigersync ausführen.

-tist notwendig, um die Änderungszeit der Dateien beim Kopieren beizubehalten, so dass nach dem Kopieren die letzte Änderungszeit der Zieldatei mit der der Quelldatei übereinstimmt. Ohne diese Option werden nachfolgende rsync-Ausführungen keine Zieldateien als mit der Quelle übereinstimmend betrachten und sie immer aktualisieren.

Vergleichsverhalten von Rsync

Standardmäßig überspringt rsync eine vorhandene Zieldatei, wenn deren letzte Änderungszeit und Dateigröße mit denen der Quelldatei übereinstimmen.

Sich davon erholen

Wenn Sie sicher sind, dass keine andere Software die Zieldateien in der Zwischenzeit geändert hat und Sie einfach fortfahren möchten, können Sie diese --size-onlyOption verwenden. Dadurch wird das Vergleichsverhalten so geändert, dass rsync eine vorhandene Zieldatei überspringt, wenn ihre Dateigröße übereinstimmt, ohne den Zeitpunkt der letzten Änderung zu überprüfen.

In Zukunft besteht das Problem darin, dass Sie, wenn Sie die Verzeichnisse erneut synchronisieren möchten, weiterhin die Dateiänderungszeiten benötigen, oder Sie müssen die Änderungszeiten ignorieren und darauf vertrauen, dass die Dateien nicht durch andere Software geändert wurden (auf eine Weise, die die Größe nicht verändert).

Erläuterung der Optionen

  • Standardmäßiger rsync-Vergleich: Wenn sowohl die Dateigröße als auch der Zeitpunkt der letzten Änderung übereinstimmen, wird der Vergleich übersprungen.

  • --size-only: Wenn die Dateigrößen übereinstimmen, überspringen.

  • --ignore-times: nie überspringen. Dateizeitenund Größenwerden ignoriert.

  • --checksum: Wenn die Dateigrößen übereinstimmen, berechnen Sie eine Prüfsumme beider Dateien und überspringen Sie diese, wenn diese übereinstimmen.

Die --size-onlyOption erhöht die Wahrscheinlichkeit, dass Dateien übersprungen werden, während die Optionen --ignore-timesund --checksumdas Überspringen von Dateien weniger wahrscheinlich machen.

Antwort2

rsynchat eine Option: --size-onlydie tut, was Sie wollen.

Antwort3

Rsync prüft standardmäßig die Mod-Zeit und die Größe von Dateien. Wenn Sie eine --checksum hinzufügen, wird mit der gesamten Datei verglichen (d. h. unabhängig von der Mod-Zeit und der Größenübereinstimmung).

Antwort4

Da Sie für das Archiv nicht die Option „-a“ verwendet haben, wurden die Zeiten nicht kopiert. Daher geht es aufgrund der Zeitstempel-Nichtübereinstimmung davon aus, dass es sich um unterschiedliche Dateien handelt. Anschließend wird die Prüfsumme der gesamten Datei berechnet.

Wenn Sie Kopien erstellen, bei denen der Zeitstempel übereinstimmen könnte/sollte: Fügen Sie immer ein -a.

Für jetzt (obwohl schon lange her) können Sie versuchen, hinzuzufügen--ignore-times

verwandte Informationen