1. 程式人生 > >linux wget 命令用法

linux wget 命令用法

Linux wget是一個下載檔案的工具,它用在命令列下。對於Linux使用者是必不可少的工具,尤其對於網路管理員,經常要下載一些軟體或從遠端伺服器恢復備份到本地伺服器。如果我們使用虛擬主機,處理這樣的事務我們只能先從遠端伺服器下載到我們電腦磁碟,然後再用ftp工具上傳到伺服器。這樣既浪費時間又浪費精力,那不沒辦法的事。而到了Linux VPS,它則可以直接下載到伺服器而不用經過上傳這一步。wget工具體積小但功能完善,它支援斷點下載功能,同時支援FTP和HTTP下載方式,支援代理伺服器和設定起來方便簡單。下面我們以例項的形式說明怎麼使用wget。 

  1.   1、使用wget下載單個檔案
  2.    
  3.   以下的例子是從網路下載一個檔案並儲存在當前目錄
  4.    
  5.   wget http://cn.wordpress.org/wordpress-3.1-zh_CN.zip
  6.    
  7.   在下載的過程中會顯示進度條,包含(下載完成百分比,已經下載的位元組,當前下載速度,剩餘下載時間)。
  8.    
  9.   2、使用wget -O下載並以不同的檔名儲存
  10.    
  11.   wget預設會以最後一個符合”/”的後面的字元來命令,對於動態連結的下載通常檔名會不正確。
  12.   錯誤:下面的例子會下載一個檔案並以名稱download.php?id=1080儲存
  13.    
  14.   wget http://www.centos.bz/download?id=1080
  15.   即使下載的檔案是zip格式,它仍然以download.php?id=1080命名。
  16.   正確:為了解決這個問題,我們可以使用引數-O來指定一個檔名:
  17.    
  18.   wget -O wordpress.zip http://www.centos.bz/download.php?id=1080
  19.    
  20.   3、使用wget –limit -rate限速下載
  21.   當你執行wget的時候,它預設會佔用全部可能的寬頻下載。但是當你準備下載一個大檔案,而你還需要下載其它檔案時就有必要限速了。
  22.    
  23.   wget –limit-rate=300k http://cn.wordpress.org/wordpress-3.1-zh_CN.zip
  24.    
  25.   4、使用wget -c斷點續傳
  26.   使用wget -c重新啟動下載中斷的檔案:
  27.    
  28.   wget -c http://cn.wordpress.org/wordpress-3.1-zh_CN.zip
  29.   對於我們下載大檔案時突然由於網路等原因中斷非常有幫助,我們可以繼續接著下載而不是重新下載一個檔案。需要繼續中斷的下載時可以使用-c引數。
  30.    
  31.   5、使用wget -b後臺下載
  32.   對於下載非常大的檔案的時候,我們可以使用引數-b進行後臺下載。
  33.    
  34.   wget -b http://cn.wordpress.org/wordpress-3.1-zh_CN.zip
  35.   Continuing in background, pid 1840.
  36.   Output will be written to `wget-log’.
  37.   你可以使用以下命令來察看下載進度
  38.    
  39.   tail -f wget-log
  40.    
  41.   6、偽裝代理名稱下載
  42.   有些網站能通過根據判斷代理名稱不是瀏覽器而拒絕你的下載請求。不過你可以通過–user-agent引數偽裝。
  43.    
  44.   wget –user-agent=”Mozilla/5.0 (Windows; U; Windows NT 6.1; en-US) AppleWebKit/534.16 (KHTML, like Gecko) Chrome/10.0.648.204 Safari/534.16″ 下載連結
  45.    
  46.   7、使用wget –spider測試下載連結
  47.   當你打算進行定時下載,你應該在預定時間測試下載連結是否有效。我們可以增加–spider引數進行檢查。
  48.    
  49.   wget –spider URL
  50.   如果下載連結正確,將會顯示
  51.    
  52.   wget –spider URL
  53.   Spider mode enabled. Check if remote file exists.
  54.   HTTP request sent, awaiting response… 200 OK
  55.   Length: unspecified [text/html]
  56.   Remote file exists and could contain further links,
  57.   but recursion is disabled — not retrieving.
  58.   這保證了下載能在預定的時間進行,但當你給錯了一個連結,將會顯示如下錯誤
  59.    
  60.   wget –spider url
  61.   Spider mode enabled. Check if remote file exists.
  62.   HTTP request sent, awaiting response… 404 Not Found
  63.   Remote file does not exist — broken link!!!
  64.   你可以在以下幾種情況下使用spider引數:
  65.    
  66.   定時下載之前進行檢查
  67.   間隔檢測網站是否可用
  68.   檢查網站頁面的死連結
  69.    
  70.   8、使用wget –tries增加重試次數
  71.   如果網路有問題或下載一個大檔案也有可能失敗。wget預設重試20次連線下載檔案。如果需要,你可以使用–tries增加重試次數。
  72.    
  73.   wget –tries=40 URL
  74.    
  75.   9、使用wget -i下載多個檔案
  76.   首先,儲存一份下載連結檔案
  77.    
  78.   cat > filelist.txt
  79.   url1
  80.   url2
  81.   url3
  82.   url4
  83.   接著使用這個檔案和引數-i下載
  84.    
  85.   wget -i filelist.txt
  86.    
  87.   10、使用wget –mirror映象網站
  88.   下面的例子是下載整個網站到本地。
  89.    
  90.   wget –mirror -p –convert-links -P ./LOCAL URL
  91.   –miror:開戶映象下載
  92.   -p:下載所有為了html頁面顯示正常的檔案
  93.   –convert-links:下載後,轉換成本地的連結
  94.   -P ./LOCAL:儲存所有檔案和目錄到本地指定目錄
  95.    
  96.   11、使用wget –reject過濾指定格式下載
  97.   你想下載一個網站,但你不希望下載圖片,你可以使用以下命令。
  98.    
  99.   wget –reject=gif url
  100.    
  101.   12、使用wget -o把下載資訊存入日誌檔案
  102.   你不希望下載資訊直接顯示在終端而是在一個日誌檔案,可以使用以下命令:
  103.    
  104.   wget -o download.log URL
  105.    
  106.   13、使用wget -Q限制總下載檔案大小
  107.   當你想要下載的檔案超過5M而退出下載,你可以使用以下命令:
  108.    
  109.   wget -Q5m -i filelist.txt
  110.   注意:這個引數對單個檔案下載不起作用,只能遞迴下載時才有效。
  111.    
  112.   14、使用wget -r -A下載指定格式檔案
  113.   可以在以下情況使用該功能
  114.    
  115.   下載一個網站的所有圖片
  116.   下載一個網站的所有視訊
  117.   下載一個網站的所有PDF檔案
  118.   wget -r -A.pdf url
  119.    
  120.   15、使用wget FTP下載
  121.   你可以使用wget來完成ftp連結的下載。
  122.   使用wget匿名ftp下載
  123.    
  124.   wget ftp-url
  125.    
  126.   使用wget使用者名稱和密碼認證的ftp下載
  127.    
  128.   wget –ftp-user=USERNAME –ftp-password=PASSWORD url




wget是在Linux下開發的開放原始碼的軟體,作者是Hrvoje Niksic,後來被移植到包括Windows在內的各個平臺上。它有以下功能和特點: 

(1)支援斷點下傳功能;這一點,也是網路螞蟻和FlashGet當年最大的賣點,現在,Wget也可以使用此功能,那些網路不是太好的使用者可以放心了; 
(2)同時支援FTP和HTTP下載方式;儘管現在大部分軟體可以使用HTTP方式下載,但是,有些時候,仍然需要使用FTP方式下載軟體; 
(3)支援代理伺服器;對安全強度很高的系統而言,一般不會將自己的系統直接暴露在網際網路上,所以,支援代理是下載軟體必須有的功能; 
(4)設定方便簡單;可能,習慣圖形介面的使用者已經不是太習慣命令行了,但是,命令列在設定上其實有更多的優點,最少,滑鼠可以少點很多次,也不要擔心是否錯點滑鼠; 
(5)程式小,完全免費;程式小可以考慮不計,因為現在的硬碟實在太大了;完全免費就不得不考慮了,即使網路上有很多所謂的免費軟體,但是,這些軟體的廣告卻不是我們喜歡的; 

wget雖然功能強大,但是使用起來還是比較簡單的,基本的語法是:wget [引數列表] URL。下面就結合具體的例子來說明一下wget的用法。 

    1.   1、下載整個http或者ftp站點。
    2.   wget http://place.your.url/here
    3.   這個命令可以將http://place.your.url/here 首頁下載下來。使用-x會強制建立伺服器上一模一樣的目錄,如果使用-nd引數,那麼伺服器上下載的所有內容都會加到本地當前目錄。
    4.    
    5.   wget -r http://place.your.url/here
    6.   這 個命令會按照遞迴的方法,下載伺服器上所有的目錄和檔案,實質就是下載整個網站。這個命令一定要小心使用,因為在下載的時候,被下載網站指向的所有地址同樣會被下載,因此,如果這個網站引用了其他網站,那麼被引用的網站也會被下載下來!基於這個原因,這個引數不常用。可以用-l number引數來指定下載的層次。例如只下載兩層,那麼使用-l 2。
    7.    
    8.   要是您想製作映象站點,那麼可以使用-m引數,例如:wget -m http://place.your.url/here
    9.   這時wget會自動判斷合適的引數來製作映象站點。此時,wget會登入到伺服器上,讀入robots.txt並按robots.txt的規定來執行。
    10.    
    11.   2、斷點續傳。
    12.   當檔案特別大或者網路特別慢的時候,往往一個檔案還沒有下載完,連線就已經被切斷,此時就需要斷點續傳。wget的斷點續傳是自動的,只需要使用-c引數,例如:
    13.   wget -c http://the.url.of/incomplete/file
    14.   使用斷點續傳要求伺服器支援斷點續傳。-t引數表示重試次數,例如需要重試100次,那麼就寫-t 100,如果設成-t 0,那麼表示無窮次重試,直到連線成功。-T引數表示超時等待時間,例如-T 120,表示等待120秒連線不上就算超時。
    15.    
    16.   3、批量下載。
    17.   如果有多個檔案需要下載,那麼可以生成一個檔案,把每個檔案的URL寫一行,例如生成檔案download.txt,然後用命令:wget -i download.txt
    18.   這樣就會把download.txt裡面列出的每個URL都下載下來。(如果列的是檔案就下載檔案,如果列的是網站,那麼下載首頁)
    19.    
    20.   4、選擇性的下載。
    21.   可以指定讓wget只下載一類檔案,或者不下載什麼檔案。例如:
    22.   wget -m –reject=gif http://target.web.site/subdirectory
    23.   表示下載http://target.web.site/subdirectory,但是忽略gif檔案。–accept=LIST 可以接受的檔案型別,–reject=LIST拒絕接受的檔案型別。
    24.    
    25.   5、密碼和認證。
    26.   wget只能處理利用使用者名稱/密碼方式限制訪問的網站,可以利用兩個引數:
    27.   –http-user=USER設定HTTP使用者
    28.   –http-passwd=PASS設定HTTP密碼
    29.   對於需要證書做認證的網站,就只能利用其他下載工具了,例如curl。
    30.    
    31.   6、利用代理伺服器進行下載。
    32.   如果使用者的網路需要經過代理伺服器,那麼可以讓wget通過代理伺服器進行檔案的下載。此時需要在當前使用者的目錄下建立一個.wgetrc檔案。檔案中可以設定代理伺服器:
    33.   http-proxy = 111.111.111.111:8080
    34.   ftp-proxy = 111.111.111.111:8080
    35.   分別表示http的代理伺服器和ftp的代理伺服器。如果代理伺服器需要密碼則使用:
    36.   –proxy-user=USER設定代理使用者
    37.   –proxy-passwd=PASS設定代理密碼
    38.   這兩個引數。
    39.   使用引數–proxy=on/off 使用或者關閉代理。
    40.   wget還有很多有用的功能,需要使用者去挖掘。
    41.    
    42.   附錄:
    43.    
    44.   命令格式:
    45.   wget [引數列表] [目標軟體、網頁的網址]
    46.    
    47.   -V,–version 顯示軟體版本號然後退出;
    48.   -h,–help顯示軟體幫助資訊;
    49.   -e,–execute=COMMAND 執行一個 “.wgetrc”命令
    50.    
    51.   -o,–output-file=FILE 將軟體輸出資訊儲存到檔案;
    52.   -a,–append-output=FILE將軟體輸出資訊追加到檔案;
    53.   -d,–debug顯示輸出資訊;
    54.   -q,–quiet 不顯示輸出資訊;
    55.   -i,–input-file=FILE 從檔案中取得URL;
    56.    
    57.   -t,–tries=NUMBER 是否下載次數(0表示無窮次)
    58.   -O –output-document=FILE下載檔案儲存為別的檔名
    59.   -nc, –no-clobber 不要覆蓋已經存在的檔案
    60.   -N,–timestamping只下載比本地新的檔案
    61.   -T,–timeout=SECONDS 設定超時時間
    62.   -Y,–proxy=on/off 關閉代理
    63.    
    64.   -nd,–no-directories 不建立目錄
    65.   -x,–force-directories 強制建立目錄
    66.    
    67.   –http-user=USER設定HTTP使用者
    68.   –http-passwd=PASS設定HTTP密碼
    69.   –proxy-user=USER設定代理使用者
    70.   –proxy-passwd=PASS設定代理密碼
    71.    
    72.   -r,–recursive 下載整個網站、目錄(小心使用)
    73.   -l,–level=NUMBER 下載層次
    74.    
    75.   -A,–accept=LIST 可以接受的檔案型別
    76.   -R,–reject=LIST拒絕接受的檔案型別
    77.   -D,–domains=LIST可以接受的域名
    78.   –exclude-domains=LIST拒絕的域名
    79.   -L,–relative 下載關聯連結
    80.   –follow-ftp 只下載FTP連結
    81.   -H,–span-hosts 可以下載外面的主機
    82.   -I,–include-directories=LIST允許的目錄
    83.   -X,–exclude-directories=LIST 拒絕的目錄
    84.    
    85.   中文文件名在平常的情況下會被編碼, 但是在 –cut-dirs 時又是正常的,
    86.   wget -r -np -nH –cut-dirs=3 ftp://host/test/
    87.   測試.txt
    88.   wget -r -np -nH -nd ftp://host/test/
    89.   %B4%FA%B8%D5.txt
    90.   wget “ftp://host/test/*”
    91.   %B4%FA%B8%D5.txt
    92.    
    93.   由於不知名的原因,可能是為了避開特殊檔名, wget 會自動將抓取檔名的部分用 encode_string 處理過, 所以該 patch 就把被 encode_string 處理成 “%3A” 這種東西, 用 decode_string 還原成 “:”,並套用在目錄與檔案名稱的部分,decode_string 是 wget 內建的函式。
    94.    
    95.   wget -t0 -c -nH -x -np -b -m -P /home/sunny/NOD32view/ http://downloads1.kaspersky-labs.com/ba