Compactar arquivos zip com maior compactação


10

Eu tenho um grande número de arquivos zip que foram compactados usando o comando zip. Gostaria de recomprimi-los com o sinalizador -9 para melhorar a taxa de compactação. Alguém sabe se isso pode ser feito sem descomprimir manualmente e depois comprimir.

PS. Preciso mantê-los como arquivos zip, pois eles são exibidos para usuários do Windows (e, como tal, possuem espaços em branco em seus nomes)


a re-compactação só é possível descompactando o arquivo e compactando novamente. é dependente de algoritmo. Você também pode tentar bzip2 ou xz ainda melhor.

Dica: isso também pode ser feito com arquivos XLSX ou XLSM Excel, pois na verdade eles são arquivos ZIP que contêm XMLs e outras coisas.
Cristian Ciupitu 17/03/2019

Respostas:


10

Você não pode melhorar a taxa de compactação sem descompactar os dados. Você não precisa extrair todos os arquivos zip antes de compactá-los, mas eu recomendo descompactar um arquivo zip inteiro antes de compactar novamente.

É possível recomprimir os arquivos em um arquivo zip, um de cada vez, e adicioná-los novamente antes de ir para o próximo arquivo contido no arquivo zip. Isso requer N reescritas do arquivo zip para um arquivo zip contendo N arquivos. É muito mais eficiente extrair os arquivos N e gerar o novo arquivo zip de uma só vez, compactando todos os arquivos -9.


1
Meu objetivo não é evitar a descompactação, mas manter a estrutura do arquivo igual. e para não alterar nenhum metadado do arquivo.
19314

1
@ Smartmart Eu não acho que você pode evitar a descompressão. Seus outros requisitos são possíveis, não há razão para que alguns dados precisem ser alterados.
terdon

2
@ Smart como eu já indiquei, você ** tem que ** recomprimir. Atribuir os mesmos metadados de arquivo não deve ser um problema se você fizer isso, por exemplo, com um programa Python e seu módulo zip. Com unzip/ zipmantendo os metadados do mesmo é provavelmente mais difícil.
Anthon

6

Existe um utilitário chamado AdvanceCOMP que faz exatamente o que você está procurando. Ele recompacta arquivos ZIP e GZ (e alguns outros) sem extração intermediária para o disco. (Acredito que o mecanismo usado é descompactar os dados e recomprimi-los, mas isso não requer a gravação de arquivos no disco nem a regeneração de metadados.)

Ao utilizar nosso site, você reconhece que leu e compreendeu nossa Política de Cookies e nossa Política de Privacidade.
Licensed under cc by-sa 3.0 with attribution required.