wget命令詳解
它用在命令列下。對於Linux使用者是必不可少的工具,尤其對於網路管理員,經常要下載一些軟體或從遠端伺服器恢復備份到本地伺服器。如果我們使用虛擬主機,處理這樣的事務我們只能先從遠端伺服器下載到我們電腦磁碟,然後再用ftp工具上傳到伺服器。這樣既浪費時間又浪費精力,那不沒辦法的事。而到了Linux VPS,它則可以直接下載到伺服器而不用經過上傳這一步。wget工具體積小但功能完善,它支援斷點下載功能,同時支援FTP和HTTP下載方式,支援代理伺服器和設定起來方便簡單。下面我們以例項的形式說明怎麼使用wget。
首先安裝wget
1 [root@network test]# yum install -y wget
檢視幫助手冊
1 [root@network test]# wget --help
1 GNU Wget 1.14,非互動式的網路檔案下載工具。 2 用法: wget [選項]... [URL]... 3 4 長選項所必須的引數在使用短選項時也是必須的。 5 6 啟動: 7 -V, --version 顯示 Wget 的版本資訊並退出。 8 -h, --help 列印此幫助。 9 -b, --background 啟動後轉入後臺。 10 -e, --execute=COMMAND 執行一個“.wgetrc”風格的命令。 11 12 日誌和輸入檔案: 13 -o, --output-file=FILE 將日誌資訊寫入 FILE。 14 -a, --append-output=FILE 將資訊新增至 FILE。 15 -d, --debug 列印大量除錯資訊。 16 -q, --quiet 安靜模式 (無資訊輸出)。 17 -v, --verbose 詳盡的輸出 (此為預設值)。 18 -nv, --no-verbose 關閉詳盡輸出,但不進入安靜模式。 19 --report-speed=TYPE Output bandwidth as TYPE. TYPE can be bits. 20 -i, --input-file=FILE 下載本地或外部 FILE 中的 URLs。 21 -F, --force-html 把輸入檔案當成 HTML 檔案。 22 -B, --base=URL 解析與 URL 相關的 23 HTML 輸入檔案 (由 -i -F 選項指定)。 24 --config=FILE Specify config file to use. 25 26 下載: 27 -t, --tries=NUMBER 設定重試次數為 NUMBER (0 代表無限制)。 28 --retry-connrefused 即使拒絕連線也是重試。 29 -O, --output-document=FILE 將文件寫入 FILE。 30 -nc, --no-clobber skip downloads that would download to 31 existing files (overwriting them). 32 -c, --continue 斷點續傳下載檔案。 33 --progress=TYPE 選擇進度條型別。 34 -N, --timestamping 只獲取比本地檔案新的檔案。 35 --no-use-server-timestamps 不用伺服器上的時間戳來設定本地檔案。 36 -S, --server-response 列印伺服器響應。 37 --spider 不下載任何檔案。 38 -T, --timeout=SECONDS 將所有超時設為 SECONDS 秒。 39 --dns-timeout=SECS 設定 DNS 查尋超時為 SECS 秒。 40 --connect-timeout=SECS 設定連線超時為 SECS 秒。 41 --read-timeout=SECS 設定讀取超時為 SECS 秒。 42 -w, --wait=SECONDS 等待間隔為 SECONDS 秒。 43 --waitretry=SECONDS 在獲取檔案的重試期間等待 1..SECONDS 秒。 44 --random-wait 獲取多個檔案時,每次隨機等待間隔 45 0.5*WAIT...1.5*WAIT 秒。 46 --no-proxy 禁止使用代理。 47 -Q, --quota=NUMBER 設定獲取配額為 NUMBER 位元組。 48 --bind-address=ADDRESS 繫結至本地主機上的 ADDRESS (主機名或是 IP)。 49 --limit-rate=RATE 限制下載速率為 RATE。 50 --no-dns-cache 關閉 DNS 查尋快取。 51 --restrict-file-names=OS 限定檔名中的字元為 OS 允許的字元。 52 --ignore-case 匹配檔案/目錄時忽略大小寫。 53 -4, --inet4-only 僅連線至 IPv4 地址。 54 -6, --inet6-only 僅連線至 IPv6 地址。 55 --prefer-family=FAMILY 首先連線至指定協議的地址 56 FAMILY 為 IPv6,IPv4 或是 none。 57 --user=USER 將 ftp 和 http 的使用者名稱均設定為 USER。 58 --password=PASS 將 ftp 和 http 的密碼均設定為 PASS。 59 --ask-password 提示輸入密碼。 60 --no-iri 關閉 IRI 支援。 61 --local-encoding=ENC IRI (國際化資源識別符號) 使用 ENC 作為本地編碼。 62 --remote-encoding=ENC 使用 ENC 作為預設遠端編碼。 63 --unlink remove file before clobber. 64 65 目錄: 66 -nd, --no-directories 不建立目錄。 67 -x, --force-directories 強制建立目錄。 68 -nH, --no-host-directories 不要建立主目錄。 69 --protocol-directories 在目錄中使用協議名稱。 70 -P, --directory-prefix=PREFIX 以 PREFIX/... 儲存檔案 71 --cut-dirs=NUMBER 忽略遠端目錄中 NUMBER 個目錄層。 72 73 HTTP 選項: 74 --http-user=USER 設定 http 使用者名稱為 USER。 75 --http-password=PASS 設定 http 密碼為 PASS。 76 --no-cache 不在伺服器上快取資料。 77 --default-page=NAME 改變預設頁 78 (預設頁通常是“index.html”)。 79 -E, --adjust-extension 以合適的副檔名儲存 HTML/CSS 文件。 80 --ignore-length 忽略頭部的‘Content-Length’區域。 81 --header=STRING 在頭部插入 STRING。 82 --max-redirect 每頁所允許的最大重定向。 83 --proxy-user=USER 使用 USER 作為代理使用者名稱。 84 --proxy-password=PASS 使用 PASS 作為代理密碼。 85 --referer=URL 在 HTTP 請求頭包含‘Referer: URL’。 86 --save-headers 將 HTTP 頭儲存至檔案。 87 -U, --user-agent=AGENT 標識為 AGENT 而不是 Wget/VERSION。 88 --no-http-keep-alive 禁用 HTTP keep-alive (永久連線)。 89 --no-cookies 不使用 cookies。 90 --load-cookies=FILE 會話開始前從 FILE 中載入 cookies。 91 --save-cookies=FILE 會話結束後儲存 cookies 至 FILE。 92 --keep-session-cookies 載入並儲存會話 (非永久) cookies。 93 --post-data=STRING 使用 POST 方式;把 STRING 作為資料傳送。 94 --post-file=FILE 使用 POST 方式;傳送 FILE 內容。 95 --content-disposition 當選中本地檔名時 96 允許 Content-Disposition 頭部 (尚在實驗)。 97 --content-on-error output the received content on server errors. 98 --auth-no-challenge 傳送不含伺服器詢問的首次等待 99 的基本 HTTP 驗證資訊。 100 101 HTTPS (SSL/TLS) 選項: 102 --secure-protocol=PR choose secure protocol, one of auto, SSLv2, 103 SSLv3, TLSv1, TLSv1_1 and TLSv1_2. 104 --no-check-certificate 不要驗證伺服器的證書。 105 --certificate=FILE 客戶端證書檔案。 106 --certificate-type=TYPE 客戶端證書型別,PEM 或 DER。 107 --private-key=FILE 私鑰檔案。 108 --private-key-type=TYPE 私鑰檔案型別,PEM 或 DER。 109 --ca-certificate=FILE 帶有一組 CA 認證的檔案。 110 --ca-directory=DIR 儲存 CA 認證的雜湊列表的目錄。 111 --random-file=FILE 帶有生成 SSL PRNG 的隨機資料的檔案。 112 --egd-file=FILE 用於命名帶有隨機資料的 EGD 套接字的檔案。 113 114 FTP 選項: 115 --ftp-user=USER 設定 ftp 使用者名稱為 USER。 116 --ftp-password=PASS 設定 ftp 密碼為 PASS。 117 --no-remove-listing 不要刪除‘.listing’檔案。 118 --no-glob 不在 FTP 檔名中使用萬用字元展開。 119 --no-passive-ftp 禁用“passive”傳輸模式。 120 --preserve-permissions 保留遠端檔案的許可權。 121 --retr-symlinks 遞迴目錄時,獲取連結的檔案 (而非目錄)。 122 123 WARC options: 124 --warc-file=FILENAME save request/response data to a .warc.gz file. 125 --warc-header=STRING insert STRING into the warcinfo record. 126 --warc-max-size=NUMBER set maximum size of WARC files to NUMBER. 127 --warc-cdx write CDX index files. 128 --warc-dedup=FILENAME do not store records listed in this CDX file. 129 --no-warc-compression do not compress WARC files with GZIP. 130 --no-warc-digests do not calculate SHA1 digests. 131 --no-warc-keep-log do not store the log file in a WARC record. 132 --warc-tempdir=DIRECTORY location for temporary files created by the 133 WARC writer. 134 135 遞迴下載: 136 -r, --recursive 指定遞迴下載。 137 -l, --level=NUMBER 最大遞迴深度 (inf 或 0 代表無限制,即全部下載)。 138 --delete-after 下載完成後刪除本地檔案。 139 -k, --convert-links 讓下載得到的 HTML 或 CSS 中的連結指向本地檔案。 140 --backups=N before writing file X, rotate up to N backup files. 141 -K, --backup-converted 在轉換檔案 X 前先將它備份為 X.orig。 142 -m, --mirror -N -r -l inf --no-remove-listing 的縮寫形式。 143 -p, --page-requisites 下載所有用於顯示 HTML 頁面的圖片之類的元素。 144 --strict-comments 用嚴格方式 (SGML) 處理 HTML 註釋。 145 146 遞迴接受/拒絕: 147 -A, --accept=LIST 逗號分隔的可接受的副檔名列表。 148 -R, --reject=LIST 逗號分隔的要拒絕的副檔名列表。 149 --accept-regex=REGEX regex matching accepted URLs. 150 --reject-regex=REGEX regex matching rejected URLs. 151 --regex-type=TYPE regex type (posix|pcre). 152 -D, --domains=LIST 逗號分隔的可接受的域列表。 153 --exclude-domains=LIST 逗號分隔的要拒絕的域列表。 154 --follow-ftp 跟蹤 HTML 文件中的 FTP 連結。 155 --follow-tags=LIST 逗號分隔的跟蹤的 HTML 標識列表。 156 --ignore-tags=LIST 逗號分隔的忽略的 HTML 標識列表。 157 -H, --span-hosts 遞迴時轉向外部主機。 158 -L, --relative 只跟蹤有關係的連結。 159 -I, --include-directories=LIST 允許目錄的列表。 160 --trust-server-names use the name specified by the redirection 161 url last component. 162 -X, --exclude-directories=LIST 排除目錄的列表。 163 -np, --no-parent 不追溯至父目錄。
1、使用 wget 下載單個檔案
以下的例子是從網路下載一個檔案並儲存在當前目錄
在下載的過程中會顯示進度條,包含(下載完成百分比,已經下載的位元組,當前下載速度,剩餘下載時間)。
1 wget http://cn.wordpress.org/wordpress-4.9.4-zh_CN.tar.gz
2、使用 wget -O 下載並以不同的檔名儲存
1 [root@network test]# wget https://cn.wordpress.org/wordpress-4.9.4-zh_CN.tar.gz 2 [root@network test]# ls 3 wordpress-4.9.4-zh_CN.tar.gz
我們可以使用引數-O來指定一個檔名:
1 wget -O wordpress.tar.gz http://cn.wordpress.org/wordpress-4.9.4-zh_CN.tar.gz
2 wordpress.tar.gz
3、使用 wget -c 斷點續傳
使用wget -c重新啟動下載中斷的檔案:
對於我們下載大檔案時突然由於網路等原因中斷非常有幫助,我們可以繼續接著下載而不是重新下載一個檔案
1 wget -c https://cn.wordpress.org/wordpress-4.9.4-zh_CN.tar.gz
4、使用 wget -b 後臺下載
對於下載非常大的檔案的時候,我們可以使用引數-b進行後臺下載
1 [root@network test]# wget -b https://cn.wordpress.org/wordpress-4.9.4-zh_CN.tar.gz 2 繼續在後臺執行,pid 為 1463。 3 將把輸出寫入至 “wget-log”。
你可以使用以下命令來察看下載進度
1 [root@network test]# tail -f wget-log 2 8550K .......... .......... .......... .......... .......... 96% 814K 0s 3 8600K .......... .......... .......... .......... .......... 97% 9.53M 0s 4 8650K .......... .......... .......... .......... .......... 98% 86.8M 0s 5 8700K .......... .......... .......... .......... .......... 98% 145M 0s 6 8750K .......... .......... .......... .......... .......... 99% 67.4M 0s 7 8800K .......... .......... .......... .......... .......... 99% 107M 0s 8 8850K .......... ......... 100% 1.95M=16s 9 10 2018-11-10 15:39:07 (564 KB/s) - 已儲存 “wordpress-4.9.4-zh_CN.tar.gz.2” [9082696/9082696])
5、偽裝代理名稱下載
有些網站能通過根據判斷代理名稱不是瀏覽器而拒絕你的下載請求。不過你可以通過–user-agent引數偽裝。
6、使用 wget –spider 測試下載連結
當你打算進行定時下載,你應該在預定時間測試下載連結是否有效。我們可以增加–spider引數進行檢查。
1 wget –spider URL 2 如果下載連結正確,將會顯示 3 4 wget –spider URL 5 Spider mode enabled. Check if remote file exists. 6 HTTP request sent, awaiting response… 200 OK 7 Length: unspecified [text/html] 8 Remote file exists and could contain further links, 9 but recursion is disabled — not retrieving. 10 這保證了下載能在預定的時間進行,但當你給錯了一個連結,將會顯示如下錯誤 11 12 wget –spider url 13 Spider mode enabled. Check if remote file exists. 14 HTTP request sent, awaiting response… 404 Not Found 15 Remote file does not exist — broken link!!!
你可以在以下幾種情況下使用spider引數:
1 定時下載之前進行檢查 2 間隔檢測網站是否可用 3 檢查網站頁面的死連結
7、使用 wget –tries 增加重試次數
如果網路有問題或下載一個大檔案也有可能失敗。wget預設重試20次連線下載檔案。如果需要,你可以使用–tries增加重試次數。
1 wget –tries=40 URL
8、使用 wget -i 下載多個檔案
1 首先,儲存一份下載連結檔案 2 3 cat > filelist.txt 4 url1 5 url2 6 url3 7 url4 8 接著使用這個檔案和引數-i下載 9 10 wget -i filelist.txt
9、使用 wget –mirror 映象網站
10、使用 wget –reject 過濾指定格式下載
你想下載一個網站,但你不希望下載圖片,你可以使用以下命令。
1 wget –reject=gif url
11、使用 wget -o 把下載資訊存入日誌檔案
你不希望下載資訊直接顯示在終端而是在一個日誌檔案,可以使用以下命令:
1 wget -o download.log URL
使用wget -O下載並以不同的檔名儲存(-O:下載檔案到對應目錄,並且修改檔名稱)
1 |
wget -O wordpress.zip http: //www .minjieren.com /download .aspx? id =1080
|
使用wget -b後臺下載
1 |
wget -b <a href= "http://www.minjieren.com/wordpress-3.1-zh_CN.zip" >http: //www .minjieren.com /wordpress-3 .1-zh_CN.zip< /a >
|
1 |
備註: 你可以使用以下命令來察看下載進度: tail -f wget-log
|
利用-spider: 模擬下載,不會下載,只是會檢查是否網站是否好著
1 |
[root@localhost ~] # wget --spider www.baidu.com #不下載任何檔案
|
模擬下載列印伺服器響應
1 |
[root@localhost ~] # wget -S www.baidu.com # 列印伺服器響應
|
設定指定次數
1 2 |
[root@localhost ~] # wget -r --tries=2 www.baidu.com (指定嘗試2次,2次後不再嘗試)
[root@localhost ~] # wget -r --tries=2 -q www.baidu.com (指定嘗試,且不列印中間結果)
|