Faço um backup noturno do meu serviço de hospedagem na web como .tar.gz. Os dados são alterados muito pouco a cada noite (<10 MB).
Gostaria de arquivar esses arquivos e desduplicar (compactação sólida) em vários arquivos .tar.gz sem extrair cada arquivo de backup individual.
Exemplo simplificado:
2013-02-24.tar.gz
contém a.pdf
2013-02-25.tar.gz
contém a.pdf
eb.pdf
Quero compactar, arquivar 2013-02-24.tar.gz
e 2013-02-25.tar.gz
armazenar a.pdf
apenas uma vez.
A única maneira de fazer a desduplicação funcionar foi descompactar .tar.gz e compactá-los novamente (usando compactação sólida). Mas esta é uma etapa adicional e provavelmente apagará as informações do sistema de arquivos devido a diferentes sistemas operacionais. Simplesmente tar/gz ambos os arquivos .tar.gz não funcionarão, o tamanho final deste arquivo será a soma dos dois arquivos .tar.gz originais.
Existe uma maneira de usar a desduplicação no conteúdo de vários arquivos .tar.gz?
Responder1
Estou atrasado para a festa, mas os requisitos parecem basicamente se resumir a isto:
- Desduplicar o conteúdo do arquivo tarball
- Deve ser capaz de restaurar arquivos gzip originais
A princípio, isso parece impossível. A desduplicação geralmente depende da capacidade de trabalhar nos arquivos descompactados. Mas então percebi que se você pode confiar no gunzip/gzip produzindo exatamente o mesmo arquivo (é melhor testá-lo), então você pode usarzbackup, que na verdade foi projetado para desduplicar tarballs. Então:
gunzip
os tarballs que você recebegzip
os tarballs novamente para verificar se eles são correspondências exatas (deveria ser se a implementação do gzip for a mesma, mas o nível de compactação pode variar, por exemplo, então você pode precisar descobrir isso)- Alimente os tarballs para
zbackup
Responder2
Eu não acho que você possa fazer o que está tentando fazer "facilmente"
Se os arquivos .tgz forem semelhantes o suficiente, você poderá usar o xdelta e fazer backup completo do primeiro arquivo e, em seguida, um xdelta com a diferença entre o primeiro e o segundo arquivo.
Uma solução parcial alternativa seria usar o rzip (ou lrzip ??) que é projetado para encontrar compactação em arquivos muito grandes - embora não seja ideal, provavelmente será significativamente menor do que o que você está usando no momento, às custas da CPU e memória.
Responder3
Eu uso squashfs para fins semelhantes:
mksquashfs dir1 dir2 dir3 backup_file.fs -keep-as-directory
Responder4
Há um excelentesoluçãoque faz o que você pede, desduplica blocos dentro de vários arquivos TAR. Isto não apenas elimina arquivos que não foram alterados, mas também armazena apenas partes alteradas de arquivos semelhantes.
No entanto, é uma solução cliente/servidor onde o servidor é uma oferta paga. Mas devido à desduplicação é muito acessível, além de oferecer criptografia e armazenar os arquivos com segurança para você.
O cliente usa o código tar normal, portanto o comando é fácil de usar.