目前我有一个使用
GZIP
环境变量设置压缩的脚本。
使用 gzip 1.8 我收到警告:
warning: GZIP environment variable is deprecated; use an alias or script
如何调用 tar 来设置压缩级别?
当前命令:
GZIP=-9 tar -zcf
...要压缩的文件...
您可以使用以下方式指定压缩程序:
-I
/ --use-compress-program=COMMAND
。
所以原来的命令:
GZIP=-9 tar -zcf
...要压缩的文件...
变成:
tar -I 'gzip -9' -cf
...要压缩的文件...
取决于操作系统及其附带的
tar
版本。如果是 BSD 和/或 macOS,您可以:
tar --options gzip:compression-level=9 -czf foo.tar.gz foo.txt
否则,您可以将压缩阶段掌握在自己手中:
tar -cf - foo.txt | gzip -9 > foo.tar.gz
pigz支持环境变量。它与 gzip 兼容,因此您可以使用名称 gzip 安装它。
某些旧版本的 tar 不支持
-I
选项来指定压缩命令。所以旧版本不能与 -I 'gzip -9'
之类的东西一起使用。
更便携、更可靠的解决方案是使用管道自行处理压缩,如其他答案中提到的。
我在
/usr/local/bin/gzip
创建了这个脚本:
#!/bin/sh -eu
exec /usr/bin/gzip "$GZIP" "$@"
它使环境变量像以前一样工作。