I use

tar -cJvf resultfile.tar.xz files_to_compress

to create tar.xz and

tar -xzvf resultfile.tar.xz

to extract the archive in current directory. How to use multi threading in both cases? I don't want to install any utilities.

tar -c -I 'xz -9 -T0' -f archive.tar.xz [list of files and folders]

This compresses a list of files and directories into an .tar.xz archive. It does so by specifying the arguments to be passed to the xz subprocess, which compresses the tar archive.

This is done using the -I argument to tar, which tells tar what program to use to compress the tar archive, and what arguments to pass to it. The -9 tells xz to use maximum compression. The -T0 tells xz to use as many threads as you have CPUs.

| improve this answer | |
  • Can you explain this answer with words? It’s not immediately clear to me what part enables multi threading. – SethMMorton Sep 7 at 18:56
  • 1
    man xz -> -T – Artem S. Tashkinov Sep 7 at 19:23
  • tar -c = create a tar, -I 'xz -9 -T0' = use the compress program xz -9 -T0 (ultra, use as many threads as CPU cores), -f = write the tar to archive.tar.xz – ZiggyTheHamster Oct 14 at 1:40
  • On my TAR though, -I won't accept arguments, and expects a program only. Maybe you can make a simple shell script that is exec xz -9 -T0 $*? – ZiggyTheHamster Oct 14 at 1:51
  • This program is used for piping, so $* is redundant. Also, not sure why you want to use exec. – Artem S. Tashkinov Oct 14 at 9:39

For older tars, this works:

tar -cf -  list of files and folders| xz -9 -T0 >| archive.tar.T.xz
| improve this answer | |

You can use XZ_DEFAULTS or XZ_OPTS environment variables:

XZ_DEFAULTS is recommeded to be used as a system wide configuration, typically set in a shell initialization script.

XZ_OPTS is for passing options to xz when run by a script or tool, e.g. GNU tar. See man xz

Example: using multiple threads (-T0) and max compression level (-9):

XZ_OPT='-T0 -9' tar -cJf resultfile.tar.xz files_to_compress

Reference with a recent GNU tar on bash or derived shell

| improve this answer | |

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service, privacy policy and cookie policy

Not the answer you're looking for? Browse other questions tagged or ask your own question.