303 votes

Utilisation de plusieurs noyaux pour la compression / décompression tar + gzip / bzip

Je compresse normalement en utilisant tar zcvf et je décompresse en utilisant tar zxvf (en utilisant gzip pour cause d'habitude).

J'ai récemment eu un processeur quad core avec hyperthreading, donc j'ai 8 cœurs logiques et je remarque que beaucoup de cœurs sont inutilisés pendant la compression / décompression.

Est-il possible d'utiliser les cœurs inutilisés pour accélérer le processus?

456voto

Jen Points 722

Vous pouvez également utiliser l'indicateur tar "--use-compress-program =" pour indiquer à tar le programme de compression à utiliser.

Par exemple utiliser:

 tar -c --use-compress-program=pigz -f tar.file dir_to_zip 
 

413voto

Mark Adler Points 15178

Vous pouvez utiliser pigz au lieu de gzip, qui effectue la compression gzip sur plusieurs cœurs. Au lieu d'utiliser l'option -z, vous le transmettriez via pigz:

 tar cvf - paths-to-archive | pigz > archive.tar.gz
 

Par défaut, Pigz utilise huit cœurs. Vous pouvez en demander plus avec -pn, par exemple -p 32. pigz a les mêmes options que gzip, vous pouvez donc demander une meilleure compression avec -9. Par exemple

 tar cvf - paths-to-archive | pigz -9 -p 32 > archive.tar.gz
 

14voto

panticz.de Points 14

Vous pouvez aussi utiliser le raccourci -I pour --use-compress-program:

 tar -I pbzip2 -cf OUTPUT_FILE.tar.bz2 /DIR_TO_ZIP/
 

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X