通过管道将 curl 传输到 tar 会崩溃,而通过 wget 传输到 tar 则不会崩溃

通过管道将 curl 传输到 tar 会崩溃,而通过 wget 传输到 tar 则不会崩溃

当我将 curl 传输到 tar 来处理大文件时,偶尔会遇到错误:

jeremyr@w6:~/pelias_metal/whosonfirst$ curl -s https://dist.whosonfirst.org/bundles/whosonfirst-data-postalcode-jp-latest.tar.bz2 | tar -xj --strip-components=1 --exclude=README.txt -C /mnt/data_science/pelias_w6/data/whosonfirst 

bzip2: Compressed file ends unexpectedly;
perhaps it is corrupted?  *Possible* reason follows.
bzip2: Inappropriate ioctl for device
        Input file = (stdin), output file = (stdout)

然而,这似乎没问题:

jeremyr@w6:~/pelias_metal/whosonfirst$ wget -q -O - https://dist.whosonfirst.org/bundles/whosonfirst-data-postalcode-jp-latest.tar.bz2|tar -xj --strip-components=1 --exclude=README.txt -C /mnt/data_science/pelias_w6/data/whosonfirst
jeremyr@w6:~/pelias_metal/whosonfirst$

有人知道为什么会这样吗?

答案1

Wget 和 Curl 类似,但是 wget 以递归方式下载内容——几乎是按照目录结构,而 Curl 则不是。这可能是原因。

Curl 的通用性更强,因为它可以在更多平台上运行,但我认为可能是下载的结构给它带来了麻烦。

相关内容