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?
Antworten:
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>
.-c
bedeutet, 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 einfachtouch
die Datei vor dem Ausführen von rsync.Wenn dies kein Skript ist, können Sie es hinzufügen,
--progress
um zu sehen, wie es ausgeführt wird.quelle
--inplace
impliziert--partial
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/
quelle
tar
ist besser, alsrsync
wenn Sie viele kleine Dateien zu übertragen haben. Die Verwendung vonnc
verbessert 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)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/ .
quelle