Le moyen le plus rapide d'extraire tar.gz


42

Est-il possible d'extraire un fichier tar.gz plus rapidement que tar -zxvf filenamehere?

Nous avons de gros fichiers et essayons d'optimiser l'opération.


2
Trouvez-vous que la $ tar -zxvfméthode est liée à IO ou CPU?
EEAA

1
Croire CPU, comment puis-je vérifier?
Justin

5
Pas directement lié, mais « z » n'a pas été nécessaire depuis 2004 / tar v1.1.5 gnu.org/software/tar/#TOCreleases :)
JamesHannah

Réponses:


57

pigz est une version parallèle de gzip. Bien qu'il n'utilise qu'un seul thread pour la décompression, il lance 3 threads supplémentaires pour la lecture, l'écriture et le calcul de contrôle. Vos résultats peuvent varier, mais nous avons constaté une amélioration significative de la décompression de certains de nos ensembles de données. Une fois que vous avez installé pigz, le fichier tar peut être extrait avec:

pigz -dc target.tar.gz | tar xf -


11
+1 FWIW, vous pouvez aussi écrire cela en tant que tar -xvf --use-compress-program=pigz filenamehere. ( -zéquivaut à --use-compress-program=gzip.) Sinon, vous pouvez même créer gzipun lien symbolique vers pigz, et continuer à utiliser -zxvf.
Ruakh

2
@ruakh, j'ai dû mettre -xfaprès --use-compress-program=pigz, ou j'ai eu une erreur. Pour une raison quelconque, ce n'était pas plus rapide que d'utiliser gzip.
Jonderry

Car bzip2il y a pbzip2( ppour parallèle). tar --use-compress-program=pbzip2 -xvf file.tar.bz2.
alfC

Existe-t-il un moyen d'utiliser la pvcommande pour afficher une progression, ou un équivalent, tout en utilisant le --use-compress-program=pigzdrapeau? Pendant la compression, je peux le faire gnutar --use-compress-program="pigz | pv" -cf target.tar.gz YourData, mais je ne suis pas sûr de savoir comment le faire pendant la décompression / décompression.
Stefan Lasiewski

13

s'il y a beaucoup de petits fichiers dans la boule de tar, annulez le paramètre 'v', essayez à nouveau!


3
Je n'utilise jamais -v param. Je ne sais pas pourquoi les gens ont besoin de tant de bruit dans la console.
Eimantas

9
@Eimantas Lorsque vous décomposez un élément contenant de nombreux fichiers de plusieurs gigaoctets, vous souhaitez obtenir une indication de ses progrès. :)
Michael Hampton

@ Timhughes: c'est vraiment bon à savoir, s'il vous plaît poster comme une réponse séparée!
smci

Michael Hampton, si vous avez des fichiers de plusieurs gigaoctets mais que vous mélangez avec une grande liste de petits fichiers, vous avez une bonne raison de ne pas utiliser -v. Dans mes tests locaux, la tâche tar est très lente, surtout si tar est exécuté sur un serveur distant. via terminal, ce que je fais est de regarder le répertoire du -s pour que je puisse regarder le répertoire grandir ...
Luciano Andress Martini

Il peut être intéressant d’utiliser --checkpoint=NUMBER( affiche les messages de progression à chaque NUMBERème enregistrement ) au lieu de -v.
Stefan Lasiewski

6

Si vous voulez voir des progrès, utilisez quelque chose comme pv. Voici un exemple:

pigz -dc mysql-binary-backup.tar.gz | pv | tar xf -
En utilisant notre site, vous reconnaissez avoir lu et compris notre politique liée aux cookies et notre politique de confidentialité.
Licensed under cc by-sa 3.0 with attribution required.