1022

I'm used to extracting tarballs with a -xfz flag, which handles gzip and bzip2 archives.

Recently I've run into a .tar.xz file and I would like to uncompress it in one step using tar, how can I do that?

BuZZ-dEE
  • 14,533
Jorge Castro
  • 73,717

12 Answers12

1289

Ubuntu includes GNU tar, which recognizes the format by itself! One command works with any supported compression method, per the manual.

# The same command handles any compression format! Ex:

tar xf archive.tar.xz # for .tar.xz files tar xf archive.tar.gz # for .tar.gz files tar xf archive.tar # for .tar files

etc. If tar gives a Cannot exec error, you may need to sudo apt install xz-utils first.

Gabriel Staples
  • 11,502
  • 14
  • 97
  • 142
ramslök
  • 13,110
412

Try

tar -xJf file.pkg.tar.xz

The -J is the flag specifically deals with .xz files.

Pablo Bianchi
  • 17,371
jrg
  • 61,707
97

If for some reason the tar solutions don’t work (perhaps because you’re using the OS X built-ins), try this:

unxz < file.tar.xz > file.tar

…which is equivalent to:

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

Then use tar to untar the file.

43

xz is a lossless data compressor. You will have to extract the tar ball from xz and then extract the tar:

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

Then you know to extract a tar

tar -xf my_archive.tar

Source: XZ Utils - Wikipedia.

Seth
  • 59,332
Foxx
  • 431
21
tar -xvf package.tar.xz

-x - extract files

-v - verbosely list files processed

-f - use specified archive file

nsane
  • 486
21

I had the same problem, the tar xf command was not able to extract it. To fix this, you need to install the xz-utils package. The solution was:

sudo apt-get install xz-utils

then:

tar xf myfile.tar.xz
Zsolt Sky
  • 311
  • 2
  • 3
6

Just want to add that if you have an old version of GNU tar prior to version 1.22 when the --xz and -J options became available, you could compress or decompress tar.xz files by using --use-compress-program xz. For example,

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

or

tar --use-compress-program xz -xf example.tar.xz
ScottH
  • 81
5

I like dtrx

sudo apt install dtrx
dtrx your-file.tar.xz
5

If tar recognizes the compression format, you don't need a flag:

tar xvf *.tar.xz

If you need to decompress the input manually, for example because your tar is too old to recognize xz, or you need a special path:

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

Pipes are faster than making an uncompressed intermediate file, and use less disk space too!

4

Ubuntu comes with Python (Python 2.7 and Python 3), which contains the necessary modules for extracting archives. So if for whatever reason tar command is missing (say your sysadmin has removed it and you don't have sudo privillege to install it), one can use:

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

As a short script,that's more readable as:

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

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

Suppose I created an .xz file with tar cJf thing.xz /etc/passwd. The archive will contain etc directory with passwd file inside. Using the above script will result in etc directory created in your current working directory, and within it will be passwd file. Of course, this can always be extended by specifying path where you want to extract inside the extractall() function.

4

Wow, that's a really good one. Was it done with 7zip on a Mac? Try this:

7z x -so file.tar.xz | tar xf -
1

unar is quite a nice simple program and easy to type, to unarchive almost any format including 7z and RAR

it seems to be written in (GNU) Objective-C and so requires installation of some gnustep (GNU's Objective-C implementation) libraries (gnustep-base-runtime and libgnustep-base1.25)

if you use --install-suggests or have configured apt to install suggested packages, unar will suggest and install many GUI GNUStep programs which are not what you want

sudo apt install --no-install-suggests unar 
unar linux-source.tar.xz

it will create the output directory linux-source automatically.

cat
  • 1,712