我想显着压缩 ~29GB 文件,并tar
在终端中使用如下命令:
tar cvzf file.tar.gz /path/to/directory
它将其压缩到~26GB,所以我在互联网上查找了最大压缩并执行了以下操作:
export GZIP=-9
env GZIP=-9 tar cvzf file.tar.gz /path/to/directory
但 tar.gz 文件大小在属性中显示约为 26GB 左右。我想这次它会被压缩到大约 10GB。我在这里错过了什么吗?
答案1
我永远不会使用默认的内置压缩比,如果我知道解包机能够提供几百 MB 的 RAM,我会使用xz
而不是gzip
.
所以我的建议是 tar
通过管道传输未压缩的输出xz -9
。
压缩时这需要更多的 CPU 时间,但解包所需的 CPU 时间只比gzip
.对于文本文件,这会导致压缩效果提高 25-30%。
答案2
是的,它确实。
您可能想尝试 tar 提供的其他一些压缩格式。在我的 Linux 机器上,GNU tar 提供了这种多样性。也就是说,如果gzip -9
仅实现 29GB->26GB,则其他压缩格式不太可能实现您所寻求的 29GB->10GB。
$ tar --help|grep -A16 Compression
Compression options:
-a, --auto-compress use archive suffix to determine the compression
program
-I, --use-compress-program=PROG
filter through PROG (must accept -d)
-j, --bzip2 filter the archive through bzip2
-J, --xz filter the archive through xz
--lzip filter the archive through lzip
--lzma filter the archive through lzma
--lzop
--no-auto-compress do not use archive suffix to determine the
compression program
-z, --gzip, --gunzip, --ungzip filter the archive through gzip
-Z, --compress, --uncompress filter the archive through compress
Local file selection:
$