我會向你展示10個 Wget 指令的實際案例. Wget 是一個用于下載下傳檔案的免費工具,它支援大多數常用的Internet協定,包括 HTTP, HTTPS, 以及 FTP.
Wget這個名字來源于 World Wide Web + get. Wget 有很多功能,可以很友善地做到下載下傳大型檔案,遞歸下載下傳,一次下載下傳多個檔案以及鏡像web網站和FTP站點.
Wget是非互動式的,但是使用起來相當的靈活. 你可以在腳本,cron任務,終端等地方調用它.
它可以在使用者未登陸的情況下運作在背景. 也就是說你可以開始下載下傳檔案,然後退出系統,wget會在背景運作直到完成任務.
在本文中,我将示範一些wget的使用例子, 這些例子都很常見,比如下載下傳檔案,比如鏡像整個網站.
在示範前,我們先在 [[https://www.rosehosting.com/ubuntu-vps.html][Ubuntu 16.04]] [[https://www.rosehosting.com/ubuntu-vps.html][VPS]] 上安裝wget.
請注意,雖然該示範是在 Ubuntu 16.04 上進行的, 但是這些指令在其他 [[https://www.rosehosting.com/linux-vps-hosting.html][Linux]] 發行版中同樣适用.
- 登陸伺服器并安裝wget
第一步是 [[https://www.rosehosting.com/blog/connect-to-your-linux-vps-via-ssh/][通過SSH登陸伺服器]].
使用下面指令更新你的伺服器:
get update
apt-get
然後安裝wget軟體包:
get
安裝完成後,就可以開始使用wget指令了.
1. 下載下傳單個檔案
wget最常用也是最簡單的用法就是用來下載下傳單個檔案.
你可以用下面指令想下載下傳最新版的WordPress
.org/latest.zip
你會看到如下輸出:
2017-10-14 03:46:06-- https://wordpress.org/latest.zip
Resolving wordpress.org (wordpress.org)... 66.155.40.250, 66.155.40.249
Connecting to wordpress.org (wordpress.org)|66.155.40.250|:443... connected.
HTTP request sent, awaiting response... 200 OK
Length: 8912693 (8.5M) [application/zip]
Saving to: 'latest.zip'
latest.zip 100%[=====================================================================================================>] 8.50M 5.03MB/s in 1.7s
2017-10-14 03:46:07 (5.03 MB/s) - 'latest.zip' saved [8912693/8912693]
從中可以看出,wget還會顯示出下載下傳的進度, 目前下載下傳速度, 檔案大小, 目前日期時間 以及待下載下傳檔案的名稱.
在我們的例子中, wget會下載下傳檔案并以”latest.zip”為名存放到目前目錄中.zip” name.
2. 下載下傳檔案并重命名
若你想以其他名稱儲存下載下傳的檔案,可以使用 =-O= 選項:
.zip https://wordpress.org/latest.zip
wget會下載下傳檔案并以”wordpress.zip”為名存放到目前目錄中.zip” name.
3. 指定下載下傳目錄
使用 =-p= 選項指定下載下傳目錄:
.org/latest.zip
就會把檔案下載下傳到 /opt/wordpress 目錄中.
4. 限制下載下傳速度
當你下載下傳大型檔案時,可能耗時很長,這事你可以限制wget的下載下傳速度以防止它把整個帶寬都占滿了.
下面指令就将下載下傳速度限制在了每秒300k:
300k https://wordpress.org/latest.zip
5. 斷點續傳
在下載下傳大型檔案時,可能會由于網絡連接配接抖動造成下載下傳中斷.
為了避免重新下載下傳,可以使用 =-c= 選項進行斷點續傳:
.org/latest.zip
若下載下傳中斷後你沒有用 =-c= 進行斷點續傳,而是重新下載下傳, wget 會在檔案名後加上 “.1” 防止與前面下載下傳的檔案重名.
6. 背景下載下傳
當下載下傳大型檔案時, 可以使用 =-b= 選項讓wget在背景下載下傳檔案.
http://example.com/big-file.zip
輸出内容會寫入同目錄下的 “wget-log” 檔案, 這樣你就可以用下面指令來檢查下載下傳狀态了:
-f wget-log
7. 設定重試次數
若網絡有問題導緻下載下傳時常中斷,就可以使用 =-tries= 選項增加重試次數:
100 https://example.com/file.zip
8. 下載下傳多檔案
若你想同時下載下傳多個檔案,你可以将要在的檔案URL存放在一個文本檔案中(假設該檔案名為download.txt).
下面指令建立一個文本檔案:
.txt
然後可以用 nano 編輯該檔案,輸入所有想下載下傳的檔案URL:
.txt
http://example.com/file1.zip
http://example.com/file2.zip
http://example.com/file3.zip
儲存該檔案, 然後使用 =-i= 選項下載下傳文本檔案中儲存的所有檔案:
.txt
9. 下載下傳FTP檔案
wget還支援下載下傳FTP檔案,可以為它設定使用者名和密碼,如下所示:
--ftp-user=username --ftp-password=password ftp://url-to-ftp-file
10. 下載下傳整個網站
你甚至可以用wget下載下傳完整的站點, 然後進行離線浏覽. 方法是使用如下指令:
wget --mirror --convert-links --page-requisites ----no-parent -P /path/to/download https://example-domain.com
—mirror 會開啟鏡像所需要的所有選項.
–convert-links 會将所有連結轉換成本地連結以便離線浏覽.
–page-requisites 表示下載下傳包括CSS樣式檔案,圖檔等所有所需的檔案,以便離線時能正确地現實頁面.
–no-parent 用于限制隻下載下傳網站的某一部分内容.
此外, 你可以使用 =P= 設定下載下傳路徑.
以上例子覆寫了wget最常用的幾個場景.[[https://www.gnu.org/software/wget/manual/wget.html][想更多地了解wget]], 你可以使用 =man wget= 檢視它的幫助文檔.