Ich habe mir diese Frage und diese Frage angeschaut , aber sie scheinen nicht die Symptome anzusprechen, die ich sehe.
Ich habe eine große Protokolldatei (ca. 600 MB), die ich über ein Mobilfunknetz übertragen möchte. Da es sich um eine Protokolldatei handelt, wird sie nur angehängt (obwohl sie sich tatsächlich in einer SQLite-Datenbank befindet, in der nur INSERT ausgeführt wird, ist sie also nicht ganz so einfach, sondern mit Ausnahme der letzten 4k-Seite (oder vielleicht einer wenige) Die Datei ist jedes Mal identisch. Es ist wichtig, dass nur die Änderungen (und die zu übertragenden Prüfsummen) tatsächlich gesendet werden, da die Datenverbindung gemessen wird.
Wenn ich jedoch einen Test über eine nicht gemessene Verbindung durchführe (z. B. einen kostenlosen WLAN-Hotspot), sehe ich keine beobachtete oder gemeldete Beschleunigung oder Verringerung der Datenübertragung. Über eine langsame WiFi-Verbindung sehe ich in der Größenordnung von 1 MB / s oder weniger und berichte, dass die Übertragung fast 20 Minuten dauern wird. Über eine schnelle WLAN-Verbindung sehe ich eine einheitlich schnellere Geschwindigkeit, aber keinen Bericht über die Geschwindigkeitssteigerung, und ein zweiter Übertragungsversuch (der jetzt schneller sein sollte, da die beiden Dateien identisch sind) zeigt jetzt keinen Unterschied.
Der Befehl (bereinigt, um vertrauliche Informationen zu entfernen), den ich verwende, lautet:
rsync 'ssh -p 9999' --progress LogFile michael@my.host.zzz:/home/michael/logs/LogFile
Die Ausgabe, die ich am Ende bekomme, sieht folgendermaßen aus:
LogFile
640,856,064 100% 21.25MB/s 0:00:28 (xfr$1, to-chk=0/1)
Es gibt keine Erwähnung irgendeiner Art von Beschleunigung.
Ich vermute, das Problem könnte eines der folgenden sein:
- Mir fehlt eine Befehlszeilenoption. Das erneute Lesen der Manpage scheint jedoch darauf hinzudeuten, dass Delta-Übertragungen standardmäßig aktiviert sind: Es werden nur Optionen zum Deaktivieren angezeigt.
- Ich verwende rsync über ssh (auch auf einem nicht standardmäßigen Port), da sich der Server hinter einer Firewall befindet, die nur ssh zulässt. Ich habe nicht explizit festgestellt, dass Delta-Übertragungen nicht funktionieren, wenn der rsync-Dämon nicht ausgeführt wird. Ich habe versucht, die "::" - Notation anstelle von ":" zu verwenden, aber in der Manpage ist nicht klar, was ein "Modul" ist, und mein Befehl wird wegen der Angabe eines ungültigen Moduls abgelehnt.
Folgendes habe ich ausgeschlossen:
- Delta-Übertragungen werden nicht in einem lokalen Netzwerk durchgeführt. Ausgeschlossen, weil ich versuche, die Übertragung über das Internet durchzuführen
- Gemeinkosten aufgrund von Prüfsummenberechnung. Ich habe dieses Verhalten sowohl bei einer schnellen als auch bei einer langsamen WLAN-Verbindung festgestellt, und die Übertragungsrate scheint nicht rechnergebunden zu sein.
rsync --stats, -v -vum noch ausführlichere Statistiken zu erhalten. Rsync teilt Ihnen mit, wie viele übereinstimmende und nicht übereinstimmende Daten vorhanden waren.
but with the exception of the last 4k page (or maybe a few) the file is identical each time.Haben Sie das tatsächlich überprüftcmp? Oder besser mitxdeltaoder so? Wenn Sie die Übertragungsgröße wirklich minimieren möchten, behalten Sie die alte und die neue Version lokal bei, damit Sie lokal (mit etwas anderem als rsync) eine minimale Binärdifferenz berechnen und diese einfach senden können, ohne Prüfsummen über die gemessene Verbindung senden zu müssen. Dies auf Datenbankdatensatzebene anstelle der Binärdateiebene zu tun, ist wahrscheinlich sogar noch besser, wie derobert vorschlägt.