Toute commande Linux pour effectuer une décompression parallèle du fichier tar.bz2?

17

J'ai un fichier assez volumineux (~ 50 Go) et cela prend un certain temps à s'exécuter

tar xvf file.tar.bz2

dessus. Je connais des programmes qui peuvent faire une compression parallèle pour les fichiers bzip2 mais je ne connais pas les programmes qui peuvent faire une décompression parallèle pour les fichiers bzip2.

Y a-t-il des programmes qui peuvent y parvenir? Quelle est la syntaxe exacte de la commande à utiliser pour extraire du fichier?

J'utilise Ubuntu 12.04

user784637
la source

Réponses:

22

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

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

Pour installer ces packages:

Installer lbzip2type lbzip2 :

sudo apt-get install lbzip2

Installer pbzip2type pbzip2 :

sudo apt-get install pbzip2
devav2
la source
Donc, si je comprends bien, je dois décompresser puis décompresser? Comme 2 commandes par opposition à tar xvf?
user784637
1
Oui, lorsque vous l'exécuterez, lbzip2 -d -n 2 file.tar.bz2il donnera un fichier tar. Qui doit être non goudronné.
devav2
1
À partir de la page de manuel de pbzip2 (lbzip2 raconte une histoire similaire): "Les fichiers qui sont compressés avec pbzip2 gagneront également une accélération considérable lorsqu'ils seront décompressés à l'aide de pbzip2. qui ne peut pas être réparti entre les processeurs. "
Tapio
1
@Tapio Voici la description de lbzip2 "Compresser ou décompresser des opérandes FILE ou une entrée standard vers des fichiers normaux ou une sortie standard, en appelant libbz2 de Julian Seward à partir de plusieurs threads. L'utilitaire lbzip2 utilise plusieurs threads et un séparateur d'entrée même lors de la décompression de fichiers .bz2 créé par bzip2 standard (mais voir les BOGUES ci-dessous). "
devav2
1
D'après la seule réponse, je comprendrais que les deux programmes doivent être utilisés ensemble d'une manière ou d'une autre - mais ils semblent être des alternatives, en fait? (Il est écrit "lbzip2 et pbzip2 sont les outils ...", "Utilisation: lbzip2 ... pbzip2 ...", "pour les installer ...")
Volker Siegel
11

Vous pouvez décompresser votre archive avec une seule commande en utilisant l' -Ioption tar . Il vous donne la possibilité d'utiliser n'importe quel utilitaire de compression qui prend en charge l' -doption.

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

Il est très utile lors de la suppression de grandes archives car vous n'avez pas besoin d'avoir 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 car vous avez besoin de beaucoup moins d'E / S disque.

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

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

Vérifiez tar --helppour plus d'options.

Ludovic Ronsin
la source
1
Une autre option (par exemple, si votre version de "tar" ne comprend pas l'option -I) estlbzip2 -dc file.tar.bz2 | tar xvf -
Wodin
5

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

à partir de la page de manuel:

  pbzip2 -d myfile.tar.bz2

Cet exemple décompressera le fichier "monfichier.tar.bz2" dans le fichier décompressé "monfichier.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 la décompression, vous devez décompresser le fichier avec

 tar xf myfile.tar

Un fichier tar est juste un conteneur, auquel vous pouvez appliquer plusieurs algorithmes de compression, par exemple, vous pouvez avoir un ".tar.gz" ou un ".tar.bz2" qui ont tous deux des algorithmes de compression différents appliqués. Donc pbzip2 ne décompressera que l'archive mais il n'extrayera pas les fichiers, utilisez tarpour extraire les fichiers. Tar ne devrait pas prendre longtemps car l'archive est déjà décompressée et elle extraira simplement les fichiers. (notez que nous n'utilisons pas le drapeau 'z' ou le drapeau 'j' dans la commande tar, ce qui indique que nous voulons également décompresser le fichier)

Sam
la source
1
la page de manuel contient quelques exemples utiles: manpages.ubuntu.com/pbzip2
Savvas Radevic
@Sam Merci pour la réponse - pourriez-vous répondre au commentaire que j'ai laissé sur l'autre réponse
user784637
2

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

Stefan Reich
la source