I received a huge .tar.gz file from a client that contains about 800 mb of image files (when uncompressed.) Our hosting company's ftp is seriously slow, so extracting all the files locally and sending them up via ftp isn't practical. I was able to ftp the .tar.gz file to our hosting site, but when I ssh into my directory and try using unzip, it gives me this error:

[esthers@clients locations]$ unzip community_images.tar.gz
Archive:  community_images.tar.gz
  End-of-central-directory signature not found.  Either this file is not a zipfile, or it constitutes one disk of a multi-part archive.  In the latter case the central directory and zipfile comment will be found on the last disk(s) of this archive.
note:  community_images.tar.gz may be a plain executable, not an archive
unzip:  cannot find zipfile directory in one of community_images.tar.gz or community_images.tar.gz.zip, and cannot find community_images.tar.gz.ZIP, period.

What command do I need to use to extract all the files in a .tar.gz file?

  • 407
  • 4
  • 10
  • 14,720
  • 13
  • 39
  • 51

8 Answers8


Type man tar for more information, but this command should do the trick:

tar -xvzf community_images.tar.gz

To explain a little further, tar collected all the files into one package, community_images.tar. The gzip program applied compression, hence the gz extension. So the command does a couple things:

  • f: this must be the last flag of the command, and the tar file must be immediately after. It tells tar the name and path of the compressed file.
  • z: tells tar to decompress the archive using gzip
  • x: tar can collect files or extract them. x does the latter.
  • v: makes tar talk a lot. Verbose output shows you all the files being extracted.

To extract into a custom folder, add the -C option with a folder name of your choice:

tar -xvzf community_images.tar.gz -C some_custom_folder_name
  • 28,605
  • 9
  • 52
  • 84
  • 26
    Reminds me of [xckd's article about tar.](https://xkcd.com/1168/) I have to come back every time. – mgarey Oct 03 '17 at 22:25
  • 71
    My mnemonic for this is: **x**tract **z**e **v** \*\*\*ing **f**iles. – Agargara Apr 04 '18 at 08:13
  • 1
    would it matter if z came before x? Or would it inteligently apply the expanders in the appropriate order, regardless? – ahnbizcad Jun 06 '18 at 17:58
  • 3
    @ahnbizcad order does not matter for most of the flags. the `-f` flag accepts an argument. i prefer to put it last, but `tar -f community_images.tar.gz -zxv` works just fine. – djeikyb Jun 07 '18 at 16:21
  • A tip, for BSD version of tar(OSX use it), -z flag is only required on the compress process, it will be ignored on extract process. – Zen Dec 05 '18 at 02:26
  • 3
    The full form of this command—which may be easier to remember—is `tar --extract --file="community_images.tar.gz" --gzip --verbose`. The quotation marks are optional if the filename doesn’t contain spaces. – Patrick Dark Feb 20 '19 at 08:07
  • It's very important that the `f` flag must be the last flag. for example, `-xfv` assumes that the file name is 'v'. Also, we don't need to specify the `z` flag, because it's default. – starriet Feb 18 '22 at 06:58

If you want the files to be extracted to a particular destination you can add -C /destination/path/
Make sure you make the directory first, in this case: ~/Pictures/Community


mkdir ~/Pictures/Community
tar xf community_images.tar.gz -C /home/emmys/Pictures/Community/

You can easily memorize it if you consider telling tar to e X tract a F ile

gif of process done at terminal

Note: Remember you can search inside man pages with ?+term to look for, and then n and N to go to the next or previous instance of the term you are looking for.

  • 3,367
  • 1
  • 20
  • 23

At some point tar was upgraded to auto-decompress. All you need now is:

tar xf community_images.tar.gz

The same explanation applies:

  • f: this must be the last flag of the command, and the tar file must be immediately after. It tells tar the name and path of the compressed file.
  • x: extract the files.

Note the lack of hyphen for the command flags. This is because most versions of tar allow both gnu and bsd style options (simplistically, gnu requires a hyphen, bsd doesn't).

  • 28,605
  • 9
  • 52
  • 84
  • 1
    Is there any documentation on this? I've been searching all over for a reference to this, I never use the -z flag and everything gets gzipped so I've been worried if I haven't been compressing my tarballs at all, haha. Thanks. – neurosnap Jul 10 '15 at 04:14
  • 2
    @neurosnap see the [gnu manual](https://www.gnu.org/software/tar/manual/tar.html#SEC134) and of the [bsd's manual](https://www.freebsd.org/cgi/man.cgi?query=tar&sektion=1&n=1) – djeikyb Jul 12 '15 at 20:49
  • 5
    Probably would have been better to edit your original answer. – Seth Jun 09 '16 at 18:04
  • 3
    @Seth it feels/felt distinct enough to be a separate answer, especially in context of the destructive edit that provoked it. I'll rethink it after work though, might be a simpler way to merge than I originally thought. – djeikyb Jun 09 '16 at 18:23
  • @djeikyb, does this simplification hold for `tar.gz` files only? If not, am I sure I'm not going to make a mess if use `tar xf` with any 'tar.*` file? BTW, the word should absolutely be spread! I'd also suggest @EmmyS to chose this as the accepted answer (after all @djeikyb, you gave both answers). – Enlico May 06 '17 at 08:43
  • 2
    @EnricoMariaDeAngelis bsd tar since at least 2004 and gnu tar since at least 2010 have supported auto-selecting a decompressor. it's possible no "recent" (this century? nineties+?) version of tar requires manually selecting a decompressor. – djeikyb Jun 02 '17 at 04:39

Remembering all flags for tar can be tedious. Obligatory XKCD:

enter image description here

Therefore I made my own little script in Python to do that. Quick, dirty, cp-like in usage:

#!/usr/bin/env python3
import tarfile,sys,os
tf = tarfile.open(name=sys.argv[1],mode='r:gz')
where = '.'
if len(sys.argv) == 3:
    where = sys.argv[2]

Use it as so:

myuntar.py archive.tar

See also similar script for unzipping zip archives.

Sergiy Kolodyazhnyy
  • 99,781
  • 19
  • 265
  • 469
  • 3
    :) only two tar flags to remember `-caf` for creating based on the filename and `-xf` for extracting (AFAIK works on every type of tar). – Videonauth Sep 20 '18 at 07:31
  • @Videonauth I know, it's not that complex, but for some reason I never remember these options. Maybe because I don't deal with archives often enough. – Sergiy Kolodyazhnyy Sep 20 '18 at 07:33
  • will this only do gzipped tar files? api docs mention a mode for reading with transparent compression; would that behave more like `tar xf `? – djeikyb Apr 13 '19 at 04:39
  • +1'ed because of the xkcd – Nathan Jun 14 '22 at 23:30

Quick Answer:

tar -xvf  <.tar file> or <.tar.xz file>
tar -xzvf <.tar.gz file>
tar -xjvf <.tar.bz2 file>


  • -v Verbosely list files processed.
  • -z Filter the archive through gzip.
  • -f Use archive file or device ARCHIVE.
  • -x Extract files from an archive.
  • -j bzip2.
  • tar -xf archive.tar # Extract all files from archive.tar.
Benyamin Jafari
  • 2,199
  • 3
  • 18
  • 30

In case you are not able to extract .tar.gz file using

tar -xvzf fileName.tar.gz

Try extracting using

tar xf fileName.tar.gz
  • 269
  • 2
  • 4
  • 15
  • 4
    if it is a gzipped tar file, the first command will always work. if it does not work, you do not have a gzipped tar file. the latter command is a great recommendation for folks who don't care what compression algorithm was used on their tar file. – djeikyb Mar 09 '17 at 02:37

You could do this too in first step:

gunzip community_images.tar.gz

Then you have the file: community_images.tar

Second step would be:

tar -xvf community_images.tar

And the *.tar file would be extracted.

  • 3,673
  • 6
  • 25
  • 38
  • This is the answer I was looking for....Everyone is talking about the tar.gz file... – Vish Feb 08 '21 at 08:04

tar xvf file.tar.gz

  • x for extract
  • v for verbose (list files)
  • f for filename is next

Any remotely modern version of tar should auto-detect that the archive is gzipped, and add "z" for you.

  • 31
  • 1