In Ubuntu möchte ich eine große Datei von meiner Festplatte auf ein Wechseldatenträger kopieren rsync
. Aus einem anderen Grund kann der Vorgang nicht in einem Durchgang abgeschlossen werden. Ich versuche also herauszufinden, wie ich das rsync
Kopieren der Datei dort fortsetzen kann, wo sie beim letzten Mal aufgehört hat.
Ich habe versucht , die Möglichkeit zu nutzen --partial
oder --inplace
aber zusammen mit --progress
, fand ich rsync
mit --partial
oder --inplace
tatsächlich beginne von Anfang an statt von dem, was zuletzt gelassen. Manuelles rsync
vorzeitiges Stoppen und Überprüfen der Größe der empfangenen Datei bestätigte ebenfalls, was ich gefunden hatte.
Aber mit --append
geht rsync von dem aus, was beim letzten Mal übrig war.
Ich bin verwirrt, wie ich auf der Manpage gesehen habe --partial
, --inplace
und es --append
scheint, als würde ich das Kopieren von dem fortsetzen, was beim letzten Mal übrig war. Kann jemand den Unterschied erklären? Warum nicht --partial
oder --inplace
arbeiten Sie daran, das Kopieren fortzusetzen? Stimmt es, dass zum Fortsetzen des Kopierens rsync
mit der --append
Option gearbeitet werden muss?
Auch wenn eine Teildatei von mv
oder cp
nicht von rsync zurückgelassen wurde, wird das rsync --append
Kopieren der Datei dann korrekt fortgesetzt?
--append
nimmt manrsync
an, dass, wenn zwei entsprechende Dateien unterschiedliche Länge haben, die kürzere mit dem Anfangsteil der längeren identisch ist. Wenn Sie also mit dem Kopieren einer großen Datei beginnencp
und den Kopiervorgang unterbrechen,rsync --append
wird nur der verbleibende Teil der Datei kopiert. ( Hinweis: Wenncp
das System durch einen Systemabsturz unterbrochen wird, besteht eine geringe Wahrscheinlichkeit, dass der Dateiinhalt und die Metadaten nicht synchron sind, dh die Datei ist beschädigt. In diesem Fall sollte das Problem behoben werden,rsync
wenn Sie erneut ohne ausgeführt--append
werden.)--partial
ohne angeben--append
.--append
und--append-verify
haben einen gefährlichen Fehlerfall : Wenn die Datei des Empfängers gleich groß oder größer ist, aber unterschiedliche Daten enthält. Ich schlage stattdessen eine Lösung vor--no-whole-file
.Seien Sie sich dessen bewusst, was
--append
impliziert--inplace
, was impliziert--partial
.Wenn Sie nur verwenden
--partial
, sollten Siersync
Teilübertragungen verlassen und sie bei nachfolgenden Versuchen fortsetzen.Wenn
--append
Sie verwenden, sollten Siersync
beide dazu veranlassen, Teildateien zu belassen und beim nächsten Mal fortzusetzen. Nach der Übertragungrsync
sollte nur die Prüfsumme der übertragenen Daten überprüft werden.--append-verify
Bezieht die gesamte Datei in die Prüfsummenüberprüfung ein, einschließlich aller Teile, die bei einer vorherigen Übertragung übertragen wurden.Entweder mit
--append
oder--append-verify
einer gescheiterten Prüfsummenverifizierung sollte bewirken , dass die Datei komplett neu übertragen werden (mit--inplace
)Sie sollten in der Lage sein, eine Operation
mv
oder einecp
Operation mitrsync
fortzusetzen, möchten jedoch möglicherweise die--append-verify
Option für ein beruhigendes Gefühl verwenden.Beachten Sie, dass durch die Verwendung von
--append
Ursachen nur die Dateienrsync
kopiert werden, deren Größe auf dem Empfänger kürzer ist als die Größe auf dem Absender (unabhängig von Zeitstempeln) oder die auf dem Empfänger nicht vorhanden sind. Durch Dokumentation zu dieser Option:Mehr Infos in der Manpage
quelle
--append
und--append-verify
es liegt ein gefährlicher Fehlerfall vor: Wenn die Datei des Empfängers gleich groß oder größer ist, aber unterschiedliche Daten enthält. Ich schlage stattdessen eine Lösung vor--no-whole-file
.--checksum
sollte es verwendet werden. Ich kann es nicht explizit angegeben finden, aber logischerweise sollte jede der wiederaufnahmefähigen Optionen implizieren,--no-whole-file
dass--whole-file
sie inkompatibel sein sollten.--append-verify
überspringt gleiche oder größere Dateien mit unterschiedlichen Daten , was "unerwartet" sein kann. Es sind nicht--checksum
alle Dateien erforderlich , darsync
ohnehin eine ganze Dateiprüfsumme erstellt wird, sondern nur, was übertragen wird.--checksum
Weistrsync
an, die Dateien vor dem Senden zu prüfen, um sicherzustellen, dass alle geänderten Dateien unabhängig von Größe und Zeit übertragen werden. Haben Sie eine Quelle für das unerwartete--append-verify
Verhalten, da das, was Sie beschreiben, nicht mit der Dokumentation oder meiner (eingeschränkten) Erfahrung übereinstimmt?--append-verify
verweist auf--append
die Aussage:If a file needs to be transferred and its size on the receiver is the same or longer than the size on the sender, the file is skipped.
Auch wenn eine Datei wegen übertragen werden muss--checksum
, kann sie dennoch übersprungen werden.David Schwartz ist richtig,
--partial
(oder besser-P
) tut, was Sie wollen. Ich habe dies an einer 37G-Datei überprüft, die über ein Netzwerk mit ~ 8g angehalten wurde. rsync scannte schnell die ersten Teile des Teils (und zeigte den Fortschritt an, dank dem es lief-P
) und setzte dann die Übertragung zum Ende der Teildatei fort.quelle
--whole-file
Optionsbeschreibung darauf an.--no-W
(was tatsächlich funktioniert!)--no-W
wenn Sie nicht genau wissen , welche Einstellung dies für lokale Dateien bedeutet. Siehe unix.stackexchange.com/a/181018/100397Du hast es richtig gemacht,
--partial
macht was du willst. Es scheint von vorne zu beginnen, da es immer am Anfang der Liste der zu kopierenden Dateidatenblöcke beginnt. Die--append
Option ist gefährlich und führt zu einer beschädigten Datei, wenn die Daten aus irgendeinem Grund nicht übereinstimmen.quelle
--append
vom Byte-Offset an fortgesetzt).Standardmäßig
rsync
aktiviert,--whole-file
wenn von lokaler Festplatte zu lokaler Festplatte übertragen wird. Dadurch wird eine unterbrochene Übertragung von Anfang an neu gestartet, anstatt die bereits vorhandenen Teile zu überprüfen.Um dies zu deaktivieren, verwenden Sie:
Wenn Sie dies entweder mit
--inplace
oder--partial
kombinieren, wird die Übertragung später fortgesetzt.Mein Alias für die Verwendung
rsync
zum Kopieren ist:Achtung : Seien Sie vorsichtig verwenden ,
--append-verify
da es wird überspringen alle Zieldateien, die gleich groß oder größer sind.quelle
rsync
Quell- und entsprechende Zieldateien vor der Übertragung verglichen, um nur die Teile zu senden, die sich geändert haben (Delta-Übertragung).--no-whole-file
fordert Siersync
auf, dasselbe für das Kopieren von lokal zu lokal zu tun. Die Dokumentation schlägt nicht vor, dass dies Auswirkungen auf die Wiederaufnahme der teilweisen Übertragung einzelner Dateien haben würde.rsync
überspringt Dateien mit genau der gleichen Größe und den gleichen Zeitstempeln. Weder sollte--append-verify
noch--no-whole-file
sollte dieses Verhalten geändert werden, sondern es--checksum
sollte aus--append-verify
überspringt gleiche oder größere Dateien mit unterschiedlichen Daten , was "unerwartet" sein kann. Es sind nicht--checksum
alle Dateien erforderlich , darsync
ohnehin eine ganze Dateiprüfsumme erstellt wird, sondern nur, was übertragen wird.