Setzen Sie die Übertragung einer einzelnen Datei mit rsync fort

22

In Ubuntu möchte ich eine große Datei mit rsync von meiner Festplatte auf ein Wechseldatenträger kopieren. Aus irgendeinem Grund kann der Vorgang nicht in einem Durchgang abgeschlossen werden. Ich versuche also herauszufinden, wie ich rsync verwende, um das Kopieren von Dateien an der Stelle fortzusetzen, an der sie beim letzten Mal belassen wurden.

Ich habe versucht, die Option --partial oder --inplace zu verwenden, aber zusammen mit --progress stellte ich fest, dass rsync mit --partial oder --inplace tatsächlich von Anfang an beginnt, anstatt von dem, was beim letzten Mal übrig war. Wenn Sie rsync manuell vorzeitig beenden und die Größe der empfangenen Datei überprüfen, wird ebenfalls bestätigt, was ich gefunden habe.

Aber mit --append startet rsync von dem, was beim letzten Mal übrig war.

Ich bin verwirrt, wie ich auf der Manpage gesehen habe: "Partial", "Inplace" oder "Append" scheinen sich auf die Wiederaufnahme des Kopierens von dem zu beziehen, was beim letzten Mal übrig war. Kann jemand den Unterschied erklären? Warum funktioniert --partial oder --inplace nicht zum Fortsetzen einer Kopie? Stimmt es, dass rsync zum Fortsetzen einer Kopie mit der Option --append arbeiten muss?

Auch wenn eine Teildatei von mv oder cp hinterlassen wurde, nicht von rsync, wird rsync - korrekt angehängt?

Danke und Grüße!

Tim
quelle
Mein Verständnis der Funktionsweise von rsync ist begrenzt, aber um die letzte Frage zu beantworten. Wenn ein cp unvollständig ist, sollte rsync die Kopie fortsetzen. Ich glaube, Rsync-Hash-Dateien in einer Weise, die den Anfang der Datei gleich finden würde, und kopieren Sie den restlichen Teil der Datei.
Scott McClenning

Antworten:

25

Einige Seiten nach rsync durchsuchen:

--append
Dies führt dazu, dass rsync eine Datei aktualisiert, indem Daten an das Ende der Datei angehängt werden. Dabei wird vorausgesetzt, dass die bereits auf der empfangenden Seite vorhandenen Daten mit dem Dateianfang auf der sendenden Seite identisch sind.

--inplace
Diese Option ändert, wie rsync eine Datei überträgt, wenn ihre Daten aktualisiert werden müssen: Anstatt der Standardmethode zum Erstellen einer neuen Kopie der Datei und zum Verschieben der Datei, wenn sie vollständig ist, schreibt rsync die aktualisierten Daten direkt in die Zieldatei.

--partial
Standardmäßig löscht rsync alle teilweise übertragenen Dateien, wenn die Übertragung unterbrochen wird. In einigen Fällen ist es wünschenswerter, teilweise übertragene Dateien beizubehalten.

Klingt so, als ob Sie eine sehr große Datei verwenden möchten --partial --append. ( --appendimpliziert --inplace) Wenn sich diese große Datei ändert, lassen Sie das --appendSymbol fallen, und rsync überprüft den Anfang der Datei, um sicherzustellen, dass auch diese mit der Quelldatei übereinstimmt. --inplacefür mich klingt gefährlich, außer wenn Sie eine große Datei rsynchen, möchten Sie nicht, dass rsync eine neue temporäre Datei des Anfangsteils erstellt, die Übertragung fortsetzt und dann die alte Datei entfernt, um die neue Datei zu platzieren. Die Übertragung würde schneller ablaufen, wenn Sie dieselbe Datei verwenden könnten, ganz zu schweigen davon, dass der für die Übertragung erforderliche Speicherplatz geringer wäre.

Außerdem habe ich festgestellt, dass eine Kopie aus Sicht der gesamten Dateiübertragung schneller ist als Rsync. Wenn ich jedoch eine Datei aktualisieren musste, hat rsync die Datei schneller synchronisiert, als die gesamte Datei erneut zu übertragen. (wie ich oben sagte) Rsync sollte in der Lage sein, von einem CP fortzufahren.

Ich hoffe das hilft.

Scott McClenning
quelle
1
Vielleicht möchten Sie sich diesen Fehlerbericht ansehen
Stefan Schmidt
Guter Punkt über die Verwendung des schnelleren CP standardmäßig und Rsync zum "Reparieren" eines defekten CP-Prozesses! Ordentlich :)
Samuel Lampa