Wie kann man rsync dazu bringen, Dateien in kleinere Teile aufzuteilen und diese nach Abschluss zusammenzuführen?

Wie kann man rsync dazu bringen, Dateien in kleinere Teile aufzuteilen und diese nach Abschluss zusammenzuführen?

Ich habe ein empfindliches Internet zu Hause, die Verbindung zu rsync kann jederzeit unterbrochen werden und meine großen Dateien müssen von Anfang an neu gestartet werden.

Gibt es eine Möglichkeit, beispielsweise eine 1 GB große Datei in 50 MB große Einheiten aufzuteilen, diese an das Ziel zu senden und dann zu kombinieren? Auf diese Weise bleibt ein gewisser Prozentsatz der Datei am anderen Ende erhalten, auch wenn sie abgeschnitten wird.

Antwort1

Diese Person hat bereits eine großartige Erklärung gegeben: https://unix.stackexchange.com/a/165417/446381

Wenn ich also mein Ziel erreichen möchte, muss ich das --append-verifyFlag mit rsync verwenden.

Das --partialerscheint mir etwas überflüssig. Es wird als versteckte Datei übertragen und später in die Teildatei umbenannt. Das gefällt mir nicht, weil ein Strg-C diesen Umbenennungsprozess unterbrechen könnte.

Antwort2

Kurzfassung: Fügen Sie das --inplaceFlag hinzu, damit rsync dort weiterstarten kann, wo es aufgehört hat. Große Dateien müssen nicht aufgeteilt werden.

Längere Version:

Es ist eine gute Idee, die Datei in kleinere aufzuteilen und diese jeweils zu übertragen. Allerdings arbeiten Sie damit zu hart. Intern teilt rsync Dateien in 64-Kilobyte-Blöcke auf ... mehr oder weniger. Es gibt eine Möglichkeit, das rsyncgewünschte Ergebnis zu erzielen: Fügen Sie das --inplaceFlag hinzu.

Schauen wir uns Ihr größeres Problem an: Ihre Internetverbindung ist unzuverlässig und Sie benötigen eine Möglichkeit, große Dateien zu versenden.

Wenn Sie --inplaceFlag verwenden (was impliziert --partial), erhalten Sie das gewünschte Ergebnis. Jedes Mal, wenn eine Übertragung unterbrochen wird, rsyncwerden die Dateien in einem Zustand belassen, der es ermöglicht, beim nächsten Ausführen (dasselbe) effizient dort fortzufahren, wo sie aufgehört haben rsync.

Verwenden --inplaceund führen Sie den Befehl rsync einfach mehrmals aus, bis alles kopiert ist.

Wenn Sie sehr paranoid sind, führen Sie nach dem erfolgreichen Kopieren aller Dateien einen weiteren Durchgang durch und fügen Sie das Flag --checksum( -c) hinzu. Dadurch wird eine sehr langsame Byte-für-Byte-Neuprüfung durchgeführt, anstatt den Zeitstempel der Datei zu verwenden, um zu wissen, welche Dateien übersprungen werden können. Da alle Dateien bereits ordnungsgemäß kopiert wurden, sollte es keine weitere Arbeit geben. Trotzdem mache ich das manchmal, nur um auf Nummer sicher zu gehen. Sie sollten dieses Flag während der ersten Durchläufe nicht verwenden, da es sehr langsam und verschwenderisch ist, da es jeden Block jeder Datei erneut liest.

verwandte Informationen