天天看點

wget

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

<code>指令格式: </code>

<code>wget [參數清單] [目标軟體、網頁的網址]             </code><code>//</code>  <code>用法: wget [選項]... [URL]...</code>

<code>長選項所必須的參數在使用短選項時也是必須的。</code>

<code>啟動:</code>

<code>  </code><code>-V,  --version                   顯示 </code><code>Wget</code> <code>的版本資訊并退出</code>

<code>  </code><code>-h,  --help                      列印此幫助</code>

<code>  </code><code>-b,  --background                啟動後轉入背景</code>

<code>  </code><code>-e,  --execute=指令              運作一個“.wgetrc”風格的指令</code>

<code>日志和輸入檔案:</code>

<code>  </code><code>-o,  --output-</code><code>file</code><code>=檔案          将日志資訊寫入 FILE</code>

<code>  </code><code>-a,  --append-output=檔案        将資訊添加至 FILE</code>

<code>  </code><code>-d,  --debug                     列印大量調試資訊</code>

<code>  </code><code>-q,  --quiet                     安靜模式 (無資訊輸出)</code>

<code>  </code><code>-</code><code>v</code><code>,  --verbose                   詳盡的輸出 (此為預設值)</code>

<code>  </code><code>-nv, --no-verbose                關閉詳盡輸出,但不進入安靜模式</code>

<code>       </code><code>--report-speed=類型         以 &lt;類型&gt; 報告帶寬。類型可以是 bits</code>

<code>  </code><code>-i,  --input-</code><code>file</code><code>=檔案           下載下傳本地或外部 &lt;檔案&gt; 中的 URL</code>

<code>  </code><code>-F,  --force-html                把輸入檔案當成 HTML 檔案</code>

<code>  </code><code>-B,  --base=URL                  解析相對于 URL 的 HTML 輸入檔案連結 (-i -F)</code>

<code>       </code><code>--config=檔案               指定要使用的配置檔案</code>

<code>       </code><code>--no-cookies                不讀取任何配置檔案</code>

<code>       </code><code>--rejected-log=檔案         将拒絕 URL 的原因寫入 &lt;檔案&gt;。</code>

<code>下載下傳:</code>

<code>  </code><code>-t,  --tries=數字                設定重試次數為 &lt;數字&gt; (0 代表無限制)</code>

<code>       </code><code>--retry-connrefused         即使拒絕連接配接也是重試</code>

<code>  </code><code>-O,  --output-document=檔案      将文檔寫入 FILE</code>

<code>  </code><code>-nc, --no-clobber                不要下載下傳已存在将被覆寫的檔案</code>

<code>  </code><code>-c,  --</code><code>continue</code>                  <code>斷點續傳下載下傳檔案</code>

<code>       </code><code>--start-pos=偏移量          從由零計數的 &lt;偏移量&gt; 開始下載下傳</code>

<code>       </code><code>--progress=類型             選擇進度條類型</code>

<code>       </code><code>--show-progress             在任意啰嗦狀态下都顯示進度條</code>

<code>  </code><code>-N,  --timestamping              隻擷取比本地檔案新的檔案</code>

<code>       </code><code>--no-</code><code>if</code><code>-modified-since      不要在時間戳 (timestamping) 模式下使用</code>

<code>                                     </code><code>if</code><code>-modified-since get 條件請求</code>

<code>       </code><code>--no-use-server-timestamps  don</code><code>'t set the local file'</code><code>s timestamp by</code>

<code>                                     </code><code>the one on the server</code>

<code>  </code><code>-S,  --server-response           列印伺服器響應</code>

<code>       </code><code>--spider                    不下載下傳任何檔案</code>

<code>  </code><code>-T,  --timeout=SECONDS           将所有逾時設為 SECONDS 秒</code>

<code>       </code><code>--dns-timeout=SECS          設定 DNS 查尋逾時為 SECS 秒</code>

<code>       </code><code>--connect-timeout=SECS      設定連接配接逾時為 SECS 秒</code>

<code>       </code><code>--</code><code>read</code><code>-timeout=SECS         設定讀取逾時為 SECS 秒</code>

<code>  </code><code>-w,  --wait=SECONDS              等待間隔為 SECONDS 秒</code>

<code>       </code><code>--waitretry=SECONDS         在擷取檔案的重試期間等待 1..SECONDS 秒</code>

<code>       </code><code>--random-wait               擷取多個檔案時,每次随機等待間隔 (0.5~1.5)*WAIT 秒</code>

<code>       </code><code>--no-proxy                  禁止使用代理</code>

<code>  </code><code>-Q,  --</code><code>quota</code><code>=數字                設定擷取配額為 &lt;數字&gt; 位元組</code>

<code>       </code><code>--bind-address=ADDRESS      綁定至本地主機上的 ADDRESS (主機名或是 IP)</code>

<code>       </code><code>--limit-rate=RATE           限制下載下傳速率為 RATE</code>

<code>       </code><code>--no-dns-cache              關閉 DNS 查詢緩存</code>

<code>       </code><code>--restrict-</code><code>file</code><code>-names=系統  限定檔案名中的字元為 &lt;系統&gt; 允許的字元</code>

<code>       </code><code>--ignore-</code><code>case</code>               <code>比對檔案/目錄時忽略大小寫</code>

<code>  </code><code>-4,  --inet4-only                僅連接配接至 IPv4 位址</code>

<code>  </code><code>-6,  --inet6-only                僅連接配接至 IPv6 位址</code>

<code>       </code><code>--prefer-family=位址族      首先連接配接至指定家族(IPv6,IPv4 或 none)的位址</code>

<code>       </code><code>--user=使用者                 将 </code><code>ftp</code> <code>和 http 的使用者名均設定為 &lt;使用者&gt;</code>

<code>       </code><code>--password=密碼             将 </code><code>ftp</code> <code>和 http 的密碼均設定為 &lt;密碼&gt;</code>

<code>       </code><code>--ask-password              提示輸入密碼</code>

<code>       </code><code>--no-iri                    關閉 IRI 支援</code>

<code>       </code><code>--</code><code>local</code><code>-encoding=ENC        使用 ENC 作為 IRI (國際化資源辨別符) 的本地編碼</code>

<code>       </code><code>--remote-encoding=ENC       使用 ENC 作為預設遠端編碼</code>

<code>       </code><code>--unlink                    覆寫前移除檔案</code>

<code>目錄:</code>

<code>  </code><code>-nd, --no-directories            不建立目錄</code>

<code>  </code><code>-x,  --force-directories         強制建立目錄</code>

<code>  </code><code>-nH, --no-host-directories       不要建立主 (host) 目錄</code>

<code>       </code><code>--protocol-directories      在目錄中使用協定名稱</code>

<code>  </code><code>-P,  --directory-prefix=字首     儲存檔案到 &lt;字首&gt;/..</code>

<code>       </code><code>--</code><code>cut</code><code>-</code><code>dirs</code><code>=數字             忽略遠端目錄中 &lt;數字&gt; 個目錄層。</code>

<code>HTTP 選項:</code>

<code>       </code><code>--http-user=使用者            設定 http 使用者名為 &lt;使用者&gt;</code>

<code>       </code><code>--http-password=密碼        設定 http 密碼為 &lt;密碼&gt;</code>

<code>       </code><code>--no-cache                  不使用伺服器緩存的資料。</code>

<code>       </code><code>--default-page=NAME         改變預設頁 (通常是“index.html”)。</code>

<code>  </code><code>-E,  --adjust-extension          以合适的擴充名儲存 HTML</code><code>/CSS</code> <code>文檔</code>

<code>       </code><code>--ignore-length             忽略頭部的‘Content-Length’區域</code>

<code>       </code><code>--header=字元串             在頭部插入 &lt;字元串&gt;</code>

<code>       </code><code>--max-redirect              每頁所允許的最大重定向</code>

<code>       </code><code>--proxy-user=使用者           使用 &lt;使用者&gt; 作為代理使用者名</code>

<code>       </code><code>--proxy-password=密碼       使用 &lt;密碼&gt; 作為代理密碼</code>

<code>       </code><code>--referer=URL               在 HTTP 請求頭包含‘Referer: URL’</code>

<code>       </code><code>--save-headers              将 HTTP 頭儲存至檔案。</code>

<code>  </code><code>-U,  --user-agent=代理           辨別自己為 &lt;代理&gt; 而不是 </code><code>Wget</code><code>/VERSION</code><code>。</code>

<code>       </code><code>--no-http-keep-alive        禁用 HTTP keep-alive (持久連接配接)。</code>

<code>       </code><code>--no-cookies                不使用 cookies。</code>

<code>       </code><code>--load-cookies=檔案         會話開始前從 &lt;檔案&gt; 中載入 cookies。</code>

<code>       </code><code>--save-cookies=檔案         會話結束後儲存 cookies 至 FILE。</code>

<code>       </code><code>--keep-session-cookies      載入并儲存會話 (非永久) cookies。</code>

<code>       </code><code>--post-data=字元串          使用 POST 方式;把 &lt;字串&gt;作為資料發送。</code>

<code>       </code><code>--post-</code><code>file</code><code>=檔案            使用 POST 方式;發送 &lt;檔案&gt; 内容。</code>

<code>       </code><code>--method=HTTP方法           在請求中使用指定的 &lt;HTTP 方法&gt;。</code>

<code>       </code><code>--post-data=字元串          把 &lt;字串&gt; 作為資料發送,必須設定 --method</code>

<code>       </code><code>--post-</code><code>file</code><code>=檔案            發送 &lt;檔案&gt; 内容,必須設定 --method</code>

<code>       </code><code>--content-disposition       當選擇本地檔案名時允許 Content-Disposition</code>

<code>                                   </code><code>頭部 (實驗中)。</code>

<code>       </code><code>--content-on-error          在伺服器錯誤時輸出接收到的内容</code>

<code>       </code><code>--auth-no-challenge         不先等待伺服器詢問就發送基本 HTTP 驗證資訊。</code>

<code>HTTPS (SSL</code><code>/TLS</code><code>) 選項:</code>

<code>       </code><code>--secure-protocol=PR         選擇安全協定,可以是 auto、SSLv2、</code>

<code>                                    </code><code>SSLv3、TLSv1、PFS 中的一個。</code>

<code>       </code><code>--https-only                 隻跟随安全的 HTTPS 連結</code>

<code>       </code><code>--no-check-certificate       不要驗證伺服器的證書。</code>

<code>       </code><code>--certificate=檔案           用戶端證書檔案。</code>

<code>       </code><code>--certificate-</code><code>type</code><code>=類型      用戶端證書類型,PEM 或 DER。</code>

<code>       </code><code>--private-key=檔案           私鑰檔案。</code>

<code>       </code><code>--private-key-</code><code>type</code><code>=類型      私鑰檔案類型,PEM 或 DER。</code>

<code>       </code><code>--ca-certificate=檔案        帶有一組 CA 證書的檔案。</code>

<code>       </code><code>--ca-directory=DIR           儲存 CA 證書的哈希清單的目錄。</code>

<code>       </code><code>--pinnedpubkey=FILE</code><code>/HASHES</code>  <code>Public key (PEM</code><code>/DER</code><code>) </code><code>file</code><code>, or any number</code>

<code>                                   </code><code>of base64 encoded sha256 hashes preceded by</code>

<code>                                   </code><code>'sha256//'</code> <code>and seperated by </code><code>';'</code><code>, to verify</code>

<code>                                   </code><code>peer against</code>

<code>HSTS 選項:</code>

<code>       </code><code>--no-hsts                   禁用 HSTS</code>

<code>       </code><code>--hsts-</code><code>file</code>                 <code>HSTS 資料庫路徑(将覆寫預設值)</code>

<code>FTP 選項:</code>

<code>       </code><code>--</code><code>ftp</code><code>-user=使用者             設定 </code><code>ftp</code> <code>使用者名為 &lt;使用者&gt;。</code>

<code>       </code><code>--</code><code>ftp</code><code>-password=密碼         設定 </code><code>ftp</code> <code>密碼為 &lt;密碼&gt;</code>

<code>       </code><code>--no-remove-listing         不要删除‘.listing’檔案</code>

<code>       </code><code>--no-glob                   不在 FTP 檔案名中使用通配符展開</code>

<code>       </code><code>--no-passive-</code><code>ftp</code>            <code>禁用“passive”傳輸模式</code>

<code>       </code><code>--preserve-permissions      保留遠端檔案的權限</code>

<code>       </code><code>--retr-symlinks             遞歸目錄時,擷取連結的檔案 (而非目錄)</code>

<code>FTPS 選項:</code>

<code>       </code><code>--ftps-implicit                 使用隐式 FTPS(預設端口 990)</code>

<code>       </code><code>--ftps-resume-ssl               打開資料連接配接時繼續控制連接配接中的 SSL</code><code>/TLS</code> <code>會話</code>

<code>       </code><code>--ftps-</code><code>clear</code><code>-data-connection    隻加密控制信道;資料傳輸使用明文</code>

<code>       </code><code>--ftps-fallback-to-</code><code>ftp</code>          <code>回落到 FTP,如果目标伺服器不支援 FTPS</code>

<code>WARC 選項:</code>

<code>       </code><code>--warc-</code><code>file</code><code>=檔案名          在一個 .warc.gz 檔案裡保持請求/響應資料</code>

<code>       </code><code>--warc-header=字元串        在頭部插入 &lt;字元串&gt;</code>

<code>       </code><code>--warc-max-size=數字        将 WARC 的最大尺寸設定為 &lt;數字&gt;</code>

<code>       </code><code>--warc-cdx                  寫入 CDX 索引檔案</code>

<code>       </code><code>--warc-dedup=檔案名         不要記錄列在此 CDX 檔案内的記錄</code>

<code>       </code><code>--no-warc-compression       不要 GZIP 壓縮 WARC 檔案</code>

<code>       </code><code>--no-warc-digests           不要計算 SHA1 摘要</code>

<code>       </code><code>--no-warc-keep-log          不要在 WARC 記錄中存儲日志檔案</code>

<code>       </code><code>--warc-tempdir=目錄         WARC 寫入器的臨時檔案目錄</code>

<code>遞歸下載下傳:</code>

<code>  </code><code>-r,  --recursive                 指定遞歸下載下傳</code>

<code>  </code><code>-l,  --level=數字                最大遞歸深度 (inf 或 0 代表無限制,即全部下載下傳)。</code>

<code>       </code><code>--delete-after             下載下傳完成後删除本地檔案</code>

<code>  </code><code>-k,  --convert-links            讓下載下傳得到的 HTML 或 CSS 中的連結指向本地檔案</code>

<code>       </code><code>--convert-</code><code>file</code><code>-only         convert the </code><code>file</code> <code>part of the URLs only (usually known as the </code><code>basename</code><code>)</code>

<code>       </code><code>--backups=N                 寫入檔案 X 前,輪換移動最多 N 個備份檔案</code>

<code>  </code><code>-K,  --backup-converted         在轉換檔案 X 前先将它備份為 X.orig。</code>

<code>  </code><code>-m,  --mirror                   -N -r -l inf --no-remove-listing 的縮寫形式。</code>

<code>  </code><code>-p,  --page-requisites          下載下傳所有用于顯示 HTML 頁面的圖檔之類的元素。</code>

<code>       </code><code>--strict-comments          用嚴格方式 (SGML) 處理 HTML 注釋。</code>

<code>遞歸接受/拒絕:</code>

<code>  </code><code>-A,  --accept=清單               逗号分隔的可接受的擴充名清單</code>

<code>  </code><code>-R,  --reject=清單               逗号分隔的要拒絕的擴充名清單</code>

<code>       </code><code>--accept-regex=REGEX        比對接受的 URL 的正規表達式</code>

<code>       </code><code>--reject-regex=REGEX        比對拒絕的 URL 的正規表達式</code>

<code>       </code><code>--regex-</code><code>type</code><code>=類型           正則類型 (posix|pcre)</code>

<code>  </code><code>-D,  --domains=清單              逗号分隔的可接受的域名清單</code>

<code>       </code><code>--exclude-domains=清單      逗号分隔的要拒絕的域名清單</code>

<code>       </code><code>--follow-</code><code>ftp</code>                <code>跟蹤 HTML 文檔中的 FTP 連結</code>

<code>       </code><code>--follow-tags=清單          逗号分隔的跟蹤的 HTML 辨別清單</code>

<code>       </code><code>--ignore-tags=清單          逗号分隔的忽略的 HTML 辨別清單</code>

<code>  </code><code>-H,  --span-hosts                遞歸時轉向外部主機</code>

<code>  </code><code>-L,  --relative                  僅跟蹤相對連結</code>

<code>  </code><code>-I,  --include-directories=清單  允許目錄的清單</code>

<code>       </code><code>--trust-server-names        使用重定向 URL 的最後一段作為本地檔案名</code>

<code>  </code><code>-X,  --exclude-directories=清單  排除目錄的清單</code>

<code>  </code><code>-np, --no-parent                 不追溯至父目錄</code>

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

1、使用wget下載下傳單個檔案 

<code>以下的例子是從網絡下載下傳一個檔案并儲存在目前目錄 </code>

<code>wget http:</code><code>//cn</code><code>.wordpress.org</code><code>/wordpress-3</code><code>.1-zh_CN.zip </code>

<code>在下載下傳的過程中會顯示進度條,包含(下載下傳完成百分比,已經下載下傳的位元組,目前下載下傳速度,剩餘下載下傳時間)。</code>

2、使用wget -O下載下傳并以不同的檔案名儲存 

wget預設會以最後一個符合”/”的後面的字元來指令,對于動态連結的下載下傳通常檔案名會不正确。 

錯誤:下面的例子會下載下傳一個檔案并以名稱download.php?id=1080儲存 

wget http://www.centos.bz/download?id=1 

即使下載下傳的檔案是zip格式,它仍然以download.php?id=1080指令。 

正确:為了解決這個問題,我們可以使用參數-O來指定一個檔案名: 

wget -O wordpress.zip http://www.centos.bz/download.php?id=1080 

3、使用wget –limit -rate限速下載下傳 

當你執行wget的時候,它預設會占用全部可能的寬帶下載下傳。但是當你準備下載下傳一個大檔案,而你還需要下載下傳其它檔案時就有必要限速了。 

wget –limit-rate=300k http://cn.wordpress.org/wordpress-3.1-zh_CN.zip 

4、使用wget -c斷點續傳 

使用wget -c重新啟動下載下傳中斷的檔案: 

wget -c http://cn.wordpress.org/wordpress-3.1-zh_CN.zip 

對于我們下載下傳大檔案時突然由于網絡等原因中斷非常有幫助,我們可以繼續接着下載下傳而不是重新下載下傳一個檔案。需要繼續中斷的下載下傳時可以使用-c參數。 

5、使用wget -b背景下載下傳 

對于下載下傳非常大的檔案的時候,我們可以使用參數-b進行背景下載下傳。 

wget -b http://cn.wordpress.org/wordpress-3.1-zh_CN.zip 

Continuing in background, pid 1840. 

Output will be written to `wget-log’. 

你可以使用以下指令來察看下載下傳進度 

tail -f wget-log 

6、僞裝代理名稱下載下傳 

有些網站能通過根據判斷代理名稱不是浏覽器而拒絕你的下載下傳請求。不過你可以通過–user-agent參數僞裝。 

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″ 下載下傳連結 

7、使用wget –spider測試下載下傳連結 

當你打算進行定時下載下傳,你應該在預定時間測試下載下傳連結是否有效。我們可以增加–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 

HTTP request sent, awaiting response… 404 Not Found 

Remote file does not exist — broken link!!! 

你可以在以下幾種情況下使用spider參數: 

定時下載下傳之前進行檢查 

間隔檢測網站是否可用 

檢查網站頁面的死連結 

8、使用wget –tries增加重試次數 

如果網絡有問題或下載下傳一個大檔案也有可能失敗。wget預設重試20次連接配接下載下傳檔案。如果需要,你可以使用–tries增加重試次數。 

wget –tries=40 URL 

9、使用wget -i下載下傳多個檔案 

首先,儲存一份下載下傳連結檔案 

cat &gt; filelist.txt 

url1 

url2 

url3 

url4 

接着使用這個檔案和參數-i下載下傳 

wget -i filelist.txt 

10、使用wget –mirror鏡像網站 

下面的例子是下載下傳整個網站到本地。 

wget –mirror -p –convert-links -P ./LOCAL URL 

–miror:開戶鏡像下載下傳 

-p:下載下傳所有為了html頁面顯示正常的檔案 

–convert-links:下載下傳後,轉換成本地的連結 

-P ./LOCAL:儲存所有檔案和目錄到本地指定目錄 

11、使用wget –reject過濾指定格式下載下傳 

你想下載下傳一個網站,但你不希望下載下傳圖檔,你可以使用以下指令。 

wget –reject=gif url 

12、使用wget -o把下載下傳資訊存入日志檔案 

你不希望下載下傳資訊直接顯示在終端而是在一個日志檔案,可以使用以下指令: 

wget -o download.log URL 

13、使用wget -Q限制總下載下傳檔案大小 

當你想要下載下傳的檔案超過5M而退出下載下傳,你可以使用以下指令: 

wget -Q5m -i filelist.txt 

注意:這個參數對單個檔案下載下傳不起作用,隻能遞歸下載下傳時才有效。 

14、使用wget -r -A下載下傳指定格式檔案 

可以在以下情況使用該功能 

下載下傳一個網站的所有圖檔 

下載下傳一個網站的所有視訊 

下載下傳一個網站的所有PDF檔案 

wget -r -A.pdf url 

15、使用wget FTP下載下傳 

你可以使用wget來完成ftp連結的下載下傳。 

使用wget匿名ftp下載下傳 

wget ftp-url 

使用wget使用者名和密碼認證的ftp下載下傳 

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、下載下傳整個http或者ftp站點。 

wget http://place.your.url/here 

這個指令可以将http://place.your.url/here 首頁下載下傳下來。使用-x會強制建立伺服器上一模一樣的目錄,如果使用-nd參數,那麼伺服器上下載下傳的所有内容都會加到本地目前目錄。 

wget -r http://place.your.url/here 

這 個指令會按照遞歸的方法,下載下傳伺服器上所有的目錄和檔案,實質就是下載下傳整個網站。這個指令一定要小心使用,因為在下載下傳的時候,被下載下傳網站指向的所有位址同 樣會被下載下傳,是以,如果這個網站引用了其他網站,那麼被引用的網站也會被下載下傳下來!基于這個原因,這個參數不常用。可以用-l number參數來指定下載下傳的層次。例如隻下載下傳兩層,那麼使用-l 2。 

要是您想制作鏡像站點,那麼可以使用-m參數,例如:wget -m http://place.your.url/here 

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

2、斷點續傳。 

當檔案特别大或者網絡特别慢的時候,往往一個檔案還沒有下載下傳完,連接配接就已經被切斷,此時就需要斷點續傳。wget的斷點續傳是自動的,隻需要使用-c參數,例如: 

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 [參數清單] [目标軟體、網頁的網址] 

-V,–version 顯示軟體版本号然後退出; 

-h,–help顯示軟體幫助資訊; 

-e,–execute=COMMAND 執行一個 “.wgetrc”指令 

-o,–output-file=FILE 将軟體輸出資訊儲存到檔案; 

-a,–append-output=FILE将軟體輸出資訊追加到檔案; 

-d,–debug顯示輸出資訊; 

-q,–quiet 不顯示輸出資訊; 

-i,–input-file=FILE 從檔案中取得URL; 

-t,–tries=NUMBER 是否下載下傳次數(0表示無窮次) 

-O –output-document=FILE下載下傳檔案儲存為别的檔案名 

-nc, –no-clobber 不要覆寫已經存在的檔案 

-N,–timestamping隻下載下傳比本地新的檔案 

-T,–timeout=SECONDS 設定逾時時間 

-Y,–proxy=on/off 關閉代理 

-nd,–no-directories 不建立目錄 

-x,–force-directories 強制建立目錄 

-r,–recursive 下載下傳整個網站、目錄(小心使用) 

-l,–level=NUMBER 下載下傳層次 

-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 拒絕的目錄 

中文文檔名在平常的情況下會被編碼, 但是在 –cut-dirs 時又是正常的, 

wget -r -np -nH –cut-dirs=3 ftp://host/test/ 

測試.txt 

wget -r -np -nH -nd ftp://host/test/ 

%B4%FA%B8%D5.txt 

wget “ftp://host/test/*” 

由 於不知名的原因,可能是為了避開特殊檔名, wget 會自動将抓取檔名的部分用 encode_string 處理過, 是以該 patch 就把被 encode_string 處理成 “%3A” 這種東西, 用 decode_string 還原成 “:”,并套用在目錄與檔案名稱的部分,decode_string 是 wget 内建的函式。 

wget -t0 -c -nH -x -np -b -m -P /home/sunny/NOD32view/ http://downloads1.kaspersky-labs.com/bases/ -o wget.log  

版權聲明:原創作品,如需轉載,請注明出處。否則将追究法律責任

本文轉自    懿懿懿   51CTO部落格,原文連結:

繼續閱讀