2011-04-07 20 views
2

我有200MB文件下載。我不想直接通過將URL傳遞給cURL來下載它(因爲我的大學阻止超過150MB的請求)。 因此,我可以通過將範圍參數傳遞給cURL來以10MB塊的形式下載數據。但我不知道要下載多少個10MB的塊。有沒有一種方法可以無限期地下載數據。更像無限期請求數據curl

while(next byte present) download byte;

謝謝:)

回答

2

命令行卷曲,您可以指定一個範圍內下載,所以你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

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: (18) transfer closed with outstanding read data remaining 

不過我測試了一個相當大的ISO文件,雖然上述的MD5還匹配了,甚至顯示錯誤。

+0

感謝您的快速回復。但是使用-C,cURL正在請求我的學校防火牆阻止它的整個文件:( – Aditya 2011-04-07 02:25:57

+0

你是說學校看到從服務器返回的文件大小並在它甚至可以開始之前將其停止? – 2011-04-07 02:47:57

+0

對於遲到答覆,但是 – Aditya 2011-04-10 00:31:44