Wird rysnc -z irgendeinen Komprimierungsvorteil haben, wenn die Eingabedatei bereits gzippt ist? Ich muss eine große komprimierte Datei (100 GB) über das Netzwerk zwischen Servern senden, und das ist nach unterschiedlicher Zeit immer wieder fehlgeschlagen (defekte Leitung). Ich frage mich, ob ich das Flag -z ausprobieren sollte.
Antwort1
Das Komprimieren einer bereits komprimierten Datei während der Übertragung lohnt sich normalerweise nicht, da es einige Einschränkungen gibt. Beim Vergleichen zweier Dateien kann die Verwendung von rsync mit Komprimierung den Vergleich der Hashes der Daten beschleunigen.
Wenn Sie nur komprimierte Versionen großer Dateien auf mehreren Systemen synchronisieren möchten, können Sie beispielsweise bei bestimmten Builds von gzip nachsehen. Auf einem Ubuntu-System erhalte ich Folgendes:
$ gzip -h Verwendung: gzip [OPTION]... [DATEI]... DATEIEN komprimieren oder dekomprimieren (standardmäßig werden DATEIEN direkt komprimiert). Obligatorische Argumente für Long-Optionen sind auch für Short-Optionen obligatorisch. -c, --stdout in die Standardausgabe schreiben, Originaldateien unverändert lassen -d, --decompress dekomprimieren -f, --force Überschreiben der Ausgabedatei erzwingen und Links komprimieren -h, --help gibt diese Hilfe -l, --list Listet komprimierte Dateiinhalte auf -L, --license zeigt die Softwarelizenz an -n, --no-name: Den ursprünglichen Namen und Zeitstempel nicht speichern oder wiederherstellen. -N, --name Speichern oder Wiederherstellen des ursprünglichen Namens und Zeitstempels -q, --quiet unterdrückt alle Warnungen -r, --recursive rekursiv auf Verzeichnissen arbeiten -S, --suffix=SUF verwendet das Suffix SUF für komprimierte Dateien -t, --test testet die Integrität komprimierter Dateien -v, --verbose ausführlicher Modus -V, --version zeigt die Versionsnummer an -1, --fast schneller komprimieren -9, --best besser komprimieren --rsyncable Rsync-freundliches Archiv erstellen Wenn keine DATEI vorhanden ist oder die DATEI den Wert - hat, wird die Standardeingabe gelesen. Melden Sie Fehler an .
Ist Ihnen diese --rsyncable
Option aufgefallen? Sie vermeidet die Verwendung adaptiver Komprimierung, sodass nur kleine Teile der komprimierten Datei geändert werden, wenn nur eine kleine Änderung an der Quelldatei vorgenommen wird. Der Rest der Binärdaten bleibt unverändert, sodass rsync nicht alles erneut übertragen muss. Die Manpage gibt an, dass diese Option die Größe der komprimierten Datei im Vergleich zu ohne Verwendung der Option nicht um mehr als etwa 1 % erhöhen sollte und dass Gunzip den Unterschied nicht erkennt.
Ich habe eine 468 MB große SQL-Datei, die ich mit der --rsyncable
Option auf 57 MB komprimiert habe. Ich übertrage diese Datei auf mein lokales System. Dann füge ich der ursprünglichen SQL-Datei auf dem Remote-System einen einzeiligen Kommentar hinzu und komprimiere sie erneut mit der Option rsyncable.
$ rsync -avvz --progress -h fooboo:foo.sql.gz . Verbindung mit SSH öffnen fooboo rsync --server --sender -vvlogDtprz . foo.sql.gz Dateiliste wird empfangen ... 1 zu berücksichtigende Datei Delta-Übertragung aktiviert foo.sql.gz 59,64 M 100 % 43,22 MB/s 0:00:01 (xfer#1, zu prüfen=0/1) Gesamt: Übereinstimmungen=7723 Hash-Treffer=9468 Falschalarme=0 Daten=22366 gesendet 54,12 KBytes empfangen 22,58 KBytes 17,05 KBytes/Sek. Gesamtgröße ist 59,64 M, Beschleunigung ist 777,59
Nicht schlecht. Rsync musste nur einen kleinen Teil der neueren komprimierten Datei übertragen.
Antwort2
rsync verkleinert eine bereits komprimierte Datei während der Übertragung nicht wesentlich.
Es ist unwahrscheinlich, dass Ihre fehlgeschlagenen Übertragungen durch Hinzufügen des Flags -z behoben werden. Ich würde vorschlagen, die Datei(en) unkomprimiert per rsync zu synchronisieren. rsync komprimiert sie dann im laufenden Betrieb. Sie haben dann den Vorteil, dass, sollte sich die Quelldatei ändern und Sie erneut per rsync synchronisieren müssen, nur die geänderten Bytes übertragen werden. Wenn Sie eine komprimierte Datei ändern, muss rsync sie höchstwahrscheinlich vollständig erneut übertragen. Weitere Einzelheiten finden Sie hier:
Antwort3
Die Verwendung von rsync -z
hat gegenüber der Verwendung von nur keine Vorteile, rsync
wenn es sich um eine Datei handelt, die bereits mit einem guten Komprimierungsformat komprimiert wurde. Sie können jedoch erwägen, Ihre komprimierte Datei in kleinere Teile aufzuteilen, damit Sie sie mit rsync übertragen können.
Hier ist eine Anleitung für Linux:http://www.techiecorner.com/107/how-to-split-large-file-into-several-smaller-files-linux/ Und für Windows:http://www.online-tech-tips.com/computer-tips/wie-teilt-man-eine-grosse-datei-in-mehrere-kleinere-teile-auf/