Linux 命令之 wget -- 下载文件工具
文章目錄
- 一、命令介紹
- 二、命令語法
- 三、常用選項
- 四、命令示例
- (一)下載并以不同的文件名保存
- (二)下載單個文件
- (三)限速下載
- (四)斷點續傳
- (五)使用 wget 后臺下載
- (六)偽裝代理名稱下載
- (七)測試下載鏈接
- (八)增加重試連接的次數
- (九)下載多個文件
- (十)鏡像網站,即下載整個網站
- (十一)過濾指定格式下載
- (十二)把下載信息存入日志文件
- (十三)限制下載文件的總大小
- (十四)下載指定格式的文件
- (十五)匿名 FTP 下載
- (十六)用戶名和密碼認證的 FTP 下載
- (十七)用戶名和密碼認證的 HTTP 下載
一、命令介紹
wget 是在Linux下開發的開放源代碼的軟件,作者是 Hrvoje Niksic,后來被移植到包括 Windows 在內的各個平臺上。
wget 命令用來從指定的 URL 下載文件。wget 非常穩定,它在帶寬很窄的情況下和不穩定網絡中有很強的適應性,如果是由于網絡的原因下載失敗,wget 會不斷的嘗試,直到整個文件下載完畢。如果是服務器打斷下載過程,它會再次聯到服務器上從停止的地方繼續下載。這對從那些限定了鏈接時間的服務器上下載大文件非常有用。
wget 支持 HTTP,HTTPS 和 FTP 協議,可以使用 HTTP 代理。所謂的自動下載是指,wget 可以在用戶退出系統的之后在后臺執行。這意味這你可以登錄系統,啟動一個 wget 下載任務,然后退出系統,wget 將在后臺執行直到任務完成,相對于其它大部分瀏覽器在下載大量數據時需要用戶一直的參與,這省去了極大的麻煩。
沒有指定目錄,資源會默認下載到當前目錄下。
wget 主要特點:
支持斷點下傳功能
這一點,也是網絡螞蟻和 FlashGet 當年最大的賣點,現在,wget 也可以使用此功能,那些網絡不是太好的用戶可以放心了
同時支持 FTP 和 HTTP 下載方式
盡管現在大部分軟件可以使用HTTP方式下載,但是,有些時候,仍然需要使用FTP方式下載軟件
支持代理服務器
對安全強度很高的系統而言,一般不會將自己的系統直接暴露在互聯網上,所以,支持代理是下載軟件必須有的功能
二、命令語法
wget [參數選項] <URL地址>三、常用選項
| -a | --append-output<filename> |
| -o 或 --output-file<filename> | 把記錄寫到FILE文件中。例如,在指定的日志文件中記錄命令的執行過程信息 |
| -A<后綴名> | 指定要下載文件的后綴名,多個后綴名之間使用逗號進行分隔。就是指定要下載的文件格式,例如,只下載圖片、視頻等。 |
| -b 或 --background | wget 啟動后轉入后臺執行 |
| -B<URL> 或 --base<URL> | 將 URL 作為在 -F 或 -i 參數指定的文件中出現的相對鏈接的前綴 |
| -c 或 --continue | 接著下載沒下載完的文件 |
| -C<標志> | 設置服務器數據塊功能標志,on 為激活,off 為關閉,默認值為 on |
| -d 或 --debug | 調試模式運行指令,會輸出調試信息 |
| -D<域名列表> | 設置順著的域名列表,域名之間用“,”分隔 |
| -e<指令> 或 --execute<command> | 作為文件 .wgetrc 中的一部分執行指定的指令。即執行 .wgetrc 格式的命令,wgetrc 格式參見文件 /etc/wgetrc 或 ~/.wgetrc |
| -F 或 --force-html | 把輸入文件當作HTML格式文件對待 |
| -h 或 --help | 顯示指令幫助信息 |
| -i<filename> 或 --input-file<filename> | 從指定文件獲取要下載的 URL 地址 |
| -l<目錄列表> | 設置順著的目錄列表,多個目錄用“,”分隔 |
| -nc 或 --no-clobber | 不要覆蓋存在的文件或使用 .# 前綴 |
| -nv 或 --non-verbose | 關掉冗長模式,但不是安靜模式。下載時只顯示更新和出錯信息,但不顯示指令的詳細執行過程 |
| -q 或 --quiet | 安靜模式,不輸出命令相關的執行信息,即不顯示指令執行過程 |
| -nh | 不查詢主機名稱 |
| -v 或 --verbose | 冗長模式,即顯示命令的詳細執行過程,這是缺省的選項 |
| -V 或 --version | 顯示 wget 的版本信息后退出 |
| --sslcertfile | 可選客戶端證書 |
| --sslcertkey | 可選客戶端證書的KEYFILE |
| --egd-file | 指定 EGD socket 的文件名 |
| --bind-address | 指定本地使用地址(主機名或IP,當本地有多個IP或名字時使用) |
| -t<number> 或 --tries<number> | 設定最大嘗試鏈接次數(0 表示無限制) |
| -O 或 --output-document<filename> | 把文檔寫到 filename 文件中 |
| --progress<type> | 設定進程條標記 |
| -N 或 --timestamping | 不要重新下載文件除非比本地文件新 |
| -S 或 --server-response | 打印服務器的回應 |
| --spider | 不下載任何東西 |
| -T<seconds> 或 --timeout<seconds> | 設定響應超時的秒數 |
| -w<seconds> 或 --wait<seconds> | 兩次嘗試之間間隔的秒數 |
| --waitretry<seconds> | 在重新鏈接之間等待的秒數 |
| --random-wait<seconds> | 在下載之間等待的秒數 |
| -Y 或 --proxy<on/off> | 打開或關閉代理 |
| -Q<number> 或 --quota<number> | 設置下載的容量限制 |
| --limit-rate<rate> | 限定下載輸率 |
| -nd 或 --no-directories | 不創建目錄。遞歸下載時不創建一層一層的目錄,把所有的文件下載到當前目錄;不指定該選項默認按照資源在站點位置創建相應目錄 |
| -x 或 --force-directories | 強制創建目錄 |
| -nH 或 --no-host-directories | 不創建主機目錄 |
| -P<PREFIX> 或 --directory-prefix<PREFIX> | 將文件保存到目錄 PREFIX/… |
| --cut-dirs<NUMBER> | 忽略 NUMBER 層遠程目錄 |
| --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 文件中 |
| -nr或 --dont-remove-listing | 不移走 .listing 文件 |
| -g 或 --glob<on/off> | 打開或關閉文件名的 globbing 機制 |
| --passive-ftp | 使用被動模式PASV連接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,遞歸下載,遞歸深度無窮,但是不重新下載文件,除非比本地文件更新,不移走 .listing 文件 |
| -p 或 --page-requisites | 下載所有用于顯示 HTML 頁面的圖片之類的元素 |
| -A<LIST> 或 --accept<LIST> | 分號分隔的被接受擴展名的列表 |
| -R<LIST> 或 --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 | 不下載只顯示過程 |
四、命令示例
(一)下載并以不同的文件名保存
wget -O wordpress.zip http://www.jsdig.com/download.aspx?id=1080說明:
(二)下載單個文件
wget http://www.jsdig.com/testfile.zip(三)限速下載
wget --limit-rate=300k http://www.jsdig.com/testfile.zip當你執行 wget 的時候,它默認會占用全部可能的寬帶下載。但是當你準備下載一個大文件,而你還需要下載其它文件時就有必要限速了。
(四)斷點續傳
wget -c http://www.jsdig.com/testfile.zip需要繼續中斷的下載時可以使用 -c 參數。對于我們下載大文件時突然由于網絡等原因中斷非常有幫助,我們可以繼續接著下載而不是重新下載一個文件。
(五)使用 wget 后臺下載
wget -b http://www.jsdig.com/testfile.zipContinuing in background, pid 1840. Output will be written to `wget-log'.對于下載非常大的文件的時候,我們可以使用參數 -b 進行后臺下載,你可以使用以下命令來察看下載進度:
tail -f wget-log(六)偽裝代理名稱下載
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" http://www.jsdig.com/testfile.zip有些網站會判斷代理名稱不是瀏覽器而拒絕你的下載請求。不過你可以通過 --user-agent 參數偽裝。
(七)測試下載鏈接
當你打算進行定時下載,你應該在預定時間測試下載鏈接是否有效。我們可以使用選項 --spider 進行檢查。
wget --spider URL如果下載鏈接正確將會顯示如下信息:
Spider mode enabled. Check if remote file exists. HTTP request sent, awaiting response... 200 OK Length: unspecified [text/html] Remote file exists and could contain further links, but recursion is disabled -- not retrieving.這保證了下載能在預定的時間進行,如果你給錯了一個鏈接,將會顯示如下錯誤:
wget --spider url Spider mode enabled. Check if remote file exists. HTTP request sent, awaiting response... 404 Not Found Remote file does not exist -- broken link!!!你可以在以下幾種情況下使用 --spider 參數:
(八)增加重試連接的次數
wget --tries=40 URL下載大文件或者網絡不穩定時,經常會下載失敗,而 wget 默認重試20次連接下載文件。如果需要,你可以使用 --tries 增加重試次數。
(九)下載多個文件
首先,你要將多個下載鏈接保存到一個文件中,然后使用選項 -i 指定該文件。
wget -i filelist.txt(十)鏡像網站,即下載整個網站
wget --mirror -p --convert-links -P ./LOCAL URL說明:
(十一)過濾指定格式下載
下載一個網站,但你不希望下載圖片,可以使用這條命令:
wget --reject=gif url(十二)把下載信息存入日志文件
不希望下載信息直接顯示在終端而是在一個日志文件,可以使用這個命令:
wget -o download.log URL(十三)限制下載文件的總大小
下載配額選項 -Q,用來指定下載數據配額,下載數據超過了指定配額會停止下載。
例如,當下載的文件的總大小超過 10M 則停止下載:
wget -Q 10m -i filelist.txt如果不指定下載配額會下載文件 filelist.txt 所包含的所有 url,如果指定了下載配額為 10m,下載數據超過了 10m 會停止后面 url 的下載,但是,一個文件正在下載過程中下載數據超過了下載配額會繼續完成該文件的下載不會立即停止下載。
注意,該選項對于單個文件下載無效,只適用于多文件下載或遞歸下載
(十四)下載指定格式的文件
只下載 pdf,png 格式的文件:
wget -r -A pdf,png url通常在以下場景中,會使用該命令:
(十五)匿名 FTP 下載
wget ftp-url(十六)用戶名和密碼認證的 FTP 下載
wget --ftp-user=USERNAME --ftp-password=PASSWORD url(十七)用戶名和密碼認證的 HTTP 下載
wget --http-user=USER --http-password=PASS http://www.example.com/testfile.zip對于需要證書做認證的網站,就只能利用其他下載工具了,例如 curl。
總結
以上是生活随笔為你收集整理的Linux 命令之 wget -- 下载文件工具的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: AMD R9 7900X3D 大缓存处理
- 下一篇: Linux 命令之 curl 的选项(英