我通过自制程序在 Macbook Air (OS X 10.10.5) 上安装了 Pigz,以获得更好的压缩/解压缩性能。
为了压缩,我用了tar --use-compress-program=pigz -cf test.tgz test,没问题。
但解压命令,tar --use-compress-program=pigz -xf test.tgz输出错误:
tar: Unrecognized archive format
tar: Error exit delayed from previous errors.
或者有时输出:
tar: Unrecognized archive format
pigz: abort: write error on <stdout> (Broken pipe)
tar: Child process exited with status 32
tar: Error exit delayed from previous errors.
我阅读了tar 的手册,但不知道为什么它不起作用。
我注意到甚至tar --use-compress-program=gzip -xf test.tgz会产生相同的错误。那么这是 OSX 的 tar 实现的一个错误吗?
注意:我知道管道样式pigz -d test.tgz | tar -xf有效,在这种情况下我也可以只使用tar -xf test.tgz内置 gzip 调用。但我只是想确认一下是不是bug。
该程序按设计工作:其命令行中没有提供用于传递解压缩所需的选项的gzip规定。您应该使用包装的,而不是“gzip”来解压缩gzcat,例如,
tar --use-compress-program gzip -cf foo.compressed foo
tar --use-compress-program gzcat -tf foo.compressed
Run Code Online (Sandbox Code Playgroud)
快速检查表明这不起作用:
tar --use-compress-program 'gzip -d' -tf foo.compress
Run Code Online (Sandbox Code Playgroud)
尽管这可能会改变一段时间(这是可行的,但尚未完成)。
根据 Pigz 的手册页,它有unpigz,这是您可以用于该程序的内容。