GNU/Linux >> Tutoriels Linux >  >> Linux

Prise en charge multithread dans 7za

Selon le commutateur -m (Définir la méthode de compression) # ZipMultiThread - Manuel et documentation 7ZIP, mt par défaut à on , il n'est donc pas nécessaire de le spécifier du tout.

Cependant, l'implémentation de l'algorithme DEFLATE par 7zip ne prend pas en charge le multi-threading !

Comme vous l'avez déjà découvert,

7za a archive.zip bigfile

n'utilise qu'un seul cœur.

Mais .zip les fichiers compressent chaque fichier individuellement. Lors de la compression de plusieurs fichiers, l'option multi-threading compresse un fichier par cœur à la fois.

Essayez-le et vous verrez que

7za a archive.zip bigfile1 ... bigfileN

utilisera tous les N disponibles cœurs.

Si vous souhaitez accélérer la compression d'un simple fichier, vous avez deux choix :

  1. Diviser bigfile en morceaux.

  2. Utilisez un algorithme de compression différent.

    Par exemple, l'implémentation de l'algorithme BZip2 par 7zip prend en charge le multithreading.

    La syntaxe est :

    7za a -mm=BZip2 archive.zip bigfile
    

De plus, l'erreur de syntaxe est causée par votre tentative d'utiliser l'algorithme LZM pour un .zip récipient. Ce n'est pas possible.

Les algorithmes possibles pour .zip les conteneurs sont DEFLATE(64), BZip2 et pas de compression.

Si vous souhaitez utiliser l'algorithme LZM, utilisez un .7z récipient. Ce conteneur gère également les algorithmes suivants :PPMd, BZip2, DEFLATE, BCJ, BCJ2 et pas de compression.


Ceci est une vieille question, et non la réponse à la question spécifique, mais une réponse à l'esprit de la question (Utilisation de tous les cœurs pour compresser un format zip)

pigz (gzip parallèle avec l'option .zip)

pigz -K -k archive.zip bigfile txt

Cela vous donnera un fichier compatible zip 7 fois plus rapide pour le même niveau de compression.

Une comparaison rapide des compresseurs compatibles zip et non zip utilisant des cœurs simples et multiples.

wall times sur i7-2600k pour compresser un fichier txt de 1,0 Go sur 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)

temps de mur pour décompresser

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

Linux
  1. Extracteurs universels ?

  2. Linux – Noyau :Prise en charge des espaces de noms ?

  3. Encodage d'un fichier Zip ?

  4. Le statut du support Hidpi dans Xfce ?

  5. Programme de compression affichant le taux de compression en direct ?

Prise en charge de la transparence des certificats

Comment décompresser des fichiers sous Linux

Comment ajouter la prise en charge de la compression Brotli à Nginx sur Debian 10

Comment activer la compression GZIP dans Nginx

Comment compresser un dossier sous Linux

Qu'est-ce qui est le plus efficace - la compression tar ou zip ? Quelle est la différence entre tar et zip ?