tar.gz 是否对大文件进行有效的文件压缩?

tar.gz 是否对大文件进行有效的文件压缩?

我想显着压缩 ~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:
$

相关内容