ZSTD compression level with tar

I've been using zstd more and more for general compression. Using it with tar is pretty straight forward:

tar -I zstd -cvpf /tmp/etc.tar.zst /etc

This does not allow you to set the compression ratio however. After some digging I found an environment variable that controls the default compression level. If you run tar like this you can change the default compression level.

ZSTD_CLEVEL=19 tar -I zstd -cvpf /tmp/etc.tar.zst /etc

GZip has a similar variable, but it will allow any command line variable (not just compression ratio).

GZIP=-9 tar -cvzpf /tmp/etc.tar.gz /etc

Update: You can also use ZSTD_NBTHREADS to use more CPU cores.

Tags:
Leave A Reply - 3 Replies
Replies
December 11th 2020 - Tudor Georgescu

It has to be:

ZSTD_CLEVEL=19 tar -I zstd -cvpf /tmp/etc.tar.gz /etc

Otherwise, it will be saved to the file -I.

April 15th 2021 - Rishabh Arya

We can specify the compression level within the command itself:

tar -I "zstd -19" -cvpf /tmp/etc.tar.zst /etc

October 28th 2024 - A Davis

The use of -p here is superfluous -- it only applies to extraction of the archive.

All content licensed under the Creative Commons License