rsync zum komprimierten Archiv der Datei

11

Ich mache Backups von einem Server mit rsync, aber diese Backups sind ziemlich groß und ich möchte sie komprimieren. Gibt es eine Möglichkeit, eine Art Wrapper um rsync zu haben, um die Datei in der Sicherung mit einem Gunzip zu versehen, die Änderungen aus der Live-Datei zu synchronisieren und die Datei erneut zu komprimieren, sobald sie kopiert wird?

Dh , wenn die Quelldateien auf dem Live sind foo , bar und baz , hat die Sicherung foo.gz , bar.gz und baz.gz .

Um es noch einmal zu sagen: Ich möchte komprimierte Dateien an einem Ende und unkomprimierte Dateien am anderen Ende. Ich möchte vor dem rsyncing nicht komprimieren, da rsync selbst mit --rsyncable weniger effizient ist. Ich kenne die Option -z für rsync. Ich habe keinen Speicherplatz auf dem Sicherungscomputer, um alle Dateien unkomprimiert zu speichern.

rjmunro
quelle

Antworten:

10

Ich bin mir nicht sicher, ob ich verstehe, was Sie versuchen, aber Sie könnten komprimierte Backups auf dem Hauptserver erstellen, um sicherzustellen, dass sie leicht resynchronisierbar sind und sich nicht die Mühe machen, während des Transports etwas zu dekomprimieren.

gzip(1)

--rsyncable
       While compressing, synchronize the output occasionally based on
       the  input.   This  increases  size by less than 1 percent most
       cases, but means that the rsync(1) program can much more  effi‐
       ciently  synchronize  files  compressed with this flag.  gunzip
       cannot tell the difference between a  compressed  file  created
       with this option, and one created without it.
AB
quelle
Nett. Ich wusste nichts über die rsyncable-Flagge. Das ist praktisch. Ich frage mich, warum das nicht die Standardeinstellung für einen Verlust von 1% ist
Matt Simmons
NB: Die Option --rsyncable ist nicht für alle Versionen von gzip verfügbar. Sie stammt auch aus einem häufig angewendeten Patch und nicht aus dem Kerncode von gzip. Daher reichen die Versionsnummern nicht aus, um zu wissen, ob Sie sie haben.
mc0e
-1

Sie können einen Wrapper in rsync schreiben. Wenn Sie Daten abrufen, gibt es nichts Besonderes zu tun. Wenn Sie Daten von den Originalcomputern auf den Sicherungsserver übertragen möchten, ist es schwieriger, sie zum Laufen zu bringen:

Zuerst müssen Sie sicherstellen, dass der Wrapper mit demselben Namen, Pfad und denselben Parametern wie der ursprüngliche rsync aufgerufen wird, zumindest für den Benutzer, unter dem Sie die Sicherungen ausführen.

Zweitens sollten Sie nichts an stdout schreiben, da dies den Kommunikationskanal beschädigen würde.

Und drittens müssen Sie alle Parameter übergeben, die Sie erhalten, und sie nur entsprechend dem neu unkomprimierten Ziel ändern.

Javier
quelle
-2

Er sucht wahrscheinlich nach einer Datenübertragungskomprimierung über rsync, nicht nach einer Dateikomprimierung am anderen Ende.

Überprüfen Sie heraus: http://jimmyg.org/blog/2007/rsync-basics.html

Komprimierungsparameter aus der Manpage:

   -z, --compress              compress file data during the transfer

        --compress-level=NUM    explicitly set compression level

Standardmäßig komprimiert ssh bis zu einem gewissen Grad selbst. Ich weiß nicht, wie viel besser Rsync's gegenüber nativem SSH ist. Wenn der Großteil Ihrer Dateien bereits in gzip-Dateien komprimiert ist, kann der Komprimierungsmechanismus von rsync wahrscheinlich nicht viel für Sie tun. Sie können eine Datei nur so stark komprimieren.


quelle
Nein, ich suche nur an einem Ende nach Dateikomprimierung. Das Synchronisieren bereits komprimierter Dateien ist ineffizient, daher möchte ich, dass der rsync-Teil mit nicht komprimierten Daten ausgeführt wird.
rjmunro