Ich habe ein großes ISO-Image, das derzeit von einem Torrent-Client mit aktivierter Speicherplatzreservierung heruntergeladen wird: Das bedeutet, dass sich die Dateigröße nicht ändert, während sich einige Chunks in (4 Mib) aufgrund eines Downloads ständig ändern.
Bei 90% Download mache ich den ersten Rsync, um später Zeit zu sparen:
$ rsync -Ph DVD.iso / media / another-hdd / Senden einer inkrementellen Dateiliste DVD.iso 2.60G 100% 40.23MB / s 0:01:01 (xfer # 1, to-check = 0/1) Gesendete 2.60 GByte empfangen 73 Bytes 34.59 MByte / Sek Gesamtgröße ist 2.60G Beschleunigung ist 1.00
Wenn die Datei vollständig heruntergeladen ist, synchronisiere ich sie erneut:
total size is 2.60G speedup is 1.00
Speedup = 1 besagt, dass Delta-Transfer nicht verwendet wurde, obwohl sich 90% der Datei nicht geändert haben. Das Zielverzeichnis befindet sich auf einem anderen FS und das Kopieren dauert mehrere Minuten. Warum wird nicht versucht, die Übertragung zu beschleunigen ?! Wie kann ich rsync
die Verwendung von Delta-Transfer erzwingen ?
Antworten:
Laut der Manpage hat psusi recht:
quelle
-no-W
-no-W
funktioniert nur die lange Option nicht-no-whole-file
. Ich benötige diesen Schalter, wenn ich ein Backup erstelle und große Dateien (z. B. Images) habe, die nicht dieselbe Änderungszeit haben. Es ist VIEL schneller, die Geschwindigkeit ist 163,26, um diese Dateien mit der Delta-Übertragung auf meinem lokalen Dateisystem zu synchronisieren.--no-whole-file
(bitte beachte das Doppel--
am Anfang).Die direkte Antwort auf diese Frage lautet:
Verwenden Sie das
--no-W
Flag, um die Delta-Komprimierung zu erzwingen, egal ob lokal oder remote.Update: Anscheinend steckt in der Geschichte noch mehr. Das
delta compression
scheint nur zwischen Empfangs- und Sendevorgang von rsync möglich zu sein. Wenn Sie die Datei in das Dateisystem ausgeben, wirdrsync
möglicherweise die gesamte (n) Datei (en) auch bei eingeschalteter Delta-Komprimierung geschrieben.Siehe "Wakan Tankas" Untersuchung hier .
quelle
--no-W
in meinem fall immer die ganze datei übertragen. Bitte überprüfen Sie unix.stackexchange.com/questions/291156/…Standardmäßig erstellt rsync aus verschiedenen Sicherheitsgründen zunächst eine neue Kopie der Zieldatei und ersetzt diese anschließend. Sie können dies außer Kraft setzen, indem Sie
--inplace
zusammen mit angeben--no-whole-file
. Dadurch wird rsync angewiesen, die Zieldatei direkt zu bearbeiten und dabei die verschiedenen Risiken zu berücksichtigen (in der Regel geringfügig in dieser Situation), die in der Manpage dokumentiert sind.quelle
Standardmäßig
rsync
wird eine Kopie der Datei am Ziel erstellt und anschließend das Original durch die neue Kopie ersetzt. Dies erfolgt aus Sicherheitsgründen. Was Sie suchen, ist die--inplace
Option, die dazu führt, dassrsync
nur die Teile der Zieldatei geändert werden, die sich im Verhältnis zur Quelle geändert haben.Für den Anwendungsfall des OP empfehle ich, die Vorbelegung ebenfalls zu deaktivieren, damit eine spärliche Kopie synchronisiert werden kann, was viel schneller ist. Sorgen Sie sich beim Herunterladen nicht um Fragmentierung, es sei denn, Sie verwenden ein sehr altes Dateisystem wie VFAT. Insbesondere Mediendateien werden nicht mit der maximalen Leistung der Speichermedien gelesen, so dass das Defragmentieren eine Verschwendung ist.
Um Ihr Download-Verzeichnis sparsam auf das Ziel-Volume zu kopieren, empfehle ich diese Flags und Operationen in dieser Reihenfolge:
Beim ersten Durchgang werden neue Dateien sparsam an das Ziel kopiert. Beim zweiten Durchgang werden vorhandene Dateien direkt aktualisiert und nur die Änderungen kopiert
Da es sich um spärliche und direkte Delta-Kopien handelt, können Sie diese wiederholt ausführen, ohne dass viel zusätzliche E / A anfallen. Selbst wenn 20 Torrents gleichzeitig ausgeführt werden, werden die Schreibvorgänge am Ziel nicht verstärkt und die Quell- / Ziel-Volumes werden nicht zerstört.
quelle