tar 通过管道传输到 curl:这看起来不像是 tar 存档

tar 通过管道传输到 curl:这看起来不像是 tar 存档
curl -L http://download.transmissionbt.com/files/transmission-2.80.tar.xz -s -o - | tar -xf -

错误:

tar: This does not look like a tar archive
tar: Skipping to next header
tar: Exiting with failure status due to previous errors

但是当我这样做时,它可以提取档案:

curl -LO http://download.transmissionbt.com/files/transmission-2.80.tar.xz
tar xf transmission-2.80.tar.xz

管道为何不通呢?

答案1

我认为你需要在你的管道中使用 选项。tar例如-J| tar -xJf -

-J选项告诉tar使用xz压缩。

tar xf transmission-2.80.tar.xz我认为,没有它也能起作用的原因-J在于该选项是tar根据文件扩展名推断出来的。

答案2

管道无法工作,因为二进制流没有以可识别的文件扩展名结尾。此特定情况下的二进制流使用 LZMA 压缩。tar 存档与某些 LZMA 压缩数据不同。这正是 tar 告诉您的内容。

如果您让它知道 tar 档案是使用哪种压缩类型(选项 J、j、z)创建的,它将首先使用该算法进行解压缩,并将解压缩的数据流识别为 tar 档案。

相关内容