2014-07-27 98 views
1

我有一個bash腳本從ftp服務器下載一些文件。問題是有時curl會隨機返回錯誤6(無法解析主機)!我可以通過網頁瀏覽器打開ftp,沒有任何問題。我還注意到,大多數錯誤發生在第一次下載。任何想法?curl偶爾會返回錯誤(6)

此外,我想知道我怎樣才能使捲曲時,這些錯誤會出現我用

代碼重試下載:

curl -m 60 --retry 10 --retry-delay 10 --ftp-method multicwd -C - ftp://some_address/some_file --output ./some_file 

注:我也嘗試過的代碼,而不--ftp法multicwd

OS:6.5 CentOS的64位

+0

_「大多數錯誤發生在第一次下載。任何想法」_可能是因爲主機地址放在緩存的某處。本地網絡上的FTP服務器?在VPN上?在網上?你有沒有試過在http://superuser.com或http://serverfault.com上提問? –

+0

@SylvainLeroux ftp服務器不在本地網絡或VPN上,它在互聯網上(ftp://ftp.ncep.noaa.gov)。我沒有在任何提及的網站上提出我的問題。 – gnome

回答

1

while [ "$ret" != "0" ]; do curl [your options]; ret=$?; sleep 5; done

+0

即使下載成功,也會延遲5秒。 –

+0

隨時用'[「$ ret」!=「0」] && sleep 5'來代替'sleep 5'。 – Cyrus

1

假設這些是服務器和/或DNS的過渡問題,循環可能會有所幫助。這是很少使用until環路特別好的情況下(?):

until curl [your options]; do sleep 5; done 

此外,如果使用curl是不是強制性的,也許wget可能更適合於「不可靠」的網絡連接。從

GNU Wget的是從 網絡非交互式下載文件的免費工具。它支持HTTP,HTTPS和FTP協議,以及通過HTTP代理檢索 。

[...]

Wget的已被設計爲魯棒性通過慢速或不穩定的網絡連接;如果由於網絡問題導致下載失敗,它將繼續重試,直到檢索到整個文件。如果服務器支持 regetting,它將指示服務器從停止的地方繼續下載。

+0

謝謝。我也用過wget,但它的表現完全像捲曲!我的意思是返回錯誤爲「無法解析主機」 – gnome

+0

@gnome對。由於這可能是名稱解析的問題,「wget」不會有太大的幫助。 –