rsync a archivo comprimido de archivo

11

Tomo copias de seguridad de un servidor con rsync, pero esas copias de seguridad son bastante grandes y me gustaría comprimirlas. ¿Hay alguna forma de tener algún tipo de envoltorio alrededor de rsync para comprimir el archivo en la copia de seguridad, sincronizar los cambios desde el archivo en vivo y luego volver a comprimir el archivo tan pronto como se copia?

Es decir, si los archivos de origen en el vivo son foo , bar y baz , la copia de seguridad tiene fuu.gz , bar.gz y baz.gz .

Para reformular: quiero archivos comprimidos en un extremo y archivos sin comprimir en el otro extremo. No quiero comprimir antes de rsyncing, porque incluso con --rsyncable, hace que rsync sea menos eficiente. Sé acerca de la opción -z para rsync. No tengo espacio en la máquina de respaldo para almacenar todos los archivos sin comprimir.

rjmunro
fuente

Respuestas:

10

No estoy seguro de entender lo que está tratando de hacer, pero puede crear copias de seguridad comprimidas en el servidor principal asegurándose de que sean fácilmente identificables y no se molesten en descomprimir nada en tránsito.

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
fuente
Agradable. No sabía sobre la bandera rsyncable. Eso es útil. Me pregunto por qué ese no es el valor predeterminado para una pérdida del 1%
Matt Simmons
NB: la opción --rsyncable no está disponible en todas las versiones de gzip, y también proviene de un parche comúnmente aplicado en lugar del código central de gzip, por lo que los números de versión no son suficientes para saber si lo tiene.
mc0e
-1

Puede escribir un contenedor para rsync. Si 'extrae' datos, no hay nada especial que hacer. Si desea 'enviar' datos de las máquinas originales al servidor de respaldo, es más delicado hacer que funcione:

Primero debe asegurarse de que el contenedor se invoque con el mismo nombre, ruta y parámetros que el rsync original, al menos para el usuario con el que ejecuta las copias de seguridad.

En segundo lugar, asegúrese de no escribir nada en stdout, ya que dañaría el canal de comunicación.

Y tercero, asegúrese de pasar todos los parámetros que obtenga, simplemente modifique según corresponda para el destino recién descomprimido.

Javier
fuente
-2

Probablemente esté buscando la compresión de transmisión de datos a través de rsync, no la compresión de archivos en el otro extremo.

Echa un vistazo: http://jimmyg.org/blog/2007/rsync-basics.html

Parámetros de compresión desde la página del manual:

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

        --compress-level=NUM    explicitly set compression level

Por defecto, ssh hace su propia compresión hasta cierto punto. No sé cuánto mejor es rsync's sobre ssh nativo. Si la mayoría de sus archivos ya están comprimidos en archivos gzip, probablemente no habrá mucho que el mecanismo de compresión de rsync pueda hacer por usted. Solo puedes comprimir un archivo tanto.


fuente
No, solo busco compresión de archivos en un extremo. La sincronización de archivos ya comprimidos es ineficiente, por lo que me gustaría que la parte de rsync ocurra con datos sin comprimir.
rjmunro