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?
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?
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
.
Prova
tar -xJf file.pkg.tar.xz
La -J
è la bandiera che si occupa specificamente dei file .xz.
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.
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 .
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
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
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!
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
Wow, è davvero buono. È stato fatto con 7zip su un Mac? Prova questo:
7z x -so file.tar.xz | tar xf -
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()
.
Leggi altre domande sui tag compression tar