Come faccio a decomprimere un tarball che utilizza .xz?

650

Sono abituato ad estrarre i tarball con un flag -xfz , che gestisce gli archivi gzip e bzip2.

Recentemente ho trovato un file .tar.xz e vorrei decomprimerlo in un solo passaggio usando tar , come posso fare?

    
posta Jorge Castro 03.01.2012 - 00:41

10 risposte

848

Ubuntu include GNU tar, che riconosce da solo il formato! Un comando funziona con qualsiasi metodo di compressione supportato, per il manuale .

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

ecc. Se tar dà un errore Cannot exec , potresti aver bisogno prima di sudo apt install xz-utils .

    
risposta data ramslök 26.02.2012 - 18:41
283

Prova

tar -xJf file.pkg.tar.xz

La -J è la bandiera che si occupa specificamente dei file .xz.

    
risposta data jrg 03.01.2012 - 00:42
67

Se per qualche motivo le soluzioni tar non funzionano (forse perché stai usando i built-in di OS X), prova questo:

unxz < file.tar.xz > file.tar

... che è equivalente a:

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

Quindi usa tar per decomprimere il file.

    
risposta data Mathias Bynens 19.01.2014 - 21:05
22

xz è un compressore senza perdita di dati. Dovrai estrarre la sfera tar da xz e quindi estrarre il tar:

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

Allora sai come estrarre un tar

tar -xf my_archive.tar

Fonte: XZ Utils - Wikipedia .

    
risposta data Foxx 23.05.2014 - 20:44
11

Ho avuto lo stesso problema, il comando tar xf non è stato in grado di estrarlo. Per risolvere questo problema, è necessario installare il pacchetto xz-utils . La soluzione era:

sudo apt-get install xz-utils

quindi:

tar xf myfile.tar.xz
    
risposta data Zsolt Sky 14.02.2015 - 19:44
7

Che dire

tar -xvf package.tar.xz

-x - estrai file

-v - elenca in modo verosimile i file elaborati

-f - utilizza il file di archivio specificato

    
risposta data nsane 05.03.2014 - 18:16
3

Se tar riconosce il formato di compressione, non hai bisogno di un flag:

tar xvf *.tar.xz

Se hai bisogno di decomprimere l'input manualmente, ad esempio perché il tar è troppo vecchio per riconoscere xz, o hai bisogno di un percorso speciale:

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

I pipe sono più veloci di un file intermedio non compresso e usano meno spazio sul disco!

    
risposta data Orion Lawlor 04.02.2015 - 07:13
3

Voglio solo aggiungere che se hai una vecchia versione di GNU tar precedente alla versione 1.22 quando il - Le opzioni xz e -J sono diventate disponibili, puoi comprimere o decomprimere i file tar.xz usando --use-compress-program xz . Ad esempio,

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

o

tar --use-compress-program xz -xf example.tar.xz
    
risposta data ScottH 04.09.2015 - 03:21
2

Wow, è davvero buono. È stato fatto con 7zip su un Mac? Prova questo:

7z x -so file.tar.xz | tar xf -
    
risposta data user8290 03.01.2012 - 01:06
0

Ubuntu viene fornito con Python (Python 2.7 e Python 3), che contiene i moduli necessari per l'estrazione degli archivi. Quindi se per qualsiasi motivo manca il comando tar (ad esempio il tuo amministratore di sistema lo ha rimosso e non hai sudo privillege per installarlo), si può usare:

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

Come script breve, è più leggibile come:

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

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

Supponiamo di aver creato un file .xz con tar cJf thing.xz /etc/passwd . L'archivio conterrà etc directory con passwd file all'interno. L'utilizzo dello script sopra comporterà la directory etc creata nella tua attuale directory di lavoro, e al suo interno sarà passwd file. Ovviamente, questo può sempre essere esteso specificando il percorso in cui si desidera estrarre all'interno della funzione extractall() .

    
risposta data Sergiy Kolodyazhnyy 08.06.2018 - 10:36

Leggi altre domande sui tag