不推荐使用 GNU GZIP 环境变量,如何通过 tar 控制 ZLIB 压缩?

With GNU GZIP environment variable deprecated, how to control ZLIB compression via tar?

目前我有一个使用 GZIP 环境变量设置压缩的脚本。

使用 gzip 1.8 我收到警告:

warning: GZIP environment variable is deprecated; use an alias or script

如何调用 tar 来设置压缩级别?

当前命令:

GZIP=-9 tar -zcf ...要压缩的文件...

取决于 OS 以及随附的 tar 版本。如果是 BSD and/or macOS,你可以:

tar --options gzip:compression-level=9 -czf foo.tar.gz foo.txt

否则,您可以自己掌握压缩阶段:

tar -cf - foo.txt | gzip -9 > foo.tar.gz

您可以使用以下方式指定压缩程序:-I / --use-compress-program=COMMAND

所以原来的命令:

GZIP=-9 tar -zcf ...要压缩的文件...

变为:

tar -I 'gzip -9' -cf ...要压缩的文件...

From this answer.

一些旧版本的 tar 确实支持 -I 选项来指定压缩命令,但是 tar 的旧版本不支持压缩命令的附加参数。所以旧版本在使用 -I 'gzip -9'.

之类的东西时会中断

一个更便携、更可靠的解决方案是使用另一个答案中提到的管道自己处理压缩。

pigz支持环境变量。它与 gzip 兼容,因此您可以使用名称 gzip.

安装它