GNU GZIP 环境变量已弃用,如何通过 tar 控制 ZLIB 压缩?

问题描述 投票:0回答:5

目前我有一个使用

GZIP
环境变量设置压缩的脚本。

使用 gzip 1.8 我收到警告:

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

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

当前命令:

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

compression gzip tar
5个回答
36
投票

您可以使用以下方式指定压缩程序:

-I
/
--use-compress-program=COMMAND

所以原来的命令:

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

变成:

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

来自这个答案


4
投票

取决于操作系统及其附带的

tar
版本。如果是 BSD 和/或 macOS,您可以:

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

否则,您可以将压缩阶段掌握在自己手中:

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

1
投票

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


1
投票

某些旧版本的 tar 不支持

-I
选项来指定压缩命令。所以旧版本不能与
-I 'gzip -9'
之类的东西一起使用。

更便携、更可靠的解决方案是使用管道自行处理压缩,如其他答案中提到的。


0
投票

我在

/usr/local/bin/gzip
创建了这个脚本:

#!/bin/sh -eu
exec /usr/bin/gzip "$GZIP" "$@"

它使环境变量像以前一样工作。

© www.soinside.com 2019 - 2024. All rights reserved.