149
149
当使用tar -zcvf时,如何指定压缩程度?
我在工作中经常gzip目录。我通常做的是
tar -zcvf file.tar.gz /path/to/directory
有没有办法在这里指定压缩级别?我想使用最好的压缩方式,即使需要更多的时间来压缩。
我在工作中经常gzip目录。我通常做的是
tar -zcvf file.tar.gz /path/to/directory
有没有办法在这里指定压缩级别?我想使用最好的压缩方式,即使需要更多的时间来压缩。
不使用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 的评论修正了管道命令行。
现代版本的 tar 支持 xz 归档格式(GNU tar,自 2009 年 1.22,Busybox 自 2010 年 1.17.0)。
它基于 lzma2 ,有点像 gz 的 7-Zip 版本。如果你能接受需要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
还有一个选项是使用-I指定压缩程序。这可以包括压缩级别选项。
tar -I 'gzip -9' -cvf file.tar.gz /path/to/directory