Quel est le meilleur moyen d'utiliser bzip2 et gzip parallèles par défaut?

38

Bzip2 et gzip n’utilisent qu’un seul cœur, bien que de nombreux ordinateurs en aient plusieurs. Mais il existe des programmes comme lbzip2, pbzip2 et pigz, qui utilisent tous les cœurs disponibles et promettent d’être compatibles avec bzip2 et gzip.

Alors, quelle est la meilleure façon d'utiliser ces programmes par défaut, de sorte que tar cfa file.tar.bz2 directory utilise lbzip2 / pbzip2 au lieu de bzip2? Bien sûr, je ne veux rien casser.

    
posée elmicha 22.09.2011 - 23:08
la source

5 réponses

30

Vous pouvez créer un lien symbolique entre bzip2, bunzip2 et bzcat vers lbzip2 et gzip, gunzip, gzcat et zcat vers pigz:

sudo apt-get install lbzip2 pigz
cd /usr/local/bin
ln -s /usr/bin/lbzip2 bzip2
ln -s /usr/bin/lbzip2 bunzip2
ln -s /usr/bin/lbzip2 bzcat
ln -s /usr/bin/pigz gzip
ln -s /usr/bin/pigz gunzip
ln -s /usr/bin/pigz gzcat
ln -s /usr/bin/pigz zcat

J'ai choisi lbzip2 au lieu de pbzip2 parce que /usr/share/doc/lbzip2/README.gz est plus "joli" que /usr/share/doc/pbzip2/README.gz. En outre, le manuel tar parle de lbzip2 .

Modifier:

pigz-2.1.6, inclus dans Precise Pangolin, refuse de décompresser les fichiers avec des suffixes inconnus (par exemple, initramfs - *. img). Ceci est corrigé dans pigz-2.2.4, qui est livré avec Quantal. Vous pouvez donc attendre jusqu'à Quantal, installer manuellement le paquet Quantal ou ne pas lier gunzip / gzcat / zcat encore.

    
réponse donnée elmicha 22.09.2011 - 23:08
la source
30

L’idée de lien symbolique est vraiment bien.
Une autre solution consiste à alias tar :

alias tar='tar --use-compress-program=pbzip2'

ou respectivement

alias tar='tar --use-compress-program=pigz'

Cela crée un autre type de défaut.

    
réponse donnée Bastian Ebeling 27.09.2011 - 09:45
la source
13

La réponse au lien symbolique est vraiment incorrecte. Il remplacerait le gzip par défaut (ou bzip2) par pigz (ou pbzip2) pour tout le système. Bien que les implémentations parallèles soient remarquablement similaires aux versions à un seul processus, des différences subtiles dans les options de ligne de commande pourraient briser les processus système fondamentaux qui dépendent de ces différences.

L’option "--use-compress-program" est un choix bien meilleur. Une deuxième option (un peu comme l’alias) serait de définir la variable d’environnement TAR_OPTIONS prise en charge par GNU tar:

$ export TAR_OPTIONS="--use-compress-program=pbzip2"
$ tar czf myfile.tar.bz2 mysubdir/
    
réponse donnée user154053 30.04.2013 - 15:06
la source
2

Une option fascinante consiste à recompiler tar pour utiliser le multithread par défaut. Copié à partir de cette réponse stackoverflow

Recompilation avec remplacement

Si vous construisez tar à partir de sources, vous pouvez le recompiler avec des paramètres

--with-gzip=pigz
--with-bzip2=lbzip2
--with-lzip=plzip

Après avoir recompilé tar avec ces options, vous pouvez vérifier la sortie de l’aide de tar:

$ tar --help | grep "lbzip2\|plzip\|pigz"
  -j, --bzip2                filter the archive through lbzip2
      --lzip                 filter the archive through plzip
  -z, --gzip, --gunzip, --ungzip   filter the archive through pigz
    
réponse donnée Tom Koch 05.05.2016 - 15:36
la source
-2

Utiliser dans vos ~ / .bash_aliases:

alias gzip="pigz"
alias gunzip="unpigz"
    
réponse donnée foo bar 11.12.2014 - 09:21
la source

Lire d'autres questions sur les étiquettes