Décompressez le fichier compressé en .txz et .tar avec une seule commande

13

J'ai un fichier compressé en * .txz. Après l'avoir déballé, j'ai reçu un fichier * .tar. Existe-t-il un moyen de le déballer deux fois avec une seule commande? Je veux dire décompresser le fichier (* .tar) .txz avec une seule commande?

Pour savoir que je le fais comme ça:

xz -d file.txz
tar xvf file.tar

Mais je me demande s'il y a une meilleure façon.

Paweł Jaworowski
la source

Réponses:

18
xz -d < file.tar.xz | tar xvf -

C'est la même chose qu'avec n'importe quelle archive compressée. Vous ne devriez jamais avoir à créer une copie non compressée du fichier d'origine.

Certaines tarimplémentations comme les versions récentes de GNU taront des options intégrées pour appeler xzpar elles-mêmes.

Avec GNU tarou bsdtar:

tar Jxvf file.tar.xz

Cependant, si vous avez une version qui a -J, il est probable qu'elle détecte xzautomatiquement les fichiers, donc:

tar xvf file.tar.xz

suffira.

Si votre GNU ou BSD tarest trop ancien pour être supporté xzspécifiquement, vous pourrez peut-être utiliser l' --use-compress-programoption:

tar --use-compress-program=xz -xvf file.tar.gz

L'un des avantages d'avoir tarinvoqué l'utilitaire du compresseur est qu'il est capable de signaler sa défaillance dans son état de sortie.

Remarque: si l' tar.xzarchive a été créée avec pixz, pixzpeut y avoir ajouté un tarindex, ce qui permet d'extraire les fichiers individuellement sans avoir à décompresser l'archive entière:

pixz -x path/to/file/in/archive < file.tar.xz | tar xvf -
Stéphane Chazelas
la source
Je dois utiliser celui-ci: tar --use-compress-program = xz -xvf file.tar.gz Merci!
Paweł Jaworowski
6

Cela devrait être la voie à suivre tar Jxvf file.txz

UVV
la source
Oui, pour les modernes tar, vous pouvez utiliser -Jou--xz .
Cornstalks
4

Le déballage n'est probablement pas la bonne terminologie. Vous pouvez décomprimer avec xzet décompressez avec tar.

La page de manuel pour GNU tar( man tar, GNU tar est par défaut sur Debian) spécifie que vous pouvez utiliser:

-I, --use-compress-program PROG
      filter through PROG (must accept -d)

et xzprend en charge l' -doption, vous pouvez donc utiliser:

tar --use-compress-program xz xvf file.txz 

Ce qui est beaucoup moins claire de la page de manuel est que -xzet -Jsont raccourcis pour --use-compress-program xzou -I xz.

Et ce qui n'est pas spécifié du tout dans la page de manuel, c'est que vous pouvez simplement faire

tar xvf file.txz 

dans GNU tar et qu'il reconnaîtra le fichier tar comme étant compressé avec xz.

Anthon
la source