In Bezug auf den Teil "Wiederaufnahme" Ihrer Frage --partial
weist Sie das empfangende Ende lediglich an, teilweise übertragene Dateien beizubehalten, wenn das sendende Ende verschwindet, als wären sie vollständig übertragen worden.
Während der Übertragung von Dateien werden diese vorübergehend als versteckte Dateien in ihren Zielordnern (z. B. .TheFileYouAreSending.lRWzDC
) oder in einem speziell ausgewählten Ordner gespeichert, wenn Sie den --partial-dir
Schalter einstellen . Wenn eine Übertragung fehlschlägt und --partial
nicht festgelegt ist, verbleibt diese versteckte Datei im Zielordner unter diesem kryptischen Namen. Wenn dies festgelegt --partial
ist, wird die Datei jedoch in den tatsächlichen Zieldateinamen umbenannt (in diesem Fall TheFileYouAreSending
), obwohl die Datei ist nicht vollständig. Der Punkt ist, dass Sie die Übertragung später abschließen können, indem Sie rsync erneut mit --append
oder ausführen --append-verify
.
Also, --partial
nicht selbst einen fehlgeschlagenen oder abgebrochenen Übertragung fortzusetzen. Um es fortzusetzen, müssen Sie beim nächsten Lauf eines der oben genannten Flags verwenden. Wenn Sie also sicherstellen müssen, dass das Ziel niemals Dateien enthält, die in Ordnung zu sein scheinen, aber tatsächlich unvollständig sind, sollten Sie nicht verwenden --partial
. Umgekehrt, wenn Sie sicherstellen möchten, dass keine fehlgeschlagenen Dateien im Zielverzeichnis zurückbleiben und Sie wissen, dass Sie die Übertragung später abschließen können, können Sie dies tun --partial
.
In Bezug auf den --append
oben genannten Schalter ist dies der eigentliche "Resume" -Schalter, und Sie können ihn unabhängig davon verwenden, ob Sie ihn auch verwenden oder nicht --partial
. Tatsächlich werden bei der Verwendung --append
keine temporären Dateien erstellt. Dateien werden direkt auf ihre Ziele geschrieben. In dieser Hinsicht erhalten Sie --append
dasselbe Ergebnis wie --partial
bei einer fehlgeschlagenen Übertragung, jedoch ohne die ausgeblendeten temporären Dateien zu erstellen.
Also, um es zusammenzufassen, wenn Sie große Dateien in Bewegung sind und Sie wollen , dass die Option eine abgebrochene oder nicht von der exakten Punkt rsync Betrieb wieder aufnehmen , die rsync
gestoppt wird , müssen Sie die verwenden --append
oder --append-verify
schalten Sie den nächsten Versuch.
Wie @Alex weiter unten ausführt, gibt es seit Version 3.0.0 rsync
eine neue Option --append-verify
, die sich so verhält, wie --append
vor dem Bestehen dieses Schalters. Sie möchten wahrscheinlich immer das Verhalten von --append-verify
, also überprüfen Sie Ihre Version mit rsync --version
. Wenn Sie einen Mac verwenden und nicht rsync
von verwenden homebrew
, verfügen Sie (mindestens bis einschließlich El Capitan) über eine ältere Version und müssen diese verwenden, --append
anstatt --append-verify
. Warum sie das Verhalten nicht beibehalten --append
und stattdessen den Neuling genannt haben, --append-no-verify
ist ein bisschen rätselhaft. So oder so, --append
auf dem rsync
vor Version 3 ist das gleiche wie --append-verify
bei den neueren Versionen.
--append-verify
ist nicht gefährlich: Es liest und vergleicht immer die Daten an beiden Enden und geht nicht nur davon aus, dass sie gleich sind. Dabei werden Prüfsummen verwendet, wodurch das Netzwerk entlastet wird. Es muss jedoch die gemeinsam genutzte Datenmenge an beiden Enden der Leitung gelesen werden, bevor die Übertragung durch Anhängen an das Ziel fortgesetzt werden kann.
Zweitens sagten Sie, dass Sie "gehört haben, dass rsync Unterschiede zwischen Quelle und Ziel finden und daher nur die Unterschiede kopieren kann".
Das ist richtig, und es heißt Delta-Transfer, aber es ist eine andere Sache. Um dies zu aktivieren, fügen Sie den Schalter -c
oder hinzu --checksum
. Sobald dieser Schalter verwendet wird, überprüft rsync Dateien, die an beiden Enden der Leitung vorhanden sind. Dies geschieht in Stücken, vergleicht die Prüfsummen an beiden Enden und überträgt, wenn sie unterschiedlich sind, nur die unterschiedlichen Teile der Datei. Wie @Jonathan unten ausführt, wird der Vergleich jedoch nur durchgeführt, wenn die Dateien an beiden Enden dieselbe Größe haben. Unterschiedliche Größen führen dazu, dass rsync die gesamte Datei hochlädt und das Ziel mit demselben Namen überschreibt.
Dies erfordert anfangs ein wenig Berechnung auf beiden Seiten, kann jedoch bei der Reduzierung der Netzwerklast äußerst effizient sein, wenn Sie beispielsweise häufig sehr große Dateien mit fester Größe sichern, die häufig geringfügige Änderungen enthalten. Beispiele dafür sind Image-Dateien für virtuelle Festplatten, die in virtuellen Maschinen oder iSCSI-Zielen verwendet werden.
Es ist bemerkenswert, dass --checksum
rsync beim Übertragen eines Stapels völlig neuer Dateien auf das Zielsystem deren Prüfsummen vor dem Übertragen auf dem Quellsystem berechnet. Warum weiß ich nicht :)
Also, kurz gesagt:
Wenn Sie verwenden oft rsync nur „Sachen von A nach B bewegen“ und wollen die Möglichkeit , dass die Operation abzubrechen und später wieder aufnehmen, nicht zu verwenden --checksum
, aber nicht verwenden --append-verify
.
Wenn Sie rsync häufig zum Sichern von Daten verwenden, wird die Verwendung --append-verify
wahrscheinlich nicht viel für Sie bedeuten, es sei denn, Sie haben die Angewohnheit, große Dateien zu senden, die ständig größer werden, aber nach dem Schreiben selten geändert werden. Wenn Sie ein Backup auf einen Speicher erstellen, der Snapshots wie btrfs
oder unterstützt zfs
, können --inplace
Sie die Snapshot-Größe verringern , indem Sie den Schalter hinzufügen, da geänderte Dateien nicht neu erstellt werden, sondern die geänderten Blöcke direkt über die alten geschrieben werden. Diese Option ist auch nützlich, wenn Sie vermeiden möchten, dass rsync Kopien von Dateien auf dem Ziel erstellt, wenn nur geringfügige Änderungen vorgenommen wurden.
Bei Verwendung von --append-verify
verhält sich rsync genauso wie immer bei allen Dateien gleicher Größe. Wenn sich Änderungen oder andere Zeitstempel unterscheiden, wird das Ziel mit der Quelle überschrieben, ohne dass diese Dateien weiter überprüft werden. --checksum
vergleicht den Inhalt (Prüfsummen) jedes Dateipaares mit identischem Namen und identischer Größe.
AKTUALISIERT 01.09.2015 Geändert, um die von @Alex gemachten Punkte wiederzugeben (danke!)
AKTUALISIERT 14.07.2017 Geändert, um die von @Jonathan gemachten Punkte wiederzugeben (danke!)