J'ai l'habitude d'extraire des archives avec un indicateur -xfz
, qui gère les archives gzip et bzip2.
Récemment, j’ai rencontré un fichier .tar.xz
et j’aimerais le décompresser en une étape en utilisant tar
, comment puis-je le faire?
Ubuntu inclut GNU tar, qui reconnaît le format par lui-même! Une commande fonctionne avec n’importe quelle méthode de compression prise en charge, par le manuel .
tar xf archive.tar.xz
tar xf archive.tar.gz
tar xf archive.tar
etc. Si tar génère une erreur Cannot exec
, vous devrez peut-être commencer par Sudo apt install xz-utils
.
Essayer
tar -xJf file.pkg.tar.xz
-J
est le drapeau qui traite spécifiquement des fichiers .xz.
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
… Qui équivaut à:
xz -dc < file.tar.xz > file.tar
Ensuite, utilisez tar
pour décompresser le fichier.
xz est un compresseur de données sans perte. Vous devrez extraire la boule de goudron de xz puis extraire le goudron:
unxz my_archive.tar.xz # results in my_archive.tar
Alors tu sais extraire un goudron
tar -xf my_archive.tar
Source: XZ Utils - Wikipedia .
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
puis:
tar xf myfile.tar.xz
tar -xvf package.tar.xz
-x
- extraire les fichiers
-v
- liste verbalement les fichiers traités
-f
- utilise le fichier archive spécifié
Je veux juste ajouter que si vous avez une ancienne version de GNU tar antérieure à la version 1.22 lorsque les options --xz et -J sont devenues disponibles, vous pouvez compresser ou décompresser les fichiers tar.xz à l’aide de --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
Si tar reconnaît le format de compression, vous n'avez pas besoin d'indicateur:
tar xvf *.tar.xz
Si vous devez décompresser manuellement l'entrée, 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 pipes sont plus rapides que de créer un fichier intermédiaire non compressé et utilisent également moins d'espace disque!
J'aime dtrx
Sudo apt install dtrx
dtrx your-file.tar.xz
Wow, c'est un très bon. At-il été fait avec 7Zip sur un Mac? Essaye ça:
7z x -so file.tar.xz | tar xf -
Ubuntu est livré avec Python (Python 2.7 et Python 3), qui contient les modules nécessaires à l'extraction des archives. Donc, si pour quelque raison que ce soit, la commande tar
est manquante (disons que votre administrateur système l’a supprimée et que vous n’avez pas le privilège Sudo
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 script court, il 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
. En utilisant le script ci-dessus, le répertoire etc
sera créé dans votre répertoire de travail actuel et contiendra le fichier passwd
. Bien sûr, cela peut toujours être étendu en spécifiant le chemin où vous voulez extraire l'intérieur de la fonction extractall()
.
unar
est un programme assez simple et facile à écrire, permettant de désarchiver presque tous les formats, y compris 7z et RAR
il semble être écrit en (GNU) Objective-C et nécessite donc l’installation de certaines bibliothèques gnustep
(implémentation de GNU Objective-C) ( gnustep-base-runtime
et libgnustep-base1.25
)
si vous utilisez --install-suggère ou avez configuré apt
pour installer les packages suggérés, unar
suggérera et installera de nombreux programmes GUI GNUStep qui ne sont pas ce que vous voulez.
Sudo apt install --no-install-suggests unar
unar linux-source.tar.xz
il créera automatiquement le répertoire de sortie linux-source
.