Wie synchronisiere ich eine große Datei mit möglichst wenig CPU- und Bandbreitenaufwand?


13

Ich habe eine 500-GB-Datei, die ich remote sichern möchte. Die Datei ändert sich häufig. Ich synchronisiere es von einem Desktop auf einen Server. Beide können den rsync-Client oder -Server ausführen.

Was ist der richtige Befehl dafür? Diejenigen, die ich bisher ausprobiert habe, haben ewig gedauert oder sich einfach seltsam verhalten.

Beispiel und Ergebnisse:

rsync -cv --partial --inplace --no-whole-file /desktop/file1 myserver.com::module/file1 

Scheint zu funktionieren, aber nur wenn ich es zweimal mache (?!). Auch langsam.

Führt der obige Befehl die Prüfsumme auf beiden Computern aus oder nur auf dem sendenden? Ist es anders richtig?


Eine so große Datei, die sich oft ändert? Sie werden mit rsync sehr, sehr enttäuschende Ergebnisse erzielen ...
Ignacio Vazquez-Abrams

Irgendwelche anderen Vorschläge? Ich sollte mit einer App fertig werden können, Dropbox's proprietärer Client macht das sehr gut. Siehe forums.dropbox.com/topic.php?id=17631
Johan Allgoth,

--inplace impliziert --partial see: linux.die.net/man/1/rsync
Ray Hulha

Antworten:


12

Es wird nie schnell gehen, da rsync die gesamte Datei lesen / prüfen muss und das Lesen von 500 GB lange dauern wird, es sei denn, Sie haben es auf SSDs oder Ähnlichem gespeichert.

Versuchen Sie es rsync -vhz --partial --inplace <file/server stuff>.

-cbedeutet, dass die gesamte Datei VOR jeder Übertragung mit einer Prüfsumme versehen wird, anstatt anhand des Zeitstempels zu prüfen, ob sie geändert wurde. Dies bedeutet, dass die gesamte Datei zweimal gelesen wird. Wenn der Zeitstempel nicht geändert wird (sollte), können Sie einfach touchdie Datei vor dem Ausführen von rsync.

Wenn dies kein Skript ist, können Sie es hinzufügen, --progressum zu sehen, wie es ausgeführt wird.


Ja, ich kenne 'große Datei == lange Bearbeitung'. Aber ich habe das Gefühl, dass ich hier etwas vermisse, siehe obigen Kommentar. Wenn Dropbox das kann, können wir das auch! =) Habe ich nicht gesagt, aber ich habe es auch ohne -c versucht, immer noch langsam.
Johan Allgoth

2
auch --inplaceimpliziert--partial

2

Obwohl es nicht rsync ist, funktioniert dies möglicherweise besser, je nachdem, was Sie versuchen. Ich habe eine ähnliche Sicherungsaufgabe ausgeführt und es war definitiv schneller.

Verwenden Sie netcat, um eine Teerpfeife von einer Maschine zur anderen zu bauen.

Auf Ihrem Quellcomputer:

tar -cpv --atime-preserve=system . | nc -q 10 -l -p 45454

Sie erstellen einen Tarball, der Berechtigungen und Zeit bewahrt, und leiten ihn dann über Port 45454 an Netcat weiter

Auf Ihrem Backup-Computer

nc -w 10 X.X.X.X 45454 | tar -xpv

X.X.X.X = lokale IP-Adresse Ihres Quellcomputers.

Für mich hat das gut funktioniert. Es lief mit 25-30 MB / s über kabelgebundenes LAN im Gegensatz zu 2-3 MB / s mit RSYNC. Der Nachteil ist: Es wird nicht synchronisiert, es wird nur eine Kopie dessen erstellt, was sich auf Ihrer Quelle befindet. Für ein Backup, wie Sie es beschreiben - eine 500-GB-Datei - könnte es sehr gut funktionieren.

Möglicherweise müssen Sie dies als root ausführen, um Berechtigungsprobleme zu vermeiden, oder Sie haben Glück.

FWIW, das habe ich anfangs hier erfahren: http://www.screenage.de/blog/2007/12/30/using-netcat-and-tar-for-network-file-transfer/


1
tarist besser, als rsyncwenn Sie viele kleine Dateien zu übertragen haben. Die Verwendung von ncverbessert auch die Übertragungsrate bei einer schnellen Verbindung, da Sie nicht über den Aufwand für die SSH-Verschlüsselung verfügen (den ich bei einer Peer-to-Peer-Verbindung nicht benötige)
jornane

0

Um den Netzwerk-Overhead zu vermeiden, verwenden Sie einfach das rsync-Protokoll und nicht SSH. Standardmäßig verwendet rsync SSH, wenn eine URL wie hostname: / path angegeben wird. Verwenden Sie stattdessen rsync: // hostname / path, um das schnellere rsync-Protokoll zu verwenden. Auf diese Weise sind keine Tricks mit tar / netcat erforderlich. Der Rsync-Delta-Algorithmus sollte viel schneller sein.

Weitere Informationen finden Sie unter https://gergap.wordpress.com/tag/rsync/ .

Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.