当我将 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 的通用性更强,因为它可以在更多平台上运行,但我认为可能是下载的结构给它带来了麻烦。