Unpigz (and untar) to a specific directory

compressiongzipmultithreadingtar

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?

Best Answer

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.

Related Question