Approche commune
Il y a une option pour le tar
programme:
-I, --use-compress-program PROG
filter through PROG (must accept -d)
Vous pouvez utiliser la version multithread de l'utilitaire d'archivage ou de compression.
Les archiveurs multithread les plus populaires sont pigz (au lieu de gzip) et pbzip2 (au lieu de bzip2). Par exemple:
$ tar -I pbzip2 -cf OUTPUT_FILE.tar.bz2 paths_to_archive
$ tar --use-compress-program=pigz -cf OUTPUT_FILE.tar.gz paths_to_archive
L'archiveur doit accepter -d. Si votre utilitaire de remplacement n'a pas ce paramètre et / ou si vous devez spécifier des paramètres supplémentaires, utilisez des tuyaux (ajoutez des paramètres si nécessaire):
$ tar cf - paths_to_archive | pbzip2 > OUTPUT_FILE.tar.gz
$ tar cf - paths_to_archive | pigz > OUTPUT_FILE.tar.gz
L'entrée et la sortie du fil unique et du multithread sont compatibles. Vous pouvez compresser en utilisant la version multithread et décompresser en utilisant la version single thread et vice versa.
p7zip
Pour p7zip pour la compression, vous avez besoin d'un petit script shell comme suit:
#!/bin/sh
case $1 in
-d) 7za -txz -si -so e;;
*) 7za -txz -si -so a .;;
esac 2>/dev/null
Enregistrez-le sous 7zhelper.sh. Voici l'exemple d'utilisation:
$ tar -I 7zhelper.sh -cf OUTPUT_FILE.tar.7z paths_to_archive
$ tar -I 7zhelper.sh -xf OUTPUT_FILE.tar.7z
xz
Concernant le support XZ multithread. Si vous utilisez la version 5.2.0 ou supérieure de XZ Utils, vous pouvez utiliser plusieurs cœurs pour la compression en définissant -T
ou --threads
à une valeur appropriée via la variable d'environnement XZ_DEFAULTS (par exemple XZ_DEFAULTS="-T 0"
).
Ceci est un fragment de l'homme pour la version 5.1.0alpha:
La compression et la décompression multithread ne sont pas encore implémentées, donc cette option n'a aucun effet pour l'instant.
Cependant, cela ne fonctionnera pas pour la décompression de fichiers qui n'ont pas également été compressés avec le threading activé. De l'homme pour la version 5.2.2:
La décompression filetée n'a pas encore été mise en œuvre. Il ne fonctionnera que sur les fichiers contenant plusieurs blocs avec des informations de taille dans les en-têtes de bloc. Tous les fichiers compressés en mode multi-thread remplissent cette condition, mais les fichiers compressés en mode single-thread ne le font pas même si --block-size = size est utilisé.
Recompilation avec remplacement
Si vous construisez tar à partir de sources, vous pouvez 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