10

I know how to gunzip a file to a selected location.

But when it comes to utilizing all CPU power, many consider pigz instead of gzip. So, the question is how do I unpigz (and untar) a *.tar.gz file to a specific directory?

Neurotransmitter
  • 2,883
  • 2
  • 19
  • 30
  • http://superuser.com/questions/348205/how-do-i-unzip-a-tar-gz-archive-to-a-specific-destination – Petr Skocik Apr 27 '15 at 19:25
  • 1
    The `-I` (compression program) to tar might work. If it doesn't, you can decompress to stdin and untar the stdin stream with the `-C` switch or `cd` to the target directory. – Petr Skocik Apr 27 '15 at 19:28

1 Answers1

16

I found three solutions:

  1. With GNU tar, using the awesome -I option:

    tar -I pigz -xvf /path/to/archive.tar.gz -C /where/to/unpack/it/
    
  2. With a lot of Linux piping (a "geek way"):

    unpigz < /path/to/archive.tar.gz | tar -xvC /where/to/unpack/it/
    
  3. More portable (to other tar implementations):

    unpigz < /path/to/archive.tar.gz | (cd /where/to/unpack/it/ && tar xvf -)
    

(You can also replace tar xvf - with pax -r to make it POSIX-compliant, though not necessarily more portable on Linux-based systems.)

Credits go to @PSkocik for a proper direction, @Stéphane Chazelas for the 3rd variant and to the author of this answer.

Neurotransmitter
  • 2,883
  • 2
  • 19
  • 30
  • As far as I can see, "tar -I" only works as a compression option. Also, pigz will only use a maximum of 2 cores while decompressing - it's not a parallel operation. – Simon B Jun 16 '21 at 08:50