tar --use-compress-program在OSX上被破坏了

时间:2016-01-12 05:56:43

标签: macos tar

我在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.

我读了manual of tar,并且不知道为什么它不起作用。

我注意到即使tar --use-compress-program=gzip -xf test.tgz也会产生相同的错误。那么这是OSX的tar实现的错误吗?

注意:我知道管道样式pigz -d test.tgz | tar -xf有效,在这种情况下我也可以使用调用内置gzip的tar -xf test.tgz。但我只想确认它是否是一个错误。

3 个答案:

答案 0 :(得分:2)

该程序按设计工作:其命令行中没有规定传递使用gzip进行解压缩所需的选项。您应该使用包装的gzcat,例如

来代替“gzip”进行解压缩
tar --use-compress-program gzip -cf foo.compressed foo
tar --use-compress-program gzcat -tf foo.compressed

快速检查表明这不起作用:

tar --use-compress-program 'gzip -d' -tf foo.compress

虽然这可能会改变一些时间(这是可行的,但没有完成)。

根据pigz的manual page,它有unpigz,这是你可以用于那个程序。

答案 1 :(得分:0)

这是BSD tar和GNU tar之间的问题。

我通过从自制软件安装gnu-tar并将其放置在路径上来解决此问题。

在超级用户上看到以下类似问题:https://superuser.com/questions/318809/linux-os-x-tar-incompatibility-tarballs-created-on-os-x-give-errors-when-unt

答案 2 :(得分:-1)

在linux上我将gzip重命名为gzip.sav并与pigz建立了一个软链接,因此tar,dolphin,yum以及任何其他调用gzip的程序实际上都称为pigz