wget命令行下載工具使用技巧

wget 使用技巧

wget 是一個命令行的下載工具

多數Linux發行版本都默認包含這個工具。如果沒有安裝可在 http: //www.gnu.org/software/wget/wget.html 下載最新版本,並使用如下命令編譯安裝:
# tar zxvf wget-1.9.1.tar.gz
# cd wget-1.9.1
# ./configure
# make
# make install

  • $ wget -r -np -nd http://example.com/packages/

這條命令可以下載 http://example.com 網站上 packages 目錄中的所有文件。其中,-np 的作用是不遍歷父目錄,-nd 表示不在本機重新創建目錄結構。

  • $ wget -r -np -nd --accept=iso http://example.com/centos-5/i386/

與上一條命令相似,但多加了一個 --accept=iso 選項,這指示 wget 僅下載 i386 目錄中所有擴展名爲 iso 的文件。你也可以指定多個擴展名,只需用逗號分隔即可。

  • $ wget -i filename.txt

此命令常用於批量下載的情形,把所有需要下載文件的地址放到 filename.txt 中,然後 wget 就會自動爲你下載所有文件了。

  • $ wget -c http://example.com/really-big-file.iso

這裏所指定的 -c 選項的作用爲斷點續傳。

  • $ wget -m -k (-H) http://www.example.com/

該命令可用來鏡像一個網站,wget 將對鏈接進行轉換。如果網站中的圖像是放在另外的站點,那麼可以使用 -H 選項。

下面就結合具體的例子來說明一下wget的用法。

1、下載整個http或者ftp站點。

wget http://place.your.url/here
這個命令可以將http://place.your.url/here 首頁下載下來。使用-x會強制建立服務器上一模一樣的目錄,如果使用-nd參數,那麼服務器上下載的所有內容都會加到本地當前目錄。

wget -r http://place.your.url/here
這個命令會按照遞歸的方法,下載服務器上所有的目錄和文件,實質就是下載整個網站。這個命令一定要小心使用,因爲在下載的時候,被下載網站指向的所有地址同樣會被下載,因此,如果這個網站引用了其他網站,那麼被引用的網站也會被下載下來!基於這個原因,這個參數不常用。可以用-l number參數來指定下載的層次。例如只下載兩層,那麼使用-l 2。

要是您想製作鏡像站點,那麼可以使用-m參數,例如:wget -m http://place.your.url/here
這時wget會自動判斷合適的參數來製作鏡像站點。此時,wget會登錄到服務器上,讀入robots.txt並按robots.txt的規定來執行。

2、斷點續傳。

當文件特別大或者網絡特別慢的時候,往往一個文件還沒有下載完,連接就已經被切斷,此時就需要斷點續傳。wget的斷點續傳是自動的,只需要使用-c參數,例如:
wget -c http://the.url.of/incomplete/file
使用斷點續傳要求服務器支持斷點續傳。-t參數表示重試次數,例如需要重試100次,那麼就寫-t 100,如果設成-t 0,那麼表示無窮次重試,直到連接成功。-T參數表示超時等待時間,例如-T 120,表示等待120秒連接不上就算超時。

3、批量下載。

如果有多個文件需要下載,那麼可以生成一個文件,把每個文件的URL寫一行,例如生成文件download.txt,然後用命令:wget -i download.txt
這樣就會把download.txt裏面列出的每個URL都下載下來。(如果列的是文件就下載文件,如果列的是網站,那麼下載首頁)

4、選擇性的下載。

可以指定讓wget只下載一類文件,或者不下載什麼文件。例如:
wget -m –reject=gif http://target.web.site/subdirectory
表示下載http://target.web.site/subdirectory,但是忽略gif文件。–accept=LIST 可以接受的文件類型,–reject=LIST拒絕接受的文件類型。

5、密碼和認證。

wget只能處理利用用戶名/密碼方式限制訪問的網站,可以利用兩個參數:
–http-user=USER設置HTTP用戶
–http-passwd=PASS設置HTTP密碼
對於需要證書做認證的網站,就只能利用其他下載工具了,例如curl。

6、利用代理服務器進行下載。

如果用戶的網絡需要經過代理服務器,那麼可以讓wget通過代理服務器進行文件的下載。此時需要在當前用戶的目錄下創建一個.wgetrc文件。文件中可以設置代理服務器:
http-proxy = 111.111.111.111:8080
ftp-proxy = 111.111.111.111:8080
分別表示http的代理服務器和ftp的代理服務器。如果代理服務器需要密碼則使用:
–proxy-user=USER設置代理用戶
–proxy-passwd=PASS設置代理密碼
這兩個參數。
使用參數–proxy=on/off 使用或者關閉代理。
wget還有很多有用的功能,需要用戶去挖掘。

例子:

可根據需要選擇用下面的參數:
$ wget -c -r -nd -np -k -L -p -A c,h www.xxx.org/pub/path/

-c   斷點續傳
-r   遞歸下載,下載指定網頁某一目錄下(包括子目錄)的所有文件
-nd 遞歸下載時不創建一層一層的目錄,把所有的文件下載到當前目錄
-np 遞歸下載時不搜索上層目錄,如wget -c -r www.xxx.org/pub/path/
沒有加參數-np,就會同時下載path的上一級目錄pub下的其它文件
-k   將絕對鏈接轉爲相對鏈接,下載整個站點後脫機瀏覽網頁,最好加上這個參數
-L   遞歸時不進入其它主機,如wget -c -r www.xxx.org/ 如果網站內有一個這樣的鏈接:
www.yyy.org,不加參數-L,就會像大火燒山一樣,會遞歸下載www.yyy.org網站
-p   下載網頁所需的所有文件,如圖片等
-A   指定要下載的文件樣式列表,多個樣式用逗號分隔
-i   後面跟一個文件,文件內指明要下載的URL

附錄:

命令格式:
wget [參數列表] [目標軟件、網頁的網址]
-V 版本信息
-h 幫助信息
-b 後臺執行Wget
-o filename 把記錄放在文件filename
-a filename 把記錄附加在文件filename
-d 顯示調試信息
-q 無輸出下載方式
-v 詳細的屏幕輸出(默認)
-nv 簡單的屏幕輸出
-i inputfiles 從文本文件內讀取地址列表
-F forcehtml 從html文件內讀取地址列表
-t number number次重試下載(0時爲無限次)
-O output document file 寫文件到文件
-nc 不覆蓋已有的文件
-c 斷點下傳
-N 時間時間戳。該參數指定wget只下載更新的文件,也就是說,與本地目錄中的對應文件的長度和最後修改日期一樣的文件將不被下載。
-S 顯示服務器響應
-T timeout 超時時間設置(單位秒)
-w time 重試延時(單位秒)
-Y proxy=on/off 是否打開代理
-Q quota=number 重試次數

目錄:
-nd –no-directories 不建立目錄.
-x, –force-directories 強制進行目錄建立的工作.
-nH, –no-host-directories 不建立主機的目錄.
-P, –directory-prefix=PREFIX 把檔案存到 PREFIX/…
–cut-dirs=NUMBER 忽略 NUMBER 個遠端的目錄元件.

HTTP 選項:
–http-user=USER 設 http 使用者爲 USER.
–http0passwd=PASS 設 http 使用者的密碼爲 PASS.
-C, –cache=on/off 提供/關閉快取伺服器資料 (正常情況爲提供).
–ignore-length 忽略 `Content-Length’ 標頭欄位.
–proxy-user=USER 設 USER 爲 Proxy 使用者名稱.
–proxy-passwd=PASS 設 PASS 爲 Proxy 密碼.
-s, –save-headers 儲存 HTTP 標頭成爲檔案.
-U, –user-agent=AGENT 使用 AGENT 取代 Wget/VERSION 作爲識別代號.

FTP 選項:
–retr-symlinks 取回 FTP 的象徵連結.
-g, –glob=on/off turn file name globbing on ot off.
–passive-ftp 使用 “passive” 傳輸模式.

使用遞迴方式的取回:
-r, –recursive 像是吸入 web 的取回 — 請小心使用!.
-l, –level=NUMBER 遞迴層次的最大值 (0 不限制).
–delete-after 刪除下載完畢的檔案.
-k, –convert-links 改變沒有關連的連結成爲有關連.
-m, –mirror 開啓適合用來映射的選項.
-nr, –dont-remove-listing 不要移除 `.listing’ 檔.

遞迴式作業的允許與拒絕選項:
-A, –accept=LIST 允許的擴充項目的列表
. -R, –reject=LIST 拒絕的擴充項目的列表.
-D, –domains=LIST 允許的網域列表.
–exclude-domains=LIST 拒絕的網域列表 (使用逗號來分隔).
-L, –relative 只跟隨關聯連結前進.
–follow-ftp 跟隨 HTML 文件裏面的 FTP 連結.
-H, –span-hosts 當開始遞迴時便到外面的主機.
-I, –include-directories=LIST 允許的目錄列表.
-X, –exclude-directories=LIST 排除的目錄列表.
-nh, –no-host-lookup 不透過 DNS 查尋主機.
-np, –no-parent 不追朔到起源目錄.





發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章