41 votes

Quel est le meilleur moyen d'utiliser par défaut parallel bzip2 et gzip ?

Bzip2 et gzip n\'utilisent qu\'un seul c\oe ur, m\^eme si de nombreux ordinateurs en ont plus d'un. Mais il existe des programmes comme lbzip2, pbzip2 et pigz, qui utilisent tous les c\oe urs disponibles et promettent d'\^etre compatibles avec bzip2 et gzip.

Alors, quelle est la meilleure fa\c{c}on d'utiliser ces programmes par d\'efaut, de sorte que tar cfa file.tar.bz2 r\'epertoire utilise lbzip2/pbzip2 au lieu de bzip2? Bien s\^ur, je ne veux rien casser.

35voto

loco41211 Points 349

Vous pouvez créer un lien symbolique entre bzip2, bunzip2 et bzcat vers lbzip2, et entre 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 à la place de pbzip2 car le fichier /usr/share/doc/lbzip2/README.gz semble "plus sympa" que /usr/share/doc/pbzip2/README.gz. De plus, le manuel de tar parle de lbzip2.

Éditer:

La version pigz-2.1.6, incluse dans Precise Pangolin, refuse de décompresser les fichiers avec des suffixes inconnus (par ex. initramfs-*.img). Ceci est corrigé dans la version pigz-2.2.4, livrée avec Quantal. Vous voudrez donc peut-être attendre jusqu'à Quantal, installer le paquet Quantal manuellement, ou ne pas encore lier gunzip/gzcat/zcat.

34voto

JosephL Points 126

L'idée du lien symbolique est vraiment bonne.
Une autre solution de travail consiste à aliaser 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.

14voto

user154053 Points 141

La réponse du lien symbolique est vraiment incorrecte. Cela remplacerait le gzip (ou bzip2) par défaut par pigz (ou pbzip2) pour l'ensemble du système. Bien que les implémentations parallèles soient remarquablement similaires aux versions mono-processus, des différences subtiles dans les options de ligne de commande pourraient compromettre les processus système principaux qui dépendent de ces différences.

L'option --use-compress-program est un choix bien meilleur.

Une deuxième option (tout 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/

5voto

Tom Koch Points 53

Une option fascinante est de recompiler tar pour utiliser le multithreading par défaut. Copié de cette réponse stackoverflow

Recompilation avec remplacement

Si vous compilez tar à partir des sources, vous pouvez le recompiler avec les paramètres suivants

--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

-2voto

foo bar Points 1

Utilisez dans votre ~/.bash_aliases :

alias gzip="pigz"
alias gunzip="unpigz"

SistemesEz.com

SystemesEZ est une communauté de sysadmins où vous pouvez résoudre vos problèmes et vos doutes. Vous pouvez consulter les questions des autres sysadmins, poser vos propres questions ou résoudre celles des autres.

Powered by:

X