超級強悍的下載之工具curl(轉)

post0發表於2007-08-10
超級強悍的下載之工具curl(轉)[@more@]

Mandrake Linux 9.1就要向我們走來了,我有點等不及了。先下rc2的iso檔案來看看,但由於我現在上網的時候有限,我就想著怎麼樣下載ISO檔案。但用號稱linux的下FlashGet的nt下載還是不夠快。

從網站下載諸如iso這樣的大型檔案時,即便對方能提供1MB/s的下載速率,其等待過程也是令人煩惱的,而Linux下也好像目前並沒有什麼成熟的多執行緒下載工具。即便是Windows下的某些著名軟體也拿“每IP只限一個連線”的站點沒辦法。新出的FlashGet 1.3支援對各個下載執行緒使用不同的代理,則實際上就可以同時分多塊部分從那種小氣的站點下大檔案了

不過呢,這沒有考慮到現今ftp站點的冗餘備份特性:同一個iso很可能在多個站點上都有映象,我們能不能對此特點加以利用呢?

我們採用超級強悍的下載工具curl,它好像不是多執行緒的,但我們用shell來控制多個程式配合工作。沒有用過這個工具的不妨安裝一下:

程式碼:

# rpm -q curl

#curl-7.9.4-4mdk

下面我們以下載Mandrake Linux 9.1 rc2的第一張iso為例來介紹其使用方法。經過採點,找到了三個可用的地址,分別標為url1~url3.

程式碼:

# cat 1.sh

#!/bin/bash

url1=ftp://mirrors.kernel.org/mandrake-iso/i586/

MandrakeLinux-9.1rc2-CD1.i586.iso

url2=ftp://mandrake.redbox.cz/Mandrake-iso/i586/MandrakeLinux-9.1rc2-CD1.i586.iso

url3=ftp://ftp.uninett.no/pub/linux/Mandrake/Mandrake-iso/i586/

MandrakeLinux-9.1rc2-CD1.i586.iso

curl -r 0-199999999 -o inst.1 ?$url1 &

curl -r 200000000-399999999 -o inst.2 ?$url2 &

curl -r 400000000- -o inst.3 ?$url3 &

echo "TODO: cat inst.2 >> inst.1; cat inst.3 >> inst.1"

echo "THEN: mv inst.1 MandrakeLinux-9.1rc2-CD1.i586.iso"

上面這幾行命令應該很容易看懂。我執行了一下,很快就拿到了三塊檔案碎片,如果下載完成後,你在當前的目錄下看到的還是inst.[1,3]這個三個檔案,那可能還沒有合拼到,你合併下就可以了。

程式碼:

cat inst.2 >> inst.1

cat inst.3 >> inst.1

mv inst.1 MandrakeLinux-9.1rc2-CD1.i586.iso

拼接後拿md5一算,

程式碼:

md5sum MandrakeLinux-9.1rc2-CD1.i586.iso

342862f7a2da34b6d9d772d6bdf91b4d

哈哈,雜湊值跟他們的一致。Done

當然,如果你的網路足夠快,沒有必要這麼折騰,不過,我還是喜歡這樣做。呵呵當然啦,你還能可分得更詳細,比如分為5段下載,對應不同的ftp,你就修改下上面的那個Shell Script就可以了。對於詳細的使用curl,你還是看看它的Man頁吧。

呵呵,我只下載了Mandrake linux 9.1rc的第一個iso檔案,也試驗裝了下,感覺其中的中文字型還是做得很粗糙,不過,其它的還算可以。要玩就等正式版本出來的時候再玩吧。

   哈哈,其實不只是Mandrkae可以這樣做,其它的發行版本也是一樣的,你要找好幾個ftp的下載地址就可以了。同時也能出了下載大型iso的一點方案。爽吧,curl,超cool強悍的下載工具

來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/8225414/viewspace-940596/,如需轉載,請註明出處,否則將追究法律責任。

相關文章