In rsync
, -z
wird Dateidaten während der Übertragung komprimieren.
Wenn ich das richtig verstehe, -z
komprimiere die Dateien vor der Übertragung und dekomprimiere sie dann nach der Übertragung. Übersteigt die Zeit, die während der Übertragung aufgrund der Komprimierung benötigt wird, die Zeit für Komprimierung und Dekomprimierung?
Hängt die Antwort auf die Frage davon ab, ob ich über USB (2.0 oder 3.0) auf eine externe Festplatte oder per SSH über das Internet auf einen Server sichere?
man rsync
dass es tatsächlich eine Liste von Dateiendungen gibt, die auch mit-z
(siehe--skip-compress
) nicht komprimiert werden .Antworten:
Das ist eine allgemeine Frage. Verbessert die Komprimierung und Dekomprimierung an Endpunkten die effektive Bandbreite einer Verbindung?
Die effektive (wahrgenommene) Bandbreite einer Verbindung, die an Endpunkten Komprimierung und Dekomprimierung durchführt, ist eine Funktion von:
Die Funktion wird mit diesem 3D-Diagramm beschrieben, das Sie möglicherweise für Ihre spezielle Situation heranziehen möchten:
Das Diagramm stammt aus dem Artikel Compression Tools Compared 2005 von http://www.linuxjournal.com/ .
quelle
Wenn Sie eine sehr langsame Verbindung haben (denken Sie an GPRS), möchten Sie Ihre Daten auf jeden Fall so weit wie möglich komprimieren, da Ihre Verbindung sonst die Geschwindigkeit senkt.
Wenn Sie eine sehr langsame CPU und eine schnelle Verbindung (wie ein eingebettetes Netzwerkgerät) haben, möchten Sie Ihre Daten normalerweise nicht komprimieren, da Ihre CPU sonst die Geschwindigkeit verringert.
quelle
Hängt davon ab, wie komprimierbar Ihre Daten sind und wie leistungsfähig Ihre Quelle und Ihr Ziel sind. Meiner Erfahrung nach wird ein vollständiges Festplatten-Backup auf etwa 30-50% seiner ursprünglichen Größe komprimiert, sodass es sich möglicherweise lohnt, es einmal auszuprobieren. Andernfalls stören Sie sich nicht an der Komprimierung. Es kann sich lohnen, die Komprimierungsrate mit zu testen
pigz -c <your file> | wc -c
und die zurückgegebene Größe mit der Originalgröße zu vergleichen.quelle
Ja, die Geschwindigkeit der Verbindung bestimmt, ob die Dinge schneller werden. Dies ist nur für die USB-Sicherung mit Aufwand verbunden, da nicht die Datenträger die Daten aufblasen, sondern der Prozess, der die Daten schreibt. Dieselbe Maschine, die es liest und entleert, muss es also auch aufblasen und schreiben. Rsync ist immer noch zwei Prozesse, aber Ihr Speicher, um Daten von einem Prozess zum anderen zu übertragen, ist schnell genug und die CPU benötigt mehr Zeit, um sie zu komprimieren (während Sie sie in denselben Speicher einlesen, der sie später übergibt :).
Komprimierung hilft nur, wenn Sender und Empfänger synchronisiert sind und dazwischen ein langsameres Netzwerk liegt. 1 Gbit ist möglicherweise bereits schnell genug, wenn Sie beispielsweise ein lokales NAS haben. 10 Gbit ist bereits reine SATA-Geschwindigkeit. Daher ist eine Komprimierung nur bei einer Konnektivität von 100 MBit oder weniger erforderlich und nur dann sinnvoll, wenn die komprimierten Daten komprimierbar sind.
Ich denke, Rsync könnte feststellen, dass es nicht auf zwei Maschinen, sondern auf einer läuft und die Komprimierung überspringt, aber nicht sicher ist.
quelle
tl; dr Über langsame Übertragungsverbindungen komprimieren, sonst nicht. Unten finden Sie einen Test der Kompressionsgeschwindigkeit, einen Link zu einem Tool zur Bandbreitenumwandlung und einige Informationen.
Die Komprimierung mit
rsync
beschleunigt die Arbeit nur, wenn die Zwischenverbindung "langsam genug" ist, dh wenn die Maschine an einem Ende in der Lage ist, einen komprimierten Datenstrom schnell genug zu erzeugen, um die Kommunikationsverbindung zu sättigen.Also, was ist die langsamste Verbindung, bei der ich die Komprimierung verwenden sollte, um etwas zu erreichen?
Das Folgende ist ein sehr unwissenschaftlicher Test, der zeigt, wie schnell
gzip
Daten erzeugt werden können und was dies für die allgemeine Komprimierung Ihrer Netzwerk-Massentransfers bedeutet.Die Eingabedaten ändern das Ergebnis des Tests erheblich . Ich verwende eine unkomprimierte (!) Reguläre Datei auf meinem Computer, die für die Art von Daten repräsentativ sein kann, die ich normalerweise über Netzwerke übertrage. Das Verwenden
/dev/zero
(Erzeugen von unbegrenzten Nullen) wäre irreführend, da ein Strom von Nullen sehr leicht zu komprimieren wäre, und das Verwenden/dev/random
wäre aus dem entgegengesetzten Grund irreführend. Also verwende ich stattdessen eine tar-Datei meines$HOME/local
Verzeichnisses, die Software enthält, die ich in meinem installiert habe$HOME
. Die Datei ist an sich nicht komprimiert, enthält jedoch eine Mischung aus Binärdateien, kleinen komprimierten Dateien und Quell- / Textdateien. Würde ich sie mit der Standardeinstellung komprimierengzip
, würde sie um 67% von 64 MiB auf 22 MiB schrumpfen.Ich mache das ein paar Mal, um ein Gefühl dafür zu bekommen, wie hoch der Durchschnitt sein könnte, und es sind ungefähr 7800000 Bytes / s.
Dann verwende ich einen Netzwerkbandbreitenrechner, um zu sehen, in was dies konvertiert. In diesem speziellen Fall liegt die Kapazität einer verkabelten "100-MB-Ethernet" -Verbindung knapp unter der einer Internet-Uplink-Verbindung mit "VDSL-Download", die etwas schneller ist als eine drahtlose "802.11 [a / g]" -Verbindung und liegt irgendwo Zwischen "Bluetooth v3.0" (langsamer) und "USB 2.0" (schneller).
Dies bedeutet, dass die Komprimierung die Übertragung der Datei verlangsamt , wenn ich eine schnellere Komprimierung verwende.
rsync
möglicherweise nicht über die Verwendung sein exakt gleichen Bibliotheken wiegzip
Kompression zu tun, aber die oben Sie zumindest ein wenig eine Andeutung geben würde.rsync
Wie Sie wissen, ist dies jedoch mehr als nur eine Komprimierung, und der eigentliche Geschwindigkeitszuwachs beruht darauf, dass nur [Bits von] Dateien übertragen werden, die sich geändert haben.Nach meiner eigenen Erfahrung ist die Verwendung von Komprimierung mit
rsync
in den letzten 10 Jahren immer weniger vorteilhaft geworden, da sich die Bandbreite der Netzwerke erhöht hat (wo ich mich gerade befinde).Für inkrementelle Backups würde ich definitiv empfehlen, die
--link-dest
Option zu untersuchen (dies hat nichts mit dem zu tun, was übertragen wird, sondern nur damit, wie Dinge auf dem Ziel gespeichert werden). Wenn Sie dies über SSH tun, verwenden Sie die Komprimierung nicht, wenn Ihre SSH-Verbindung bereits komprimiert ist, und komprimieren Sie aus den gleichen Gründen wie oben nur SSH-Verbindungen (Tunnel usw.), die über langsame Verbindungen laufen.quelle