rsync para arquivo compactado de arquivo

11

Eu faço backups de um servidor com o rsync, mas esses backups são muito grandes e eu gostaria de compactá-los. Existe uma maneira de ter algum tipo de wrapper no rsync para compactar o arquivo no backup, rsync as alterações do arquivo ativo e re-compactá-lo novamente assim que for copiado?

Ou seja, se os arquivos de origem no ao vivo são foo , bar e baz , o backup tem foo.gz , bar.gz e baz.gz .

Para reafirmar: eu quero arquivos compactados em uma extremidade e arquivos não compactados na outra extremidade. Não quero compactar antes do rsync, porque mesmo com --rsyncable, o rsync é menos eficiente. Eu sei sobre a opção -z para rsync. Não tenho espaço na máquina de backup para armazenar todos os arquivos descompactados.

rjmunro
fonte

Respostas:

10

Não sei se entendi o que você está tentando fazer, mas você pode criar backups compactados em gzip no servidor principal, certificando-se de que sejam prontamente sincronizáveis ​​e que não se incomodem em descomprimir nada em 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
fonte
Agradável. Eu não sabia sobre a bandeira rsyncable. Isso é útil. Eu me pergunto por que não é o padrão para uma perda de 1%
Matt Simmons
NB: a opção --rsyncable não está disponível em todas as versões do gzip, e também vem de um patch comumente aplicado, e não do código gzip principal, portanto, os números de versão não são suficientes para saber se você o possui.
Mc0e 26/03/2015
-1

Você pode gravar um wrapper no rsync. Se você extrair dados, não há nada de especial para fazer. Se você deseja enviar os dados das máquinas originais para o servidor de backup, é mais delicado fazê-lo funcionar:

Primeiro, você deve garantir que o wrapper seja chamado com o mesmo nome, caminho e parâmetros que o rsync original, pelo menos para o usuário sob o qual você executa os backups.

Segundo, certifique-se de não escrever nada no stdout, pois isso pode alterar o canal de comunicação.

Terceiro, certifique-se de passar todos os parâmetros que obtém, modificando conforme apropriado para o destino recém-descompactado.

Javier
fonte
-2

Ele provavelmente está procurando compactação de transmissão de dados via rsync, não compactação de arquivos na outra extremidade.

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

Parâmetros de compactação na página de manual:

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

        --compress-level=NUM    explicitly set compression level

Por padrão, o ssh faz sua própria compactação até certo ponto. Não sei quanto melhor o rsync é do que o ssh nativo. Se a maioria dos seus arquivos já estiver compactada em arquivos gzip, provavelmente não haverá muito o que o mecanismo de compactação do rsync possa fazer por você. Você pode espremer um arquivo apenas muito.


fonte
Não, estou procurando a compactação de arquivos apenas em uma extremidade. O rsyncing de arquivos já compactados é ineficiente, então eu gostaria que a parte do rsync acontecesse com dados não compactados.
rjmunro