I gzip directories very often at work. What I normally do is
tar -zcvf file.tar.gz /path/to/directory
Is there a way to specify the compression level here? I want to use the best compression possible even if it takes more time to compress.
|
I gzip directories very often at work. What I normally do is
Is there a way to specify the compression level here? I want to use the best compression possible even if it takes more time to compress. |
|||
|
|
|
Instead of using the gzip flag for tar, gzip the files manually after the tar process, then you can specify the compression level for the gzip program:
Or you could use:
The -9 in the gzip command line tells gzip to use the maximum possible compression level (default is -6). Edit: Fixed pipe command line based on @depesz comment. |
|||||||||
|
assuming you're using bash. Generally, set GZIP environment variable to "-9", and run tar normally. Also - if you really want best compression, don't use gzip. Use lzma or 7z. And when using gzip (which is good idea for various of reasons anyway) consider using |
|||||||||
|
|
Modern versions of tar support the xz archive format (GNU tar, since 1.22 in 2009, Busybox since 1.17.0 in 2010). It's based on lzma2, kind of like a 7-Zip version of gz. This gives better compression if you are ok with the requirement of needing xz support.
I just found out here (basically a dupe of this question, but in the Unix stackexchange) that there is also a XZ_OPT=-9 environment variable to control the XZ compression level similar to the GZIP one in the other post.
|
||||
|
|
Matrix Mole's second solution could be slightly shortened:
When calling tar, option 'f' states that the output is a file. Setting it to '-' (stdout) makes tar write its output to stdout which is the default behavior without both 'f' and '-'. |
|||
|
|