Obtenha melhor compactação para vários arquivos compactados com gzip

3

Eu tenho vários diretórios contendo milhares de arquivos gzip (no geral, estamos falando de arquivos 1M). Alguns desses arquivos estão corrompidos e a maioria deles é realmente pequena em tamanho (alguns KB).

Quase todos eles são altamente semelhantes em conteúdo, portanto, compactar todos eles juntos deve melhorar a taxa de compactação com a situação atual.

Como raramente navego nesses diretórios e só preciso tê-los por motivos de arquivamento, preciso de um formato altamente disponível e altamente compressível e criar um único arquivo. Seria bom ter capacidade de acesso aleatório para acessar arquivos específicos de vez em quando sem descompactar todo o arquivo.

Qual é a melhor estratégia aqui? O alcatrão é resiliente à corrupção? Eu prefiro algo que pode ser implementado como um simples ou um script simples.

    
por nopper 13.01.2018 / 00:47

2 respostas

3

Depois de pesquisar isso, a maneira como eu resolveria o problema seria descompactar todos os arquivos, criar uma lista de todas as somas do sha256 (ou qualquer hash que você preferir) e compactar todos os arquivos juntos em um único arquivo. Eu estaria inclinado a usar um arquivo tar.gz para velocidade e facilidade de uso, mas você poderia usar zip, ou bzip, 7zip, xz ou outra coisa, se você quer um arquivo menor. Compactar todos os arquivos em um único grande economizará bastante espaço por si só.

Quando isso for feito, use 'par2' para criar redundância e verificação para o arquivo compactado e fazer o backup do arquivo junto com os arquivos .par2. (Eu não joguei muito, mas o objetivo do par2 é criar um arquivo que crie redundância (PARity) para reforçar a integridade dos arquivos.

    
por 13.01.2018 / 02:40
2

Infelizmente, não há uma resposta definitiva para uma pergunta como essa. Programas e algoritmos de compactação diferentes terão diferentes taxas de compactação com base nos dados. Se houvesse uma maneira de saber como seria uma boa compactação. Se houvesse, você não acha que seria embutido em todos os programas de compactação?

Você diz que existem milhares de arquivos de 1MB, o que equivale a vários gigabytes. Vamos dizer que você tem 5000 arquivos, isso é 5GB de dados. Vamos dizer que fechar em ultra te deixa até 2GB. Se você tentar outro programa e algoritmo, isso é 5% melhor (eu acho que é uma estimativa alta), que economiza apenas 100 GB. Não muito no grande esquema.

Quanto à resiliência da corrupção, não existe tal coisa. É possível que um programa de compactação possa manipular a corrupção, como falha na verificação de CRC, melhor que outra. Na melhor das hipóteses, isso pode significar que apenas alguns dos seus dados serão perdidos, e não todos. No entanto, novamente, não há realmente nenhuma maneira de saber. Simplificando, não há substituto para backups de dados importantes.

    
por 13.01.2018 / 02:14