天天看點

wget——優秀的下載下傳工具

wget是一個指令行工具,用于批量下載下傳檔案,支援HTTP和FTP。究竟比其他的工具好在哪裡?看看内容吧 :)

wget基本上所有的Linux版本都自己帶了,但是有多少人在用呢?呵呵,如果你沒有用過,不妨試試。Windows下面的使用者可以使用GNUwin32的項目,wget,基本功能完全一緻。好吧,我們來以幾個簡單的例子看看wget的威力。

如果我們想下載下傳ftp裡面某個目錄裡面的所有檔案,我們也可以不用ftp這個笨蛋,呵呵,可以享受cute ftp等圖形化工具的拖一個目錄的輕松了。如

wget -r [url]ftp://10.8.8.8/movie/[/url]

呵呵,等吧!下完了,發覺有些不對勁,怎麼出來個10.8.8.8的目錄,進去看看,又是一個movie,哦,wget将目錄結構和網站标題都給記錄下來了,不要??沒有問題!比如說還是這個例子

wget -r -nd [url]ftp://10.8.8.8/movie/[/url]

結果什麼目錄都沒有了,faint!怎麼會這樣?呵呵,你如果想要這樣就讓它這樣吧,否則使用

wget -r -nH [url]ftp://10.8.8.8/movie/[/url]

恩?movie也不要?OK,那就這樣

wget -r -nH --cut-dirs=1 [url]ftp://10.8.8.8/movie/[/url]

這有什麼用啊?cuteftp比他好用多了,而且,你這斷了線能連嗎?呵呵,不好意思,可以連

wget -c -r -nH --cut-dirs=1 [url]ftp://10.8.8.8/movie/[/url]

但是cuteftp能做下面的事情嗎?比如,現在很多網站使用Apache建站,并不提供ftp服務,但是Apache有一個indexing功能,可以

提供一個類似于ftp的界面,好多檔案我想下啊,怎麼辦?由于是HTTP協定,CuteFTP無能為力了,倒是flash get等有什麼get

all這種功能,不知道他們對于目錄處理怎麼樣。但是wget一點問題都沒有,不信?我們拿CTAN為例(例子并不恰當,CTAN有FTP服務),我們下

載這裡面所有的宏包,呵呵

wget -r -k [url]http://www.ctan.org/tex-archive/macros/latex/[/url]

-k表示将連接配接轉換為本地連接配接。但是現在同樣有上面的問題啊,那就把你需要的加上吧,另外也許你根本不需要向下走那麼多層,比如,我們就要到第二層,那麼

wget -r -l2 -k [url]http://www.ctan.org/tex-archive/macros/latex/[/url]

現在新的問題是,由于網頁有一個排序功能,很讨厭,因為下載下傳的時候把網頁重複了好多次,那麼我們可使用-A和-R開關控制下載下傳類型,并且可以使用通配符,呵呵,現在随心所欲了吧

wget -r -R "*.htm*\?*" -k [url]http://www.ctan.org/tex-archive/macros/latex/[/url]

這次沒有那種網頁了吧?-R的意義在于拒絕下載下傳比對類型的檔案,-A表示僅僅接受的檔案類型,如-A "*.gif"将僅下載下傳gif圖檔,如果有多個允許或者不允許,可以使用,分開。

那麼,我們現在在使用代理伺服器,怎麼辦呢?呵呵,很高興你選擇了wget,你可以使用它的配置檔案,環境變量來利用代理。這裡推薦使用環境變量,如在

bash裡面我們可以把天天用的proxy加到.bash_profile裡面,這是Linux标準寫法(很多軟體都用的,什麼apt-get,yum等

等)

export http_proxy=http://10.20.30.40:8080

然後,proxy就預設打開了,如果需要暫時關閉,可以使用

wget --proxy=off -r -k [url]http://www.ctan.org/tex-archive/macros/latex/[/url]

當然,寫一個.wgetrc檔案也可以,該檔案可以從/usr/local/etc裡面找到,裡面有很詳細的注釋,我就不多說了。

下載下傳網頁的時候比較麻煩的事情是,有的網頁被同時指向了很多遍,那麼為了避免多次下載下傳,我們使用

wget -nc -r -k [url]http://www.ctan.org/tex-archive/macros/latex/[/url]

可以避免這件事情。為了不被有的連接配接指向非[url]http://www.ctan.org/tex-archive/macros/latex/[/url]内層目錄,我們還應該加上

wget -nc -np -r -k [url]http://www.ctan.org/tex-archive/macros/latex/[/url]

避免下載下傳非該目錄裡面的檔案,這也避免了到不同的host上面去。當然,如果你希望有這個功能,在多個host之間跳來跳去的下載下傳,可以使用

wget -nc -np -H -r -k [url]http://www.ctan.org/tex-archive/macros/latex/[/url]

使得可以在多個host之間span,同時-I和-X可以使得我們僅僅跟蹤某些目錄或者不跟蹤某些目錄。如果某些HTML裡面你需要的東西不是由<a>這種東西作出來的,你就得使用--follow-tags和--ignore-tags了。

嘿,我有個檔案裡面都是連接配接,怎麼辦?要是不是html你隻需要

wget -i your.file

如果是,那也不繁

wget -F -i your.file

繼續閱讀