Eu acho que rsyncing para um sistema de arquivos montados no FuseCompress pode ser a melhor opção. O histórico do projeto especificamente os menciona fazendo melhorias no desempenho do rsync com ele.
Eu faço backups de um servidor com rsync, mas esses backups são bem grandes e eu gostaria de compactá-los. Existe uma maneira de ter algum tipo de wrapper em torno de rsync para gunzip o arquivo no backup, rsync as alterações do arquivo ao vivo, em seguida, re-gzip o arquivo assim que é copiado?
Ou seja. se os arquivos de origem no live são foo , bar e baz , o backup tem foo.gz , < em> bar.gz e baz.gz .
Para repor: quero arquivos compactados em uma extremidade e arquivos descompactados na outra extremidade. Eu não quero comprimir antes de rsyncing, porque mesmo com --rsyncable, ele torna o rsync menos eficiente. Eu sei sobre a opção -z para o rsync. Eu não tenho espaço na máquina de backup para armazenar todos os arquivos descompactados.
Não sei se entendi o que você está tentando fazer, mas é possível criar backups com gzip no servidor principal, certificando-se de que eles sejam prontamente rsyncable e não se incomodem em descompactar 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.
Você pode escrever um wrapper no rsync. Se você extrair dados, não há nada especial para fazer. Se você quiser "empurrar" os dados das máquinas originais para o servidor de backup, é mais delicado fazer com que funcione:
Primeiro, você precisa ter certeza de que o wrapper é invocado 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.
Em segundo lugar, certifique-se de não escrever nada para stdout, porque isso iria mangle o canal de comunicação.
Em terceiro lugar, passe todos os parâmetros que você recebe, apenas modificando conforme apropriado para o destino recém-descompactado.
Ele provavelmente está procurando por compressão de transmissão de dados via rsync, e não por compactação de arquivos na outra extremidade.
Confira: link
Parâmetros de compactação da página man:
-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. Eu não sei o quanto melhor o rsync está acima do ssh nativo. Se a maioria dos seus arquivos já estiverem compactados em arquivos gzip, provavelmente não haverá muito que o mecanismo de compressão do rsync possa fazer por você. Você só pode espremer muito um arquivo.