2013-11-01 33 views
11

我正在使用curl在Linux中。我正在ftp服務器中下載文件的一部分(使用-r選項),但是我的連接不好,它總是中斷。我想寫一個腳本,當我再次連接時恢復下載。如何在curl中自動恢復中斷下載?

我用這個命令,但它不工作:

until curl -r 666-9999 -C - --retry 999 -o "path/to/file" "ftp:/path/to/remote/file"; do :; done 

回答

8

的wget已用於該用途的情況下,專門建造的。從手冊頁:

Wget has been designed for robustness over slow or unstable network connections; 
if a download fails due to a network problem, it will keep retrying until the 
whole file has been retrieved. If the server supports regetting, it will 
instruct the server to continue the download from where it left off. 

wget幾乎可用於所有Linux發行版 - 它可能已經安裝在您的系統上。只需使用wget下載文件,它將重新建立網絡連接,直到文件完全傳輸。

+0

難道一個文件的wget的支持部分下載(如在捲曲-r選項)? –

+2

根據手冊頁,它不支持僅下載文件的一部分,但'-c'標誌允許繼續下載。 –

+0

據我所知,它不支持,它只支持恢復部分下載的文件,如韋恩所說。你爲什麼需要這個? wget將負責下載整個文件(並且只有您尚未下載的部分)。 – sjaensch

1
curl -L -O your_url 

採取這將下載文件。

現在讓我們假設你的連接中斷;

curl -L -O -C - your_url 

這將繼續從最後一個字節下載下載

從手冊頁:

使用「-C - 」告訴捲曲自動找出/如何恢復轉讓。然後它使用給定的輸出/輸入文件來弄清楚。