Warum ist mein rsync so langsam im Vergleich zu reinem cp oder sogar scp?


15

Ich übertrage die Dateien von Linux auf Windows 7 über eine gemountete Freigabe (die Freigabe wird von Windows auf Linux gemountet ). Ich kopiere viele Daten (dh fast eine TB) von der alten auf die neue Maschine in meinem LAN . Ich bin schon bedauerlich genug, dass ich nur 100MBit habe. Natürlich habe ich blind rsync benutzt, mich aber schon nach einem Tag gefragt, warum es sich so langsam anfühlt. Durch Aktivieren der Fortschrittsanzeige wurde eine Übertragungsrate von ca. 2 MB / s angezeigt.

Also habe ich eine vernünftig große Datei (800 MB) genommen und das Übertragungs-Timing verfolgt (1):

cp : 05:33
scp (2): 06:33
rsync : 21:51

1) Ich habe die Dateien zwischen jedem Lauf gelöscht.
2) scp via localhost auf demselben Linux-Rechner direkt auf der Freigabe; völlig nutzlos, bot aber eine Fortschrittsanzeige

Die Tests waren so einfach wie

(cp|scp|rsync) <source> <destination>

Keine besonderen Argumente außer Host / Port für SCP. Ich habe sogar versucht, den -WSchalter für Rsync, aber nach zehn Minuten abgebrochen. Auf Lenny läuft rsync 3.0.3. Um den Kopiervorgang jederzeit abbrechen und wieder aufnehmen zu können, bin ich zu rsync gekommen, aber jetzt muss ich diese Anforderung ernsthaft überdenken.

Wie ist so ein großer Unterschied möglich?

Update / Gelöst:

Dank rschuler konnte ich das Problem lösen: Verwenden Sie aus Effizienzgründen den rsync-Daemon anstelle des smb-Einbaus. Die besagte DeltaCopy funktioniert, aber man muss auf ein paar Dinge achten

  • Es ist ein netter GUI-Wrapper, aber wenn etwas schief geht, ist es gut zu wissen, wie man es repariert. Anscheinend habe ich meine Benutzeranmeldeinformationen, unter denen der rsync-Dienst ausgeführt werden soll, beim ersten Mal falsch eingegeben, aber die GUI hat mir nicht erlaubt, eine neue einzurichten. Ich habe herausgefunden, dass es als Dienst ausgeführt wird, und konnte dort die richtigen Anmeldeinformationen festlegen
  • Muss manuell den Port zur Firewall hinzufügen, um Verbindungen zuzulassen
  • Persönlicher Geschmack: Stellen Sie sicher, dass die Freigaben entweder passwortgeschützt sind oder, falls dies nicht der Fall ist, dass der Dienst nicht automatisch mit Windows gestartet wird. nur für den Fall
  • Die umschlossene rsync-Binärdatei ist kein nativer Windows-Port, sondern baut auf cygwin auf. Die enthaltene Cygwin-DLL verarbeitet UTF8-Zeichen und verworrene Nicht-ASCII-Zeichen jedoch nicht ordnungsgemäß. Laden Sie eine feste DLL von http://www.okisoft.co.jp/esc/utf8-cygwin/ herunter .

Danach stieg die Übertragungsrate von 2 MB / s auf ~ 8 MB / s. absolut fantastisch!


Haben Sie die Zieldatei zwischen den einzelnen Testläufen gelöscht? Wenn die Zieldatei bereits existiert und die Metadaten nicht korrekt sind, müssten sowohl die Quelle als auch das Ziel geprüft werden.
Zoredache

@Zoredache: Ich habe die Dateien zwischen den Läufen gelöscht. auch der -Wschalter soll das ignorieren
markiere

Antworten:


18

(Die Freigabe wird von Windows unter Linux bereitgestellt.)

Das ist dein Problem. rsync rollt die Prüfsummen über das Ziel. Die Fenster teilen sich. Sie ziehen alle Daten über das Netzwerk, um die Prüfsummen zu berechnen. (Möglicherweise mehr als einmal).

Was Sie tun müssen, ist, rsync auf beiden Rechnern laufen zu lassen. Auf diese Weise werden nur die Differenzen (und Prüfsummen) über das Netzwerkkabel übertragen. DeltaCopy ist eine fensterbasierte Synchronisation. Es hat genug Dokumente, um Sie zum Laufen zu bringen.

In der oben angegebenen Antwort auf diese Frage finden Sie eine bessere Erklärung, warum Sie möglicherweise rsync missbrauchen.


Bingo, Ihre Antwort könnte nicht präziser sein. Vielen Dank, ich habe meine Lektion gelernt.
Markieren Sie
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.