Answers:
GZIP=-9 tar cvzf file.tar.gz /path/to/directory
假设您正在使用bash。通常,将GZIP环境变量设置为“ -9”,然后正常运行tar。
另外-如果您确实希望获得最佳压缩效果,请不要使用gzip。使用lzma或7z。
而且在使用gzip时(无论出于各种原因,这都是个好主意),请考虑使用pigzprogram而不是gzip。
GZIP_OPT,用法应该相同。
不用在tar中使用gzip标志,而是在tar处理之后手动gzip文件,然后可以为gzip程序指定压缩级别:
tar -cvf files.tar /path/to/file0 /path/to/file1 ; gzip -9 files.tar
或者您可以使用:
tar cvf - /path/to/file0 /path/to/file1 | gzip -9 - > files.tar.gz
gzip命令行中的-9告诉gzip使用最大可能的压缩级别(默认值为-6)。
编辑:修复了基于@depesz注释的管道命令行。
file.tar,因为gzip添加了“ .gz”扩展名。
f -?如果没有文件,则为stdin / out
现代版本的tar支持xz存档格式(GNU tar,自 2009年以来为1.22,而Busybox 自 2010年以来为1.17.0)。
它基于lzma2,有点像gz的7压缩版本。如果可以接受需要xz支持的需求,则可以提供更好的压缩效果。
tar -Jcvf file.tar.xz /path/to/directory
我刚刚在这里发现(基本上是这个问题的重复,但是在Unix stackexchange中),还有一个XZ_OPT = -9环境变量来控制XZ压缩级别,类似于另一篇文章中的GZIP。
XZ_OPT=-9 tar -Jcvf file.tar.xz /path/to/directory
tar cv /path/to/directory | gzip --best > file.tar.gz
这是Matrix Mole的第二种解决方案,但略有缩短:
调用tar时,option f指出输出是文件。将其设置为-(stdout)会使tar将其输出写入到stdout中,这是默认行为,不带f和-。
并且如gzip手册页所述,如果未指定文件,则gzip将根据标准输入进行压缩。有没有必要-在gzip呼叫。
选项--best(等效于-9)设置最高压缩级别。
xz和pixz。这是控制用于并行压缩的线程数的好方法,而无需创建中间的.tar文件。像这样tar -cv /path/to/dir | pixz -p4 > output.tpxz
top使用200%-400 $ CPU之间的任何地方观看和查看它。