Quali sono le migliori opzioni da utilizzare per comprimere i file utilizzando 7 Zip?


62

Spesso devo raccogliere i file di registro e caricarli su un server centrale (di proprietà di un'altra società). Il server centrale ha un limite di dimensione del file, quindi sto cercando di creare il file più piccolo possibile che sia ancora nel formato zip.

Quali sono le migliori impostazioni da utilizzare quando comprimo un file di testo in un formato zip quando la mia unica necessità è una dimensione di file ridotta?

Opzioni 7zip

Ho fatto l'ovvia e scelta compressione ultra, e ho notato che LZMA fa un lavoro migliore che sgonfiare, ma ci sono troppe altre permutazioni di opzioni per poterle testare tutte.


1
Dividere la zip in più file è un'opzione?
JaredMcAteer,

3
Non appena si sceglie qualsiasi cosa tranne il Deflateformato, non è più un file .zip "normale", ma un file zip "esteso", introdotto da WinZip. Originariamente mantenevano l'estensione come .zip, con molta costernazione (dal momento che la maggior parte dei normali strumenti di gestione di zip non sono in grado di gestirli), ma la maggior parte degli archivi ora usa .zipx per distinguerli dai tradizionali file .zip. Se puoi usare LZMA, passa a .7z e scegli PPMd: dovrebbe comprimere meglio (e più velocemente!) Per i file di testo.
Afrazier,

1
@afrazier: "La specifica del formato di file .ZIP documenta i seguenti metodi di compressione: memorizzati (nessuna compressione), ristretti, ridotti (metodi 1-4), implosi, token, deflazionati, Deflate64, bzip2, LZMA (EFS), WavPack, PPMd ". en.wikipedia.org/wiki/Zip_%28file_format%29#Compression_methods
endolith

1
@endolith: bzip2, lzma, wv e ppmd sono tutte aggiunte molto recenti al formato del file. Non è nemmeno sicuro supporre che il destinatario sia in grado di gestire deflate64, tanto meno nulla di più recente.
Afrazier,

1
definire "normali strumenti zip". La maggior parte dei "normali strumenti zip" oggigiorno come 7z e winrar possono estrarre file 7z.
phuclv,

Risposte:


61

Per creare il file ZIP standard più piccolo che può essere creato da 7-Zip, prova:

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

Quali 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

2
@Tek: perché? Non è buono. La domanda riguardava l'uso del "formato ZIP standard", quindi la risposta non dovrebbe specificare LZMA. -ms = on è per .7z, non file zip standard. -md è legato a BZip2, quindi non mi aspetto che influisca su ZIP (o persino su LZMA). -mfb = 64 è un valore non ottimizzato: -mfb = 258 crea file zip più piccoli. E questa risposta non menziona nemmeno -mpass = 15 che può influenzare i file zip. Questa è una risposta ben formattata che, sfortunatamente, è sbagliata in molti modi.
TOOGAM

6
Vorrei usare lzma2
Lance Badger il

Se dai un'occhiata alle FAQ 7-zip, afferma che le versioni più recenti di 7z potrebbero avere prestazioni peggiori rispetto alle versioni precedenti in alcune circostanze. Leggi le FAQ per maggiori dettagli, ma in breve usa 'qs' nel campo Parametri nella GUI o usa -mqs nella versione da riga di comando per usare il vecchio ordinamento per metodo di estensione del file. 7-zip.org/faq.html .
drojf

13

Se è possibile utilizzare il formato .7z anziché solo .zip, utilizzerei semplicemente PPMD con le seguenti opzioni e lascerei tutto il resto impostato dal Livello di compressione:

  • Formato archivio: 7z
  • Metodo di compressione: PPMD
  • Livello di compressione: Ultra

Comprimo regolarmente i registri server / testo (60 MB +) utilizzando queste opzioni e di solito escono all'1-2% delle dimensioni originali.


Per testi come file di registro, ppmd è sicuramente la strada da percorrere. Tuttavia, la domanda diceva che doveva rimanere nel formato zip, che potrebbe non funzionare con PPMD.
Brian Minton,

Ho appena provato zip con PPMD ​​e Windows Explorer apre i contenuti senza lamentele qui su Windows 7
Umber Ferrule

3
L'ho notato anch'io. Apre i contenuti bene. Tuttavia, quando in realtà ho provato a visualizzare uno dei file all'interno del file zip, non è riuscito.
Brian Minton,

2
Perché il metodo di compressione PPMD ​​è superiore per i file di testo?
user598527

1
LZMA2 offre risultati migliori per i file di testo rispetto a PPMD.
T3rm1,

7

Confronto per db.fdb 1,2 GB (1236598784 B) nel server Ubuntu 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 avere questi risultati:

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 il miglior tempo. Ma per una migliore "visualizzazione" e facile da ricordare è il primo metodo - con file di piccole dimensioni e nessun punto di compressione massima. Tra il metodo 2 e 3 non otteniamo 7z in più piccoli ma paghiamo quasi due volte più tempo per la compressione. Chiunque decide con il proprio.


7

Dopo molte sperimentazioni, scavando nella documentazione dettagliata di 7zip e leggendo alcuni dei codici sorgente 7z relativi ai parametri avanzati di LZMA2, ecco un metodo migliore di seguito. Ha ridotto alcuni file di test del mondo reale da 1 GB più di 2 a 4 volte meglio delle soluzioni precedentemente accettate pubblicate qui o anche nella manpage 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

Qui si assume la compressione LZMA2, ma potresti essere in grado di ottenere prestazioni ancora migliori in 7zip con il passaggio di 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 7z che ho testato, ma potresti voler esplorare ulteriormente o correggere il codice 7z per analizzarli correttamente. O forse dovrebbe funzionare ed è semplicemente rotto nelle build che sono state testate.


wow, questo ha fatto davvero una grande differenza. Per il mio archivio, ho sperimentato molti altri suggerimenti, comprese altre risposte qui, e il miglior risultato che ho ottenuto è stato 99 MB, contro 85 MB utilizzando queste impostazioni.
user9399

0

Impostare il campo "Dividi in volume, byte" sulla dimensione massima consentita del file del server (in byte, credo, anche se sembra che accetti le abbreviazioni comuni come "KB" e "MB"). Se il file zip supera tale dimensione, 7-zip lo dividerà automaticamente in più file, come integrazione_servizioLog.zip.001 , integrazione_servizioLog.zip.002 , ecc. floppy disk.) Per decomprimerli saranno necessari tutti i file presenti. Usa questo invece di preoccuparti delle migliori impostazioni di compressione assolute da utilizzare per qualsiasi particolare set di file, perché ciò che è meglio per un file può essere diverso per un altro file e non devi farlo ogni volta che devi copia registri.


1
Sono preoccupato per come le persone dall'altra parte decomprimeranno i file. Ho bisogno che sia il più semplice possibile per loro. Sai se puoi decomprimere i volumi divisi usando lo zip incorporato di windows o gzip?
jjnguy,

Apparentemente no, la funzione di cartella zip di Windows integrata non esegue lo spanning dei file zip. È un peccato, dal momento che è stata una caratteristica standard del formato da prima di Windows 3. Sarei molto sorpreso se gzip non potesse farlo, però. WinZip sicuramente può.
Rob Kennedy,
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.