2011-05-10 14:19:13 +0000 2011-05-10 14:19:13 +0000
69
69

Quali sono le migliori opzioni da usare quando si comprimono i file usando 7 Zip?

Devo spesso raccogliere i file di log e caricarli su un server centrale (di proprietà di un'altra azienda). Il server centrale ha un limite di dimensione del file, quindi sto cercando di creare il più piccolo file possibile che sia ancora in formato zip.

Quali sono le migliori impostazioni da usare per comprimere un file di testo in un formato zip quando il mio unico bisogno è una piccola dimensione del file?

Ho fatto l'ovvio e ho scelto l'ultra compressione, e ho notato che LZMA fa un lavoro migliore di deflate, ma ci sono troppe altre permutazioni di opzioni perché io possa testarle tutte.

Risposte (6)

65
65
65
2014-04-15 15:15:36 +0000

Per creare il più piccolo file ZIP standard che 7-Zip può creare, provate:

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

Fonte: Come posso ottenere la migliore compressione ZIP standard?

Altrimenti, se non ti interessa lo standard ZIP, usa le seguenti impostazioni ultra:

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

che sono:

-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
14
14
14
2013-07-15 10:33:24 +0000

Se puoi usare il formato .7z piuttosto che solo .zip, userei semplicemente PPMD con le seguenti opzioni e lascerei tutto il resto come impostato dal Compression Level:

  • Archive Format: 7z
  • Metodo di compressione: PPMD
  • Livello di compressione: Ultra

Io comprimo regolarmente i log di server/testi (60MB+) usando queste opzioni e di solito escono al 1-2% della dimensione originale.

8
8
8
2019-06-17 16:25:32 +0000

Dopo molti esperimenti, scavando nella dettagliata documentazione di 7zip, e leggendo un po’ del codice sorgente di 7z riguardante i parametri avanzati di LZMA2, ecco un metodo migliore qui sotto. Ha ridotto alcuni file di prova del mondo reale da 1GB più di 2 o 4 volte meglio delle soluzioni precedentemente accettate pubblicate qui o anche nella manpage di 7z.

7z a -t7z -mx=9 -mfb=273 -ms -md=31 -myx=9 -mtm=- -mmt -mmtf -md=1536m -mmf=bt3 -mmc=10000 -mpb=0 -mlc=0 archive.7z inputfileordir

La compressione LZMA2 è assunta qui, ma potresti essere in grado di ottenere prestazioni ancora migliori in 7zip passando opzioni LZMA2 avanzate come -m0=LZMA2:27, o -m0=LZMA2:d25, o un array di parametri come

-m0=BCJ2 -m1=LZMA:d25 -m2=LZMA:d19 -m3=LZMA:d19 -mb0:1

Tali parametri non sembrano essere rispettati dalle versioni di 7z che ho provato, ma potresti voler esplorare ulteriormente o modificare il codice 7z per analizzarli correttamente. O forse si suppone che funzioni ed è solo rotto nelle build che sono state testate.

7
7
7
2016-08-15 13:27:49 +0000

Confronto per db.fdb 1,2 GB (1236598784 B) in Ubuntu server 14.04.03 con p7zip [64] 9.20 su 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 ho questo risultato:

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"

Penso che il secondo metodo funzioni bene = (quasi) miglior compressione con miglior tempo. Ma per la migliore “vista” e facile da ricordare è il primo metodo - con file piccoli e nessun punto di massima compressione. Tra il metodo 2 e 3 non si ottengono 7z più piccoli, ma si paga quasi due volte di più per la compressione. Ognuno decide con il suo.

3
3
3
2019-12-05 09:37:09 +0000

Ho deciso di fare alcuni esperimenti per trovare empiricamente i parametri di compressione ottimali.

Lo strumento che ho usato è 7-ZIP finetuner . Questo strumento cerca i parametri ottimali semplicemente ripetendo la compressione con vari parametri alla ricerca della combinazione ottimale. Un'esecuzione per un file può a volte richiedere più di un'ora anche su un computer veloce.

I parametri che prova sono:

LC : number of Literal Context bits
LP : number of Literal Pos bits
PB : number of Pos Bits
YX : level of file analysis
FB : number of Fast Bytes

Ho lasciato i parametri predefiniti della dimensione del dizionario a 512 MB e la dimensione del blocco solido On. Lo strumento usa il metodo LZMA.

Le migliori combinazioni di parametri su diversi tipi di file sono state le seguenti:

Noto che i migliori valori non erano costanti anche per file dello stesso tipo.

Conclusione: Non ci sono opzioni migliori, poiché ogni file può avere la sua combinazione migliore unica. Si possono portare tutti i parametri fino ai loro limiti, ma un miglioramento non è affatto garantito.

La combinazione più comune sembra essere:

LC : 8
LP : 0
PB : 1
YX : 5
FB : 273

Alcuni riferimenti 7-Zip:

0
0
0
2011-05-10 14:37:36 +0000

Imposta il campo “split to volume, bytes” alla dimensione massima consentita del file sul server (in byte, credo, anche se sembra che accetti abbreviazioni comuni come “KB” e “MB”). Se il file zip supera quella dimensione, 7-zip lo dividerà automaticamente in più file, come integration_serviceLog.zip.001, integration_serviceLog.zip.002, ecc. (Molto tempo fa, PK Zip usava questo per distribuire i file zip su più dischi floppy). Avrai bisogno che tutti i file siano presenti per decomprimerli. Usalo invece di preoccuparti delle migliori impostazioni di compressione in assoluto da usare per ogni particolare set di file, perché ciò che è meglio per un file può essere diverso per un altro file, e non vuoi dover affrontare questo problema ogni volta che hai bisogno di copiare i log.