Desduplicar arquivos dentro de vários arquivos .tar.gz

Desduplicar arquivos dentro de vários arquivos .tar.gz

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.gzcontém a.pdf 2013-02-25.tar.gzcontém a.pdfeb.pdf

Quero compactar, arquivar 2013-02-24.tar.gze 2013-02-25.tar.gzarmazenar a.pdfapenas 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:

  1. Desduplicar o conteúdo do arquivo tarball
  2. 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:

  1. gunzipos tarballs que você recebe
  2. gzipos 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)
  3. Alimente os tarballs parazbackup

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.

informação relacionada