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)
linux
zip
compression
Smartelf
fonte
fonte
Respostas:
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
.fonte
unzip
/zip
mantendo os metadados do mesmo é provavelmente mais difícil.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.)
fonte