Como posso obter a melhor compactação ZIP padrão?

20

Eu não me importo quanto tempo demora para compactar, tudo que eu quero alcançar são duas coisas:

  • A melhor taxa de compactação possível
  • Compatibilidade com leitores padrão, como o Windows e o WinZip

Portanto, sugestões como o 7-zip não serão muito úteis, a menos que o 7-zip também seja um pouco melhor na compactação ZIP padrão (em vez de usar o formato .7z muito bom).

O ideal é que eu esteja procurando:

  • Uma recomendação de um software
  • As configurações específicas desse software que permitem a melhor compactação absoluta
  • Algo que é gratuito

Lembre-se de quanto tempo demora para compactar não é um problema!

Uma última coisa - alguns arquivos podem ser melhor compactados com configurações diferentes, como "Tamanho do Word" ou "Tamanho do dicionário" - existe uma ferramenta que pode analisar os arquivos e escolher a taxa de compactação mais apropriada, ou o WinZip? 7-zip etc. já faz isso?

    
por Josh Comley 01.03.2014 / 12:06

6 respostas

16

Se você deseja compatibilidade com o recurso Zip Folders incorporado no Windows XP, você está preso com a compactação Deflate. Eu não acho que você pode usar o Deflate64, muito menos os métodos avançados de compressão (como LZMA, PPMD, WavPack, Bzip2, etc.) disponíveis nas versões recentes do winZip e do PowerArchiver. O PowerArchiver pelo menos usa como padrão a extensão .zipx para esses arquivos - não acho que o WinZip esteja fazendo isso ainda.

O menor arquivo zip possível que o 7-Zip pode criar pode ser feito com a seguinte linha de comando:

7za a -mm=Deflate -mfb=258 -mpass=15 -r C:\Path\To\Archive.zip C:\Path\To\Files\*

Uma observação em particular: o analisador curinga do 7-Zip não é o mesmo que a maioria dos outros no sistema. *.* significa todos os arquivos que possuem extensões. * significa todos os arquivos .

Criar arquivos .zip dessa forma (e, presumivelmente, usar outras ferramentas que tentam fazer arquivos .zip menores "padrão") é muito, muito lento. É muito provável que você economize tempo e espaço consideráveis usando o 7-Zip ou o WinRar para criar arquivos de extração automática.

    
por 21.06.2010 / 15:24
5

Supondo que você esteja no Windows: se você ainda quiser usar o formato ZIP, recomendo usar o utilitário de linha de comando KZIP gratuito de Ken Silverman, encontrado aqui . Copie-o dentro da pasta que contém todos os arquivos que você precisa compactar, vá para essa pasta usando o CMD e execute o seguinte comando:

kzip /r <filename of ZIP file> *.*

Como Roald sugere, é melhor incluir o diretório onde kzip.exe reside na variável PATH do seu sistema para evitar que seja incluído no arquivo Zip / arquivo.

Até agora, descobri que os arquivos ZIP criados com o KZIP são 10 a 20% menores que os criados por outros programas de compactação ZIP. Eles também podem ser totalmente abertos por outros softwares de arquivo (Winzip, WinRAR, 7-zip, etc.) e pelo Windows.

    
por 21.06.2010 / 11:37
1

Script super simples para compactar todas as pastas em uma pasta para arquivos zip individuais usando o tipo de arquivo .zip e um método de compactação Deflate64.

@echo off
for /d %%X in (*) do "c:\Program Files-Zipz.exe" a "%%X.zip" "%%X\" -tzip -mx9 -mm=Deflate64
    
por 18.04.2013 / 23:01
-1

É mais um limite de quanta memória você tem que disponibilizar para o compressor enquanto faz o trabalho. Usando o 7-Zip, eu empacotaria um arquivo com formato .Zip, Ultra compression, método de compactação LZMA e o tamanho padrão do dicionário de 64MB. Se você tiver a memória disponível, aumente o tamanho do dicionário, mas note que você precisará de quase 3 GB de memória para compactar com um dicionário de 64 MB. Usar um dicionário maior deve permitir que o 7-zip busque mais correspondências e forneça melhor compactação se você puder pagar a memória. O LZMA supera tanto o gzip (deflate / deflate64, eu acho) quanto o bzip2 em 5%, em média, até 10-12% dependendo do conteúdo.

Não conheço uma ferramenta para encontrar o melhor tamanho de palavra / dicionário, embora ache que você verá que o método de compactação tem uma correlação mais strong com dados de entrada, e a média / padrões deve ser boa de outra forma.

    
por 21.06.2010 / 11:37
-2

Se você está procurando o melhor compressor para ambientes Windows , recomendo que você experimente o formato * .zip com 7-zip LZMA 'Método de compactação' OU use arquivos SFX 7-Zip * .7z. Os arquivos SFX têm uma sobrecarga de aproximadamente 130 kb em relação aos arquivos compactados .7z e valem a pena usar quando a diferença de tamanho entre .7z e .zip é grande.

Outro concorrente bom, mas incomum, é o NSIS, que pode usar o modo de compressão LZMA para criar exes altamente personalizáveis. Eu sei que o NSIS não é um compressor, mas sim uma linguagem de Scripts, mas fiquei impressionado com um desempenho melhor do que o de 7-zip SFX.

Um teste que fiz com 2 arquivos -

  • AutoHotkey-H.exe (946 kb)
  • AutoHotkey.dll (1003 kb)
  • Tamanho total - 1955 kb
  • 7-Zip .zip - 794 kb
  • 7-Zip .7z SFX - 594 kb
  • Compressão Sólida NSZ LZMA - 552 kb
  • 7-Zip .7z - 461 kb

Como o # 4 não é o que você quer, o vencedor claro é NSIS, mas por razões práticas, eu sugiro que vá com .zip é tamanho comprimido é inferior a 500 kbs e se maior, vá com uma ferramenta de fazer exe como 7- Zip SFX ou NSIS (7-zip em particular, pois é fácil de configurar).

    
por 03.12.2017 / 20:00