我有200MB文件要下载。我不想通过将URL传递给cURL直接下载它(因为我的大学阻止了超过150MB的请求)。 因此,我可以通过将范围参数传递给cURL来下载10MB的数据块。但我不知道要下载多少10MB的块。在cURL中是否有一种方法可以无限期地下载数据。更像是
while(下一个字节存在) 下载字节;
谢谢:)
答案 0 :(得分:2)
命令行curl允许您指定要下载的范围,因此对于最大150meg,您可以执行类似
的操作curl http://example.com/200_meg_file -r 0-104857600 > the_file
curl http://example.com/200_meg_file -r 104857601-209715200 >> the_file
等等,直到整个内容被下载,一次抓取100meg块并将每个块附加到本地副本。
答案 1 :(得分:1)
Curl已经能够恢复下载。就像这样跑:
$> curl -C - $url -o $output_file
当然,这本身就不知道何时停止。但是编写一个包装器会非常容易。像这样:
#!/bin/bash
url="http://someurl/somefile"
out="outfile"
touch "$out"
last_size=-1
while [ "`du -b $out | sed 's/\W.*//'`" -ne "$last_size" ]; do
curl -C - "$url" -o "$out"
last_size=`du -b $out | sed 's/\W.*//'`
done
我应该注意curl输出一个有趣的错误:
curl: (18) transfer closed with outstanding read data remaining
然而,我在一个相当大的ISO文件上测试了这个,并且即使显示上述错误,md5仍然匹配。