一、wget簡介
wget是一個從網絡上自動下載文件的自由工具,支持通過HTTP、HTTPS、FTP三個最常見的TCP/IP協議下載,并可以使用HTTP代理。
二、wget缺陷
我們以下載jdk為例,
[root@AY1112270623249c0e095 ~]# wget http://download.oracle.com/otn-pub/java/jdk/7u10-b18/jdk-7u10-linux-i586.rpm
--2013-01-12 18:21:14-- http://download.oracle.com/otn-pub/java/jdk/7u10-b18/jdk-7u10-linux-i586.rpm
正在解析主機 download.oracle.com... 23.67.244.19, 23.67.244.43
Connecting to download.oracle.com|23.67.244.19|:80... 已連接。
已發出 HTTP 請求,正在等待回應... 302 Moved Temporarily
位置:https://edelivery.oracle.com/otn-pub/java/jdk/7u10-b18/jdk-7u10-linux-i586.rpm [跟隨至新的 URL]
--2013-01-12 18:21:16-- https://edelivery.oracle.com/otn-pub/java/jdk/7u10-b18/jdk-7u10-linux-i586.rpm
正在解析主機 edelivery.oracle.com... 23.15.138.174
Connecting to edelivery.oracle.com|23.15.138.174|:443... 已連接。
已發出 HTTP 請求,正在等待回應... 302 Moved Temporarily
位置:http://download.oracle.com/errors/download-fail-1505220.html [跟隨至新的 URL]
--2013-01-12 18:21:17-- http://download.oracle.com/errors/download-fail-1505220.html
Connecting to download.oracle.com|23.67.244.19|:80... 已連接。
已發出 HTTP 請求,正在等待回應... 200 OK
長度:5307 (5.2K) [text/html]
Saving to: `download-fail-1505220.html'
我以為這么快,結果這只是幻覺,連續試了好幾次,還是這個結果,于是到網上查看,原來wget不只是重定向。參考地址:http://www.iteye.com/topic/1125585
三、wget下載jdk,解決wget缺陷
1、基于wget重定向問題,我們可以“欺騙服務器”,即添加一些參數
root@AY1112270623249c0e095 ~]#wget --no-cookie --header "Cookie: gpw_e24=http%3A%2F%2Fwww.oracle.com%2F" http://download.oracle.com/otn-pub/java/jdk/7u10-b18/jdk-7u10-linux-i586.rpm
然后把下載下來的jdk改名
mv jdk-7u7-linux-* jdk-7u10-linux-i586.rpm
2.如果出現Unable to establish SSL connection的話,在wget后面加上--no-check-certificate. www.2cto.com
完整語句:
不管什么方法,解決問題就是好方法。
四、命令詳解
命令格式
wget [options] [URL]
啟動類參數
這一類參數主要提供軟件的一些基本信息。
-V,--version 顯示軟件版本號然后退出;
-h,--help顯示軟件幫助信息;
-e,--execute=COMMAND 執行一個 “.wgetrc”命令
以上每一個功能有長短兩個參數,長短功能一樣,都可以使用。需要注意的是,這里的-e參數是執行一個.wgettrc的命令,.wgettrc命令其實是一個參數列表,直接將軟件需要的參數寫在一起就可以了。
文件處理參數
這類參數定義軟件log文件的輸出方式等。
-o,--output-file=FILE 將軟件輸出信息保存到文件;
-a,--append-output=FILE將軟件輸出信息追加到文件;
-d,--debug顯示輸出信息;
-q,--quiet 不顯示輸出信息;
-i,--input-file=FILE 從文件中取得URL;
例1:下載首頁并且顯示下載信息
wget -d
例2:下載首頁并且不顯示任何信息
wget -q
例3:下載filelist.txt中所包含的鏈接的所有文件
wget -i filelist.txt
wget -np -m -l 5 不下載本站所鏈接的其它站點內容,5級目錄結構
下載參數
下載參數定義下載重復次數、保存文件名等。
-t,--tries=NUMBER 是否下載次數(0表示無窮次)
-O --output-document=FILE保存下載日志到文件FILE
-nc, --no-clobber 不要覆蓋已經存在的文件
-N,--timestamping只下載比本地新的文件
-T,--timeout=SECONDS 設置超時時間
-Y,--proxy=on/off 關閉代理
例:下載的首頁并將下載過程中的的輸入信息保存到test.htm文件中
wget -O test.html
目錄參數
目錄參數主要設置下載文件保存目錄與原來文件(服務器文件)的目錄對應關系;
-nd --no-directories 不建立目錄
-x,--force-directories 強制建立目錄
可能現在我們對這里的目錄還不是很了解,我們來看一個舉例
例:下載的首頁,并且保持網站結構
wget -x
HTTP參數
HTTP參數設置一些與HTTP下載有關的屬性。
--http-user=USER設置HTTP用戶
--http-passwd=PASS設置HTTP密碼
--proxy-user=USER設置代理用戶
--proxy-passwd=PASS設置代理密碼
以上參數主要設置HTTP和代理的用戶、密碼;
遞歸參數設置
在下載一個網站或者網站的一個目錄的時候,我們需要知道的下載的層次,這些參數就可以設置。
-r,--recursive 下載整個網站、目錄(小心使用)
-l,--level=NUMBER 下載層次
例:下載整個網站
wget -r
遞歸允許與拒絕選項參數
下載一個網站的時候,為了盡量快,有些文件可以選擇下載,比如圖片和聲音,在這里可以設置。
-A,--accept=LIST 可以接受的文件類型
-R,--reject=LIST拒絕接受的文件類型
-D,--domains=LIST可以接受的域名,用逗號分隔
--exclude-domains=LIST拒絕的域名,用逗號分隔
-L,--relative 下載關聯鏈接
--follow-ftp 只下載FTP鏈接
-H,--span-hosts 可以下載外面的主機
-I,--include-directories=LIST允許的目錄
-X,--exclude-directories=LIST 拒絕的目錄