GNU/Linux >> Linux Esercitazione >  >> Linux

Supporto multithread in 7za

Secondo -m (Set compression Method) switch # ZipMultiThread - 7ZIP manuale e documentazione, mt il valore predefinito è on , quindi non è necessario specificarlo.

Tuttavia, l'implementazione di 7zip dell'algoritmo DEFLATE non supporta il multi-threading!

Come hai già scoperto,

7za a archive.zip bigfile

utilizza solo un core.

Ma .zip i file comprimono ogni file individualmente. Quando si comprimono diversi file, l'opzione multi-threading comprime un file per core alla volta.

Provalo e lo vedrai

7za a archive.zip bigfile1 ... bigfileN

utilizzerà tutti i N disponibili core.

Se vuoi velocizzare la compressione di un singolo file, hai due scelte:

  1. Dividi bigfile a pezzi.

  2. Usa un algoritmo di compressione diverso.

    Ad esempio, l'implementazione di 7zip dell'algoritmo BZip2 supporta il multi-threading.

    La sintassi è:

    7za a -mm=BZip2 archive.zip bigfile
    

Inoltre, l'errore di sintassi è causato dal tuo tentativo di utilizzare l'algoritmo LZM per un .zip contenitore. Non è possibile.

I possibili algoritmi per .zip i contenitori sono DEFLATE(64), BZip2 e nessuna compressione.

Se vuoi usare l'algoritmo LZM, usa un .7z contenitore. Questo contenitore gestisce anche i seguenti algoritmi:PPMd, BZip2, DEFLATE, BCJ, BCJ2 e nessuna compressione.


Questa è una vecchia domanda, e non la risposta alla domanda specifica, ma una risposta allo spirito della domanda (Utilizzo di tutti i core per comprimere un formato zip)

pigz (gzip parallelo con opzione .zip)

pigz -K -k archive.zip bigfile txt

Questo ti darà un file zip compatibile 7 volte più veloce per lo stesso livello di compressione.

Un rapido confronto tra compressori zip compatibili e non zip che utilizzano core singoli e multipli.

wall times su i7-2600k per comprimere file txt da 1.0gb su fedora 20

67s (120mb) 7za (zip,1 thread)
15s (141mb) 7za -mx=4 (zip,1 thread)
17s (132mb) zip (zip,1 thread)
 5s (131mb) pigz -K -k (zip,8 threads)
 9s (106mb) bsc (libbsc.com) (not zip,8 threads)
 5s (130mb) zhuff -c2 (not zip,8 threads)
 2s (149mb) zhuff (not zip,8 threads)

tempi di muro per decomprimere

4.2s unzip -t
2.0s pigz -t
5.1s bsc d
0.5s zhuff -d

Linux
  1. Estrattori universali?

  2. Linux – Kernel:supporto per gli spazi dei nomi?

  3. Codifica di un file zip?

  4. Lo stato del supporto Hidpi in Xfce?

  5. Programma di compressione che mostra il rapporto di compressione in tempo reale?

Supporto per la trasparenza dei certificati

Come decomprimere i file in Linux

Come aggiungere il supporto per la compressione Brotli a Nginx su Debian 10

Come abilitare la compressione GZIP in Nginx

Come comprimere la cartella su Linux

Quale è più efficiente:compressione tar o zip? Qual è la differenza tra tar e zip?