Quais são as melhores opções para usar ao compactar arquivos usando o 7 Zip?

41

Muitas vezes preciso reunir arquivos de log e enviá-los para um servidor central (de propriedade de outra empresa). O servidor central tem um limite de tamanho do arquivo, então estou tentando criar o menor arquivo possível que ainda esteja no formato zip.

Qual é a melhor configuração para usar ao compactar um arquivo de texto para um formato zip quando minha única necessidade é um pequeno tamanho de arquivo?

Eu fiz a ultra-compressão óbvia e escolhida, e notei que a LZMA faz um trabalho melhor do que esvaziar, mas há muitas outras permutações de opções para testar todas elas.

    
por jjnguy 10.05.2011 / 16:19

4 respostas

40

Para criar o menor arquivo ZIP padrão que o 7-Zip pode criar, tente:

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

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

Caso contrário, se você não se importa com o padrão ZIP, use as seguintes configurações ultra:

7z a -t7z -m0=lzma -mx=9 -mfb=64 -md=32m -ms=on archive.7z dir1

Quais são:

-t7z   7z archive

-m0=lzma
       lzma method

-mx=9  level of compression = 9 (Ultra)

-mfb=64
       number of fast bytes for LZMA = 64
-md=32m
       dictionary size = 32 megabytes

-ms=on solid archive = on
    
por 15.04.2014 / 17:15
10

Se você pode usar o formato .7z em vez de apenas .zip, eu simplesmente usaria PPMD com as seguintes opções e deixaria tudo o mais como definido pelo nível de compactação:

  • Formato do arquivo: 7z
  • Método de compactação: PPMD
  • Nível de compactação: Ultra

Eu comprime regularmente os logs de servidor / texto (60MB +) usando essas opções e eles geralmente saem em 1-2% do tamanho original.

    
por 15.07.2013 / 12:33
6

Eu comparo para db.fdb 1,2 GB (1236598784 B) no servidor Ubuntu 14.04.03 com p7zip [64] 9,20 na VM:

1. 7z a -mx=9 1.7z db.fdb
2. 7z a -t7z -m0=lzma -mx=9 -mfb=64 -md=32m -ms=on 2.7z db.fdb
3. 7z a -t7z -m0=lzma -mx=9 -mfb=258 -md=32m -ms=on 3.7z db.fdb
4. 7z a -t7z -m0=lzma -mx=9 -mfb=258 -md=32m -ms=on -pass=15 4.7z db.fdb
5. 7z a -mx=9 -mmt=on 5.7z db.fdb
6. 7z a -t7z -m0=lzma -mx=9 -mfb=258 -md=32m -ms=on -mmt=on 6.7z db.fdb

e tem esses resultados:

1.7z 96 MB (100108731 B) with 6' 25"
2.7z 95 MB ( 99520375 B) with 5' 18"
3.7z 93 MB ( 97512311 B) with 9' 19"
4.7z 93 MB ( 97512345 B) with 9' 40"
5.7z 96 MB (100108731 B) with 5' 26"
6.7z 93 MB ( 97512311 B) with 9' 09"

Eu acho que o segundo método funciona bem = (quase) melhor compactar com o melhor tempo. Mas para melhor "visão" e fácil de lembrar é o primeiro método - com pequenos arquivos e nenhum ponto de compressão máxima. Entre o método 2 e 3, não obtemos 7z extra menor, mas pagamos quase mais duas vezes para a compressão. Qualquer um decide sozinho.

    
por 15.08.2016 / 15:27
0

Defina o campo "dividir para volume, bytes" com o tamanho de arquivo máximo permitido do servidor (em bytes, eu acho, embora pareça que ele aceita abreviações comuns como "KB" e "MB"). Se o arquivo zip exceder esse tamanho, o 7-zip o dividirá em vários arquivos automaticamente, como integration_serviceLog.zip.001 , integration_serviceLog.zip.002 , etc. ( Quando o PK Zip usou isso para abranger arquivos zip em vários disquetes.) Você precisará de todos os arquivos para descompactá-los. Use isso em vez de se preocupar com as melhores configurações absolutas de compactação para usar em qualquer conjunto de arquivos, porque o que é melhor para um arquivo pode ser diferente para outro arquivo, e você não precisa passar por isso toda vez que precisar copiar logs.

    
por 10.05.2011 / 16:37