Wenn Sie große Dateien über eine langsame Verbindung synchronisieren, ist es oft nützlich, die Delta-Komprimierung zu verwenden, um die verwendete Bandbreite zu reduzieren. Es ist auch nützlich, Dateien zu komprimieren, da sie viel weniger Speicherplatz beanspruchen.
Viele Komprimierungsalgorithmen haben jedoch den unerwünschten Nebeneffekt, dass große Teile der komprimierten Ausgabe geändert werden, wenn nur eine kleine Änderung an der Quelle vorgenommen wurde.
Was sind also einige Komprimierungsalgorithmen / -dienstprogramme, die ähnliche komprimierte Blobs aus ähnlichen Quelldateien erstellen?
quelle
--rsyncable
scheint ein reiner Debian-Patch zu sein.Eine Lösung besteht darin, eine Datei blockweise manuell zu komprimieren. Aus einfachen Testgründen sind die folgenden Skriptdateien bei 1MiB-Blöcken nur geringfügig (~ 0,1%) größer. Es funktioniert für Algorithmen, die Verkettung unterstützen (gzip und bzip2, um nur zwei zu nennen). Es ist auch etwas langsamer, aber trivial zu parallelisieren.
Auf diese Weise können Änderungen nur den geänderten Block betreffen.
quelle
Vielleicht möchten Sie sich mit rdiff vertraut machen . Es ähnelt rsync, erfordert jedoch keine bidirektionale Verbindung zum Server.
Die Art, wie Sie es verwenden würden, ist
rdiff signature file.ext file.ext.sig
Quellcomputer : Dadurch wird eine Signaturdatei erstellt, die die Hashes für die Blöcke enthält, die zukünftige Diffs verwenden werden. Bewahren Sie die .sig-Datei auf dem Quellcomputer auf.rdiff delta file.ext.sig file.ext file.ext.delta
Hiermit wird eine Delta-Datei erstellt, die nur die Änderungen enthält, bei denen die Hashes nicht mit der Signaturdatei übereinstimmen.rdiff signature file.ext file.ext.sig
Vorgang ausführen, um die Signaturdatei zu aktualisieren.rdiff patch file.ext file.ext.delta file.ext
Dadurch wird die Zielkopie der Datei so aktualisiert, dass sie mit der Quellkopie übereinstimmt. Abhängig vom Build von rdiff müssen das 2. Argument und das 4. Argument möglicherweise unterschiedliche Dateinamen sein.quelle
-z
Option empfehlen , rsync die Komprimierung transparent machen zu lassen.