web-dev-qa-db-fra.com

Toute commande linux permettant de décompresser en parallèle le fichier tar.bz2?

J'ai un fichier assez volumineux (~ 50 Go) et cela prend du temps à courir

tar xvf file.tar.bz2

dessus. Je suis conscient des programmes qui peuvent effectuer une compression parallèle pour les fichiers bzip2 mais pas des programmes qui peuvent effectuer une décompression parallèle pour les fichiers bzip2.

Existe-t-il des programmes pouvant atteindre cet objectif? Quelle est la syntaxe exacte de la commande à utiliser pour extraire du fichier?

J'utilise Ubuntu 12.04

17
user784637

lbzip2 et pbzip2 sont les outils que vous pouvez utiliser pour la compression et la décompression parallèles.

Usage:

lbzip2 -d <file.tar.bz2> 
pbzip2 -d <file.tar.bz2> 

L'option -d est utilisée pour la décompression.

Pour installer ces paquets:

lbzip2Install lbzip2 type:

Sudo apt-get install lbzip2

pbzip2Install pbzip2 type:

Sudo apt-get install pbzip2
21
devav2

Vous pouvez décompresser votre archive avec une commande unique en utilisant l'option tar -I. Il vous permet d'utiliser n'importe quel utilitaire de compression prenant en charge l'option -d.

tar -I lbzip2 -xvf <file.tar.bz2>

Cela est très utile lorsque vous désaérez avec de grandes archives car vous vous n'avez pas besoin de deux fois la taille non compressée disponible sur le système de fichiers cible (le fichier tar temporaire et le fichier de sortie). Il est également plus rapide que nécessaire moins IO de disque.

Bien sûr, cela fonctionne aussi lors de la compression:

tar -I lbzip2 -cvpf <file.tar.bz2> <file>

Vérifiez tar --help pour plus d'options.

10
Ludovic Ronsin

vous pouvez utiliser pbzip2 avec le drapeau -d pour "décompresser",

depuis la page de manuel:

  pbzip2 -d myfile.tar.bz2

Cet exemple va décompresser le fichier "myfile.tar.bz2" dans le fichier décompressé "myfile.tar". Il utilisera le nombre de processeurs détectés automatiquement (ou 2 processeurs si la détection automatique n'est pas prise en charge).

Après décompression, vous devez décompresser le fichier avec

 tar xf myfile.tar

Un fichier tar est simplement un conteneur, auquel vous pouvez appliquer plusieurs algorithmes de compression. Par exemple, vous pouvez avoir un ".tar.gz" ou un ".tar.bz2" auxquels les deux algorithmes de compression sont appliqués. Donc, pbzip2 ne fera que décompresser l'archive, mais il ne va pas extraire les fichiers, utilisez tar pour extraire les fichiers. Tar ne devrait pas tarder car l'archive est déjà décompressée et il ne fera qu'extraire les fichiers. (notez que nous n'utilisons pas l'indicateur 'z' ou l'indicateur 'j' dans la commande tar, ce qui indique que nous souhaitons également décompresser le fichier)

5
Sam

lbzip2 semble beaucoup mieux que pbzip2 dans votre cas car il est capable d’accélérer la décompression des fichiers .bz2 standard alors que pbzip2 ne le fait pas. (Je viens de le tester - 17 secondes pour lbzip2 contre 56 secondes pour pbzip2 sur un quad core partiellement chargé).

2
Stefan Reich