Linux wget 命令行工具是一個漂亮的實用程序,用於通過 Internet 下載文件。 它通常用於從網站下載 tarball 和壓縮文件、deb 和 rpm 包。
使用 wget 命令,您可以通過 HTTP、HTTPS 甚至 FTP 協議下載文件。 您可以與 wget 命令一起使用的許多選項使其功能強大。
在本教程中,我們將通過示例了解如何使用 GNU wget 命令。
wget 的語法
使用 wget 的語法非常簡單。 只需調用 wget 命令,然後是選項,然後是網站鏈接,如圖所示。
$ wget [ options ] url
安裝 wget
大多數現代 Linux 發行版都附帶 wget 實用程序,因此您不需要安裝它。 但是,在某些情況下可能需要安裝,尤其是在較舊的系統和某些雲實例中,或者要解決“-bash:wget:Command not found’ 錯誤消息。
對於 Ubuntu 和 Debian 風格,使用 APT 包管理器運行以下命令:
$ sudo apt-get install wget
要在 RHEL / CentOS 8 版本中安裝 wget 命令,請執行:
$ sudo dnf install wget
對於舊版本,(RHEL 7 和 CentOS 7 及更早版本)使用 yum 包管理器,如下所示
$ sudo yum install wget
對於 Arch Linux 和 Arch Linux 發行版,例如 Manjaro、Arch Linux 和 Endeavor OS,請使用 pacman 包管理器,如下所示:
$ sudo pacman -S wget
從 Internet 下載文件
在最基本的形式中,wget 命令不使用任何選項,從 URL 中指定的 Internet 下載文件。 最簡單的語法如下所示:
$ wget website_url
為了 example, 在裡面 example 下面,我們正在從官方 WordPress 站點下載最新的 WordPress tarball。
$ wget https://wordpress.org/latest.tar.gz
從輸出中我們可以看到,wget 首先將網站的域名解析為 IP 地址,然後連接到服務器,然後啟動文件傳輸。 下載過程中,您會看到進度條,顯示文件名、大小、下載速度以及預計下載完成時間。
下載完成後,請務必在您當前的工作目錄中找到該文件。 這可以通過調用 ls 命令來驗證。
下載文件並以特定名稱保存
如果您希望以不同於原始名稱的名稱保存文件,只需通過 -O
選項後跟您的首選名稱。
$ wget -O wordpress.tar.gz https://wordpress.org/latest.tar.gz
上述命令從 WordPress 站點下載原始文件“latest.tar.gz”並將其保存為“wordpress.tar.gz”。
下載到指定目錄
如前所述,wget 將文件下載到您當前的工作目錄。 您可以使用 -P
標誌後跟目標目錄的路徑。
$ wget -P /var/www/html https://wordpress.org/latest.tar.gz
在裡面 example 以上,文件保存在/var/www/html目錄下。
限制下載速度
使用 wget,您還可以限制下載文件的速度。 要限制下載速度,請調用 --limit-rate
選項後跟下載速度。 速度通常以每秒字節數來衡量。
要將限制速率設置為 500KB/s,請運行以下命令:
$ wget –limit-rate=500k https://wordpress.org/latest.tar.gz
如何繼續獲取部分下載的文件
有時在文件下載過程中,您的連接可能會突然中斷,留下部分下載的文件。 不要重新開始下載,而是使用 wget -C
選擇繼續下載,如圖所示。
$ wget -c https://wordpress.org/latest.tar.gz
在上面 example,我們正在恢復從 WordPress 下載 tarball 文件的文件。 請注意,如果網站沒有響應恢復文件下載,則該命令將重新啟動文件下載並覆蓋現有文件。
在後台下載文件
要在後台下載文件,請通過 wget -b
選項如下圖。
$ wget -b https://osdn.net/projects/manjaro/storage/kde/20.0.3/manjaro-kde-20.0.3-200606-linux56.iso
在裡面 example 上面,我們在後台下載 Manjaro KDE Plasma ISO 文件。 要監控下載狀態,請使用 wget log 命令,如下所示
$ tail –f wget –log
下載多個文件
如果你有多個文件要下載,在終端上重複運行 wget 命令很麻煩。 更好的方法是運行 wget 命令一次以一個接一個地下載文件。
為此,請將網站 URL 保存在文本文件中。 此後,使用 wget 命令調用 -i
選項後跟文本文件的名稱。
在這 example,我們要下載 WordPress tarball 文件和 OwnCloud 壓縮文件。 首先,我們將下載鏈接保存到一個示例文件中,我們稱之為“downloads.txt”:
https://wordpress.org/latest.tar.gz
https://download.owncloud.org/community/owncloud-complete-20200731.zip
現在,要下載多個文件,請運行:
$ wget -i downloads.txt
這些將一個接一個地下載。 這就是您下載多個文件的方式。
下載一個網站的鏡像
wget 的另一個不為人知的用途是克隆或製作網站的鏡像副本的能力。 您可以通過傳遞 -m
選項如圖所示。 這會創建網站的鏡像副本以及所有內部鏈接和其他資源,例如圖像、小部件、Javascript 和 CSS 文件。
$ wget -m https://www.example.com
如果您打算克隆一個網站以進行本地瀏覽,請傳遞額外的參數,如圖所示。
$ wget -m -k -p https://www.example.com
這 -k
標誌有助於將鏈接轉換為適合本地查看的格式。 與此同時, -p
選項指示 wget 實用程序下載在瀏覽器的 HTML 頁面上顯示內容所需的相關文件。
忽略 SSL 證書
為避免在通過 HTTPS 從 SSL 證書不受信任或無效的 Web 服務器下載文件時遇到錯誤,請傳遞 --no-check-certificate
選項:
$ wget --no-check-certificate https://domain-with-untrusted-ssl-cert
下載並將輸出重定向到日誌文件
wget 命令的輸出可以在文件下載期間使用 -o
選項如圖:
$ wget -o download.log https://wordpress.org/latest.tar.gz
此後,您可以在下載過程中使用 tail 命令實時查看日誌文件,如下所示:
$ tail -f download.log
限制下載重試
有時,您可能會遇到緩慢的帶寬速度,這可能會阻止您下載文件。 您可以使用 wget 設置下載重試次數 --tries=[no. of tries]
選項如圖:
$ wget --tries=10 https://wordpress.org/latest.tar.gz
在裡面 example 上面,get 將在退出前重試 tarball 文件的下載 10 次。
從 FTP 服務器下載
您還可以從 FTP 服務器下載文件,即使文件受密碼保護。 您需要做的就是在 wget 命令中傳遞 ftp 用戶名和密碼,如下所示:
$ wget --ftp-user=[ftp_user] --ftp-password=[ftp_password] ftp://ftp.ftp-site.com
更改 wget 用戶代理
用戶代理本質上是一個由瀏覽器發送到 Web 服務器的標頭字段。 如果您正在下載網頁,wget 將模擬 Web 瀏覽器。 有時,您會收到一條錯誤消息,表明您沒有足夠的權限訪問服務器。 發生這種情況時,很可能是網站或 Web 服務器阻止了與特定“用戶代理”關聯的瀏覽器。 這是您可以找到的用戶代理數據庫。
要更改用戶代理,請使用以下語法:
$ wget -U "user agent" URL
為了 example, 下載網站 example.com 模擬 Google Chrome 版本 74 – 這是最新版本,請使用:
$ wget -U "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/74.0.3729.169 Safari/537.36" "https://example.com"
遞歸下載
要下載網站進行本地查看,您需要打開遞歸下載 -r
或者 --recursive
選項和鏈接轉換為本地鏈接 -k
或者 --convert-links
選項。
為了 example:
$ wget -rk https://example.com
結論
正如您所觀察到的,wget 是一個功能強大且靈活的工具,您可以使用它從 Internet 獲取文件。 在本教程中,我向您展示了使用 wget 的各種方法,以及如何通過 http、https 和 ftp 從 Web 服務器下載文件和網頁。 有關 wget 命令用法的更多信息,請訪問 手冊頁.