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 档案。