rsync nell'archivio compresso del file


11

Prendo i backup di un server con rsync, ma quei backup sono abbastanza grandi e mi piacerebbe comprimerli. C'è un modo per avere una sorta di wrapper attorno a rsync per eseguire il gunzip del file nel backup, risincronizzare le modifiche dal file live, quindi ripetere il gzip del file non appena viene copiato?

Cioè se i file di origine sul vivo sono foo , bar e baz , il backup ha foo.gz , bar.gz e baz.gz .

Per riformulare: voglio file compressi ad una estremità e file non compressi all'altra estremità. Non voglio comprimere prima di rsyncing, perché anche con --rsyncable, rende rsync meno efficiente. Conosco l'opzione -z per rsync. Non ho spazio sulla macchina di backup per archiviare tutti i file non compressi.

Risposte:


10

Non sono sicuro di capire cosa stai cercando di fare, ma potresti creare backup compressi con il gzip sul server principale assicurandoti che siano prontamente risincronizzabili e che non si preoccupino di decomprimere qualsiasi cosa in transito.

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.

Bello. Non sapevo della bandiera sincronizzabile. È utile. Mi chiedo perché non sia l'impostazione predefinita per una perdita dell'1%
Matt Simmons,

NB: l'opzione --rsyncable non è disponibile su tutte le versioni di gzip, e inoltre proviene da una patch comunemente applicata piuttosto che dal codice gzip principale, quindi i numeri di versione non sono sufficienti per sapere se ce l'hai.
MC0e,


-1

Puoi scrivere un wrapper su rsync. Se si "tirano" i dati, non c'è niente di speciale da fare. Se si desidera "trasferire" i dati dalle macchine originali al server di backup, è più delicato farlo funzionare:

Innanzitutto devi assicurarti che il wrapper sia invocato con lo stesso nome, percorso e parametri dell'originale rsync, almeno per l'utente con cui esegui i backup.

Secondo, assicurati di non scrivere nulla su stdout, perché rovinerebbe il canale di comunicazione.

E terzo, assicurati di passare tutti i parametri che ottieni, modificando semplicemente come appropriato per la destinazione appena non compressa.


-2

Probabilmente sta cercando la compressione della trasmissione dei dati tramite rsync, non la compressione dei file dall'altra parte.

Scopri: http://jimmyg.org/blog/2007/rsync-basics.html

Parametri di compressione dalla pagina man:

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

        --compress-level=NUM    explicitly set compression level

Di default ssh fa la propria compressione fino a un certo punto. Non so quanto sia meglio rsync rispetto a ssh nativo. Se la maggior parte dei tuoi file è già compressa in file gzip, probabilmente non ci sarà molto che il meccanismo di compressione di rsync possa fare per te. Puoi solo spremere un file così tanto.


No, sto cercando la compressione dei file solo a un'estremità. rsyncing file già compressi è inefficiente, quindi vorrei che la parte rsync avvenisse con dati non compressi.
rjmunro,
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.