[轉]wget 命令簡介

wget是一個從網絡上自動下載文件的自由工具。它支持HTTP,HTTPS和FTP協議,可以使用HTTP代理.
wget 可以跟蹤HTML頁面上的鏈接依次下載來創建遠程服務器的本地版本,完全重建原始站點的目錄結構。這又常被稱作"遞歸下載"。在遞歸下載的時候,wget 遵循Robot Exclusion標準(/robots.txt). wget可以在下載的同時,將鏈接轉換成指向本地文件,以方便離線瀏覽。
wget 非常穩定,它在帶寬很窄的情況下和不穩定網絡中有很強的適應性.如果是由于網絡的原因下載失敗,wget會不斷的嘗試,直到整個文件下載完畢。如果是服務 器打斷下載過程,它會再次聯到服務器上從停止的地方繼續下載。這對從那些限定了鏈接時間的服務器上下載大文件非常有用。

wget的常見用法:

基本的語法是:

wget [options] "URL" 

用""引起來可以避免因URL中有特殊字符造成的下載出錯。
下面就結合具體的例子來說明一下wget的用法。

1、下載整個http或者ftp站點。
使用-x會強制建立服務器上一模一樣的目錄,如果使用-nd參數,那么服務器上下載的所有內容都會加到本地當前目錄。

wget -r http://www.yoursite.com/here

這個命令會按照遞歸的方法,下載服務器上所有的目錄和文件,實質就是下載整個網站。這個命令一定要小心使用,因為在下載的時候,被下載網站指向的所有地址 同樣會被下載,因此,如果這個網站引用了其他網站,那么被引用的網站也會被下載下來!基于這個原因,這個參數不常用。可以用-l number參數來指定下載的層次。例如只下載兩層,那么使用 -l 2 。
要是您想制作鏡像站點,那么可以使用-m參數,例如:

wget -m http://www.yoursite.com/here

這時wget會自動判斷合適的參數來制作鏡像站點。此時,wget會登錄到服務器上,讀入robots.txt并按robots.txt的規定來執行。

2、斷點續傳。

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的使用格式

Usage: wget [OPTION]... [URL]...
  • 用wget做站點鏡像:
wget -r -p -np -k http://dsec.pku.edu.cn/~usr_name/

或者

wget -m http://dsec.pku.edu.cn/~usr_name/
  • 在不穩定的網絡上下載一個部分下載的文件,以及在空閑時段下載
wget -t 0 -w 31 -c http://dsec.pku.edu.cn/BBC.avi -o down.log &

或者從filelist讀入要下載的文件列表

wget -t 0 -w 31 -c -B ftp://dsec.pku.edu.cn/linuxsoft -i filelist.txt -o down.log &

上面的代碼還可以用來在網絡比較空閑的時段進行下載。我的用法是:在mozilla中將不方便當時下載的URL鏈接拷貝到內存中然后粘貼到文件filelist.txt中,在晚上要出去系統前執行上面代碼的第二條。

  • 使用代理下載
wget -Y on -p -k https://sourceforge.net/projects/wvware/

代理可以在環境變量或wgetrc文件中設定
在環境變量中設定代理

export PROXY=http://211.90.168.94:8080/

在~/.wgetrc中設定代理

http_proxy = http://proxy.yoyodyne.com:18023/
ftp_proxy = http://proxy.yoyodyne.com:18023/

wget各種選項分類列表

  • 啟動
   -V,      --version            顯示wget的版本后退出
   -h,      --help               打印語法幫助
   -b,      --background         啟動后轉入后臺執行
   -e,      --execute=COMMAND    執行`.wgetrc'格式的命令,wgetrc格式參見/etc/wgetrc或~/.wgetrc
  • 記錄和輸入文件
   -o,      --output-file=FILE      把記錄寫到FILE文件中
   -a,      --append-output=FILE    把記錄追加到FILE文件中
   -d,      --debug                 打印調試輸出
   -q,      --quiet                 安靜模式(沒有輸出)
   -v,      --verbose               冗長模式(這是缺省設置)
   -nv,     --non-verbose           關掉冗長模式,但不是安靜模式
   -i,      --input-file=FILE       下載在FILE文件中出現的URLs
   -F,      --force-html            把輸入文件當作HTML格式文件對待
   -B,      --base=URL              將URL作為在-F -i參數指定的文件中出現的相對鏈接的前綴
            --sslcertfile=FILE      可選客戶端證書
            --sslcertkey=KEYFILE    可選客戶端證書的KEYFILE
            --egd-file=FILE         指定EGD socket的文件名
  • 下載
    --bind-address=ADDRESS    指定本地使用地址(主機名或IP,當本地有多個IP或名字時使用)
   -t,      --tries=NUMBER            設定最大嘗試鏈接次數(0 表示無限制).
   -O       --output-document=FILE    把文檔寫到FILE文件中
   -nc,     --no-clobber              不要覆蓋存在的文件或使用.#前綴
   -c,      --continue                接著下載沒下載完的文件
            --progress=TYPE           設定進程條標記
   -N,      --timestamping            不要重新下載文件除非比本地文件新
   -S,      --server-response         打印服務器的回應
            --spider                  不下載任何東西
   -T,      --timeout=SECONDS         設定響應超時的秒數
   -w,      --wait=SECONDS            兩次嘗試之間間隔SECONDS秒
            --waitretry=SECONDS       在重新鏈接之間等待1...SECONDS秒
            --random-wait             在下載之間等待0...2*WAIT秒
   -Y,      --proxy=on/off            打開或關閉代理
   -Q,      --quota=NUMBER            設置下載的容量限制
            --limit-rate=RATE         限定下載輸率
  • 目錄
   -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.
         --http-passwd=PASS     設定http密碼為 PASS.
   -C,   --cache=on/off         允許/不允許服務器端的數據緩存 (一般情況下允許).
   -E,   --html-extension       將所有text/html文檔以.html擴展名保存
         --ignore-length        忽略 `Content-Length'頭域
         --header=STRING        在headers中插入字符串 STRING
         --proxy-user=USER      設定代理的用戶名為 USER
         --proxy-passwd=PASS    設定代理的密碼為 PASS
         --referer=URL          在HTTP請求中包含 `Referer: URL'頭
   -s,   --save-headers         保存HTTP頭到文件
   -U,   --user-agent=AGENT     設定代理的名稱為 AGENT而不是 Wget/VERSION.
         --no-http-keep-alive   關閉 HTTP活動鏈接 (永遠鏈接).
         --cookies=off          不使用 cookies.
         --load-cookies=FILE    在開始會話前從文件 FILE中加載cookie
         --save-cookies=FILE    在會話結束后將 cookies保存到 FILE文件中
  • FTP 選項
   -nr,  --dont-remove-listing    不移走 `.listing'文件
   -g,   --glob=on/off            打開或關閉文件名的 globbing機制
         --passive-ftp            使用被動傳輸模式 (缺省值).
         --active-ftp             使用主動傳輸模式
         --retr-symlinks          在遞歸的時候,將鏈接指向文件(而不是目錄)
  • 遞歸下載
   -r,   --recursive           遞歸下載--慎用!
   -l,   --level=NUMBER        最大遞歸深度 (inf 或 0 代表無窮).
         --delete-after        在現在完畢后局部刪除文件
   -k,   --convert-links       轉換非相對鏈接為相對鏈接
   -K,   --backup-converted    在轉換文件X之前,將之備份為 X.orig
   -m,   --mirror              等價于 -r -N -l inf -nr.
   -p,   --page-requisites     下載顯示HTML文件的所有圖片
  • 遞歸下載中的包含和不包含(accept/reject)
   -A,   --accept=LIST                 分號分隔的被接受擴展名的列表
   -R,   --reject=LIST                 分號分隔的不被接受的擴展名的列表
   -D,   --domains=LIST                分號分隔的被接受域的列表
         --exclude-domains=LIST        分號分隔的不被接受的域的列表
         --follow-ftp                   跟蹤HTML文檔中的FTP鏈接
         --follow-tags=LIST            分號分隔的被跟蹤的HTML標簽的列表
   -G,   --ignore-tags=LIST            分號分隔的被忽略的HTML標簽的列表
   -H,   --span-hosts                  當遞歸時轉到外部主機
   -L,   --relative                    僅僅跟蹤相對鏈接
   -I,   --include-directories=LIST    允許目錄的列表
   -X,   --exclude-directories=LIST    不被包含目錄的列表
   -np,  --no-parent                   不要追溯到父目錄
wget -S --spider url 不下載只顯示過程
最后編輯于
?著作權歸作者所有,轉載或內容合作請聯系作者
平臺聲明:文章內容(如有圖片或視頻亦包括在內)由作者上傳并發布,文章內容僅代表作者本人觀點,簡書系信息發布平臺,僅提供信息存儲服務。

推薦閱讀更多精彩內容

  • Spring Cloud為開發人員提供了快速構建分布式系統中一些常見模式的工具(例如配置管理,服務發現,斷路器,智...
    卡卡羅2017閱讀 134,837評論 18 139
  • everyday:linux wget 功能說明 wget是一個下載文件的工具,它用于命令行下。可以通過它,下載一...
    并肩走天涯閱讀 600評論 0 2
  • 下面,就給大家介紹這些CentOS常用命令。 一:使用CentOS常用命令查看cpu more/proc/cpui...
    guiwuzhe閱讀 2,532評論 1 25
  • 如果你想知道你的服務器正在做干什么,你就需要了解一些基本的命令,一旦你精通了這些命令,那你就是一個專業的 Linu...
    七寸知架構閱讀 10,917評論 1 71
  • 這是1937年8月28日一張真實的照片,天黑沉沉的,太陽被層層烏云和硝煙籠罩著。 上海火車南站還是人山人海,人們排...
    五三胡連海閱讀 203評論 0 0