Comment décompresser une archive utilisant .xz?

647

J'ai l'habitude d'extraire des archives avec un indicateur -xfz , qui gère les archives gzip et bzip2.

Récemment, je me suis retrouvé dans un fichier .tar.xz et je voudrais le décompresser en une seule étape en utilisant tar , comment puis-je le faire?

    
posée Jorge Castro 03.01.2012 - 00:41
la source

10 réponses

843

Ubuntu inclut GNU tar, qui reconnaît le format seul! Une commande fonctionne avec toute méthode de compression prise en charge, conformément à le manuel .

tar xf archive.tar.xz
tar xf archive.tar.gz
tar xf archive.tar

etc. Si tar donne une erreur Cannot exec , vous devrez peut-être d'abord sudo apt install xz-utils .

    
réponse donnée ramslök 26.02.2012 - 18:41
la source
283

Essayez

tar -xJf file.pkg.tar.xz

Le -J est l'indicateur qui traite spécifiquement des fichiers .xz.

    
réponse donnée jrg 03.01.2012 - 00:42
la source
67

Si pour une raison quelconque, les solutions tar ne fonctionnent pas (peut-être parce que vous utilisez les fonctions intégrées à OS X), essayez ceci:

unxz < file.tar.xz > file.tar

... ce qui équivaut à:

xz -dc < file.tar.xz > file.tar

Ensuite, utilisez tar pour décompresser le fichier.

    
réponse donnée Mathias Bynens 19.01.2014 - 21:05
la source
22

xz est un compresseur de données sans perte. Vous devrez extraire la boule de tar de xz et extraire le tar:

unxz my_archive.tar.xz      # results in my_archive.tar

Ensuite, vous savez extraire un goudron

tar -xf my_archive.tar

Source: XZ Utils - Wikipedia .

    
réponse donnée Foxx 23.05.2014 - 20:44
la source
11

J'ai eu le même problème, la commande tar xf n'a pas pu l'extraire. Pour résoudre ce problème, vous devez installer le package xz-utils . La solution était:

sudo apt-get install xz-utils

alors:

tar xf myfile.tar.xz
    
réponse donnée Zsolt Sky 14.02.2015 - 19:44
la source
7

Qu'en est-il

tar -xvf package.tar.xz

-x - extraire les fichiers

-v - liste des fichiers traités verbeusement

-f - utilise le fichier d'archive spécifié

    
réponse donnée nsane 05.03.2014 - 18:16
la source
3

Si tar reconnaît le format de compression, vous n'avez pas besoin d'un indicateur:

tar xvf *.tar.xz

Si vous devez décompresser l’entrée manuellement, par exemple parce que votre tar est trop ancien pour reconnaître xz, ou si vous avez besoin d’un chemin spécial:

xz -cd *.tar.xz | tar xvf -

Les tubes sont plus rapides que la création d’un fichier intermédiaire non compressé et utilisent également moins d’espace disque!

    
réponse donnée Orion Lawlor 04.02.2015 - 07:13
la source
3

Je veux juste ajouter que si vous avez une ancienne version de GNU tar avant la version 1.22 lorsque - Les options xz et -J sont devenues disponibles, vous pouvez compresser ou décompresser les fichiers tar.xz en utilisant --use-compress-program xz . Par exemple,

tar --use-compress-program xz -cf example.tar.xz file1 file2 file3

ou

tar --use-compress-program xz -xf example.tar.xz
    
réponse donnée ScottH 04.09.2015 - 03:21
la source
2

Wow, c'est vraiment bien. A-t-il été fait avec 7zip sur un Mac? Essayez ceci:

7z x -so file.tar.xz | tar xf -
    
réponse donnée user8290 03.01.2012 - 01:06
la source
0

Ubuntu est fourni avec Python (Python 2.7 et Python 3), qui contient les modules nécessaires à l'extraction des archives. Donc, si pour une raison quelconque la commande tar est manquante (par exemple, si votre administrateur système l'a supprimée et que vous n'avez pas sudo privillege pour l'installer), vous pouvez utiliser:

python3 -c 'import tarfile,sys; b = tarfile.open(sys.argv[1]);print(b.extractall())' ./archive.xz 

En tant que court script, cela est plus lisible que:

#!/usr/bin/env python3
import tarfile,sys

with tarfile.open( sys.argv[1] ) as fd:
    fd.extractall()

Supposons que j'ai créé un fichier .xz avec tar cJf thing.xz /etc/passwd . L'archive contiendra le répertoire etc avec le fichier passwd à l'intérieur. L'utilisation du script ci-dessus entraînera la création du répertoire etc dans votre répertoire de travail actuel, ainsi que le fichier passwd . Bien sûr, cela peut toujours être étendu en spécifiant le chemin d’extraction dans la fonction extractall() .

    
réponse donnée Sergiy Kolodyazhnyy 08.06.2018 - 10:36
la source

Lire d'autres questions sur les étiquettes