如果你每天都使用Linux,那麼遲早你會需要 從以下位置下載文件 終端 快速靈活這時 wget 就派上用場了,它是 GNU 專案中的一款小工具,幾十年來一直默默地做著繁重的工作。
只要幾個選項,wget 就能讓你… 透過 FTP 下載單一檔案、數百個檔案、整個網站或內容。限制頻寬、恢復中斷的下載、使用 cron 自動執行任務等等。所有操作都無需視窗或精靈:只需您、控制台和一條強大的命令即可。
Linux 系統中 wget 指令的具體功能是什麼?
wget 指令啟動 來自 GNU 專案的 wget 命令列程序它旨在利用不同的協定從網路下載內容。它的名稱來自“萬維網”(World Wide Web)+“get”,意思是“從網路取得”。
該工具是在 C 語言可移植,並以自由軟體的形式分發因此,它幾乎可以在任何類型的系統上無縫運行。 Unix的:GNU/Linux、BSD 和 macOS 發行版使用額外的工具,甚至在 Windows 透過 Cygwin 等環境或 Ubuntu 內建的 Bash 控制台。
使用 wget 你可以 透過 HTTP、HTTPS 和 FTP 檢索文件它甚至可以用於伺服器需要使用者名稱和密碼進行身份驗證的情況,支援 HTTP 和 FTP 協定。此外,它還能識別重定向、TLS 憑證和典型的 Web 伺服器回應。
它最大的優點之一是下載… 非互動式wget 不需要你在電腦上開啟會話。你可以從任何地方啟動它。 腳本您可以讓 cron 任務在遠端伺服器上運行,或在背景使用它,而無需擔心會話問題。 SSH 它斷電了。
在大多數流行的發行版中,例如 Debian、Ubuntu 或 Linux Mint 預設安裝了 wget。而有些情況下,你只需要安裝對應的軟體套件管理器,一分鐘內就能讓它運作起來。

如何在 Linux 和其他系統上安裝 wget
在典型的Linux環境中,只需要一個簡單的指令即可 安裝或檢查 wget 是否可用例如,在 Ubuntu 或 Debian 系統中,您可以執行以下簡單操作:
快速安裝: sudo apt-get install wget
安裝完成後,您將獲得二進位。 wget 已加入您的 PATH 環境變數。您可以透過以下方式驗證:
檢查版本: wget --version
在其他發行版中,軟體套件管理器會有所不同,但原理是一樣的: yum、dnf、pacman 或 zypper 它們允許您使用一條命令從官方存儲庫安裝 wget。
macOS 系統預設不包含 wget,但您可以使用它。 使用 Homebrew 安裝控制台工具配置 brew 之後,只需:
自製: brew install wget
在傳統的 Windows 生態系統中,無法直接從外部存取 wget。 命令提示 經典,儘管 Cygwin 和 Windows 10/11 上的 Ubuntu Bash 控制台 它們包括 wget 和其他 GNU 工具。如果您使用 Windows 的 Linux 層,那麼您的使用方法實際上與任何其他發行版都相同。

wget 的基本語法和最重要的選項
該指令的整體結構非常簡單: wget 指令後面接著選項和一個或多個 URL。規範形式大致如下:
格式: wget [opciones] URL1 URL2 URL3 ...
如果沒有添加其他參數,wget 將下載 URL 指定的文件,並且… 它會自動儲存到目前工作目錄。 使用與遠端伺服器上相同的名稱。
該命令的真正威力在於其提供的眾多選項。一些日常使用中最常用的選項包括:
- -co –繼續:恢復中斷的下載,而無需從頭開始。
- -N僅當遠端副本比磁碟上已有的檔案更新時才下載檔案。
- -t [數字]:表示 wget 在下載檔案時應嘗試的次數,超過此次數後將放棄。
- -w [秒]:表示連續下載之間需要等待一段時間,以避免伺服器過載。
- -r:啟用遞歸模式以追蹤連結或遍歷目錄。
- -P [路線]選擇要儲存下載檔案的目錄。
- –limit-rate=[速度]限制 wget 消耗的頻寬(例如,200k)。
這些選項可以組合使用 根據您的需求精確調整 wget 的行為從簡單的單次下載到功能齊全的網站爬蟲或定期備份任務。
基本範例:下載一個或多個文件
wget 最基本的用途是 將單一檔案下載到您目前所在的資料夾。例如,要下載 Ubuntu 發行版的 ISO 映像,您可以執行類似這樣的指令:
簡單範例: wget http://releases.ubuntu.com/14.04/ubuntu-14.04-desktop-amd64.iso
下載過程中,您會在螢幕上看到以下內容 完成百分比、總大小、速度和 El Temppo 僱員這包括 DNS 解析和連接伺服器。完成後,您將在當前目錄中找到一個與連結中同名的檔案。
如果您想要的不是文件而是其他文件 透過在單一命令中指定所有 URL,一次下載多個文件只需將以空格分隔的連結串聯起來,甚至可以混合使用 HTTP 和 FTP 協定:
多個文件: wget http://ejemplo.com/programa.tar.gz ftp://otrositio.com/descargas/video.mpg
此外,wget 也理解 URL 中的某些擴充模式例如,如果伺服器上有一組編號為 1 到 50 的圖片,您可以執行以下操作:
擴展模式: wget http://example.com/images/{1..50}.jpg
另一種管理多個下載的非常實用的方法是: 準備一個文字文件,每行包含一個 URL。 然後告訴 wget 讀取該列表。例如:
建立清單: nano archivos.txt
內 files.txt 檔案中,你可以寫入類似這樣的內容::
http://ejemplo.com/programa.tar.gz
http://ejemplo.com/rpm/paquete.rpm
ftp://otrositio.com/descargas/distro.iso
然後你只需要運行:
從清單中下載: wget -i archivos.txt
有選項 -iwget 會讀取文字檔案並下載列出的每個位址,非常適合讓你的電腦在後台運行,而你可以去做其他事情。
更改資料夾名稱並限制下載速度
如果您不希望保留遠端檔案的原始名稱,可以使用該選項。 或重新命名結果例如,如果您想將先前的 ISO 檔案儲存為更短的名稱:
重新命名: wget -O ubuntu_amd64.iso http://releases.ubuntu.com/14.04/ubuntu-14.04-desktop-amd64.iso
當你總是想…的時候,這個技巧就非常有用。 下載一個名稱固定的文件 在腳本中覆蓋它,例如 備用 日記。
如果你想要控制 下載的檔案儲存到目標目錄。您可以使用 -P 選項,後跟路徑:
目標目錄: wget -P documentos/isos/ http://releases.ubuntu.com/14.04/ubuntu-14.04-desktop-amd64.iso
這樣,文件最終會保存在… documents/isos/ 而非目前目錄這樣可以很好地整理下載內容,而無需進行任何額外的操作。
另一個關鍵方面是頻寬消耗。 Wget 允許 限制傳輸速度,避免佔用全部連線頻寬。這在伺服器或共享連接上尤其重要。例如,要設定最大傳輸速率為 500 KB/s:
限速: wget --limit-rate=500k https://wordpress.org/latest.zip
您也可以指定一個值,例如 50萬、2萬等等,依照您的需求調整費率這樣,您就可以在背景下載大檔案的同時繼續瀏覽網頁或使用其他服務。
恢復下載、控制重試次數並在背景執行
其中一個典型情況是,你 切斷連接或在大放電過程中中斷電wget 不會導致所有下載的資料遺失,它允許您使用 -c 選項從中斷的地方繼續下載檔案:
簡歷下載: wget -c http://releases.ubuntu.com/14.04/ubuntu-14.04-desktop-amd64.iso
雖然伺服器支援斷點續傳,但 wget 卻可以。 將從停止的地方繼續如果你不使用 -cy 參數,而該文件已存在,程式會將其儲存為帶有「.1」後綴的文件,以避免覆寫原始文件。
在連接不穩定或伺服器嚴重過載的環境中,監控也至關重要。 下載嘗試次數預設情況下,wget 會嘗試 20 次,但您可以使用 -t 參數增加或減少該值:
嘗試控制: wget -t 50 http://ejemplo.com/pelicula.mpg
如果你願意的話,你甚至可以使用 -t 訊息 這樣,wget 就會無限期地嘗試連接,直到成功為止,這在腳本中非常有用,因為腳本的首要任務就是避免失敗。
處理大型檔案時,最好在背景執行下載。 能夠關閉終端機或繼續使用該會話Wget 提供了 -b 選項來實作此功能:
背景: wget -b http://example.com/beefy-file.tar.gz
透過使用 -b 參數,程式會「脫離」終端,並且 它會將進度記錄在名為 wget-log 的檔案中。 在目前目錄下。您可以透過以下命令查看進度:
查看進度: tail -f wget-log
如果您還需要一份詳細的下載過程報告(這對於偵錯問題非常理想),可以使用該選項將 wget 的輸出重定向到日誌檔案。 -o:
詳細記錄: wget -o reporte.txt http://ejemplo.com/programa.tar.gz
使用 wget 操作受保護的伺服器和 FTP。
許多線上資源並非公開,需要付費才能存取。 下載檔案的使用者名稱和密碼Wget 可以透過在命令列中新增憑證來處理這些環境。
例如,在採用基本驗證的 HTTP 伺服器上,您可以使用類似這樣的方法:
HTTP 驗證: wget --http-user=admin --http-password=secreto http://ejemplo.com/archivo.mp3
同樣,該命令與 傳統 FTP 伺服器要從私有 FTP 伺服器下載特定文件,只需:
使用憑證進行 FTP 傳輸: wget --ftp-user=TU_USUARIO --ftp-password=TU_PASSWORD ftp://example.com/something.tar
如果你想要的是拿 來自 FTP 伺服器的完整目錄您可以將遞迴模式與 FTP 路由結合使用:
下載FTP目錄: wget -r ftp://example.com/folder
如果您新增該選項 –無父母 確保 wget 不會向上移動到 FTP 樹中的更高目錄,而只專注於指定的資料夾及其子目錄。
下載整個網站以便離線檢視
wget 最強大的功能之一是它能夠… 下載整個網站的內容並在本地查看。 無需網路連線。這對於長途旅行、無法存取網路的環境或離線網站分析來說非常有用。
進階範例: wget --mirror --convert-links --page-requisites --no-parent -P documentos/websites/ https://some-website.com
在這裡,每個選項都對網站克隆過程做出了非常具體的貢獻:
- -鏡子:啟動專為鏡像設計的模式,該模式結合了深度遞歸和時間戳管理。
- –轉換連結修改內部鏈接,使其指向已下載的文件,從而允許離線瀏覽。
- –頁面要求:包含頁面美觀所需的所有資源(CSS、JavaScript、圖像等)。
- –無父母避免上傳到更高層級的目錄,將下載範圍限制在您感興趣的網站範圍內。
- -P 文件/網站/:指示將保存整個下載結構的目錄。
下載完成後,您將能夠 使用您喜歡的瀏覽器開啟主索引頁 您可以像線上瀏覽一樣瀏覽副本。文件將按照文件/網站/資料夾的結構進行組織,子目錄結構與遠端伺服器的結構完全一致。
對於某些網站來說,使用以下方法也很有用: –html 副檔名或縮寫 -E這樣可以確保所有文件都以 .html 副檔名儲存,即使它們原本是 .php、.asp 或 .cgi 文件,從而更容易在本機瀏覽器中開啟它們。
找到失效連結並使用 wget 作為網路“爬蟲”
除了下載內容之外,wget 還可以用作一種… 輕量級爬蟲,用於評估網站連結狀態借助爬蟲模式,程式無需保存頁面即可抓取頁面,只需檢查伺服器的回應即可。
蜘蛛模式: wget -o wget-log -r -l 5 --spider http://example.com
在這條語句中,每個參數都發揮各自的作用:
- -o wget-log將所有輸出傳送到 wget-log 文件,以便您稍後有空時查看。
- -r:啟用遞歸以追蹤內部連結。
- -l 5:定義最大遞歸深度為 5 層。
- -蜘蛛:將 wget 變成一個蜘蛛程序,檢查連結但不下載檔案。
稍後您可以處理日誌檔案。 快速提取返回 404 的鏈接一個典型的過濾命令範例是:
過濾 404 錯誤: grep -B 2 '404' wget-log | grep "http" | cut -d " " -f 4 | sort -u
這樣你就能得到一份清晰的問題 URL 列表,非常適合網站管理員修復重定向或刪除的內容。
使用進階選項恢復整個網站
有些情況下,你想要 使用 wget 下載網站時,可以更好地控制開啟的內容。例如,用於詳細分析、內容審核或長期離線查詢。
進階下載: wget -m -F -p -np -k -erobots=off -U mozilla --limit-rate=50K --wait=2 --html-extension sitioweb
這條曲線結合了幾個有趣的參數:
- -m鏡像模式,相當於遞歸和時間戳記的某些組合。
- -F即使答案有細微錯誤,也強制下載。
- -p確保下載每個頁面的所有輔助資源。
- -np:沒有父級,阻止遞歸過程中向上移動到更高的目錄。
- -k:將連結轉換為指向本機副本。
- -erobots=關閉:無視網站的 robots.txt 文件,不遵守其限制。
- -U Mozilla設定類似於 Mozilla 瀏覽器的用戶代理字串。
- –limit-rate=50K:將速度限制為 50 KB/s,以避免線路過載。
- –wait=2:在連續請求之間引入 2 秒的暫停。
- –html擴充:強制所有下載的文件都使用 .html 副檔名。
最終得到的是一個非常完整且易於瀏覽的網站副本。 專為離線諮詢和詳細分析而設計但是,建議密切注意磁碟空間,因為這種操作可能會在您不知不覺中佔用數 GB 的空間,尤其是在大型網站上啟用遞歸的情況下。
極端例子:過濾文件類型和繞過機器人程序
Wget 也適用於較「極端」的用途,例如: 在長長的網站清單中僅搜尋特定類型的文件。一個典型的例子是下載文件 mp3 從儲存在文字檔案中的位址中提取:
過濾mp3: wget -r -l1 -H -t1 -nd -N -np -A.mp3 -erobots=off -i sitiosmp3.txt
此組合中每個選項的行為都充分體現了wget的潛力:
- -r -l1:已啟用遞歸,但僅限於單層子目錄。
- -H允許追蹤指向主域以外的網域的連結(跨網域主機)。
- -t1每個 URL 只嘗試連線一次;如果連線失敗,請繼續嘗試下一個 URL。
- -nd它不會建立本機子目錄;它會將所有檔案保存在同一位置。
- -N:尊重原始檔案的時間戳,僅在檔案發生變更時才下載。
- -np避免上傳到父目錄。
- -A.mp3限制下載的檔案副檔名為 .mp3。
- -erobots=關閉:無視 robots.txt 限制,瀏覽所有目錄。
- -i sitiosmp3.txt:從檔案 sitiosmp3.txt 中讀取要抓取的初始網站清單。
類似這樣的命令允許掛載 使用 cron 每日運行的自動化流程使用 -N 選項,僅下載新文件,並始終保持本機儲存庫處於最新狀態。
其他實用選項和安全最佳實踐
除了以上所有功能外,wget 還包含 其他一些非常實用的參數可用於控制其行為其中一些最有趣的例子包括:
- -b:在背景執行下載,非常適合腳本或遠端會話。
- -t 10:定義在出現臨時錯誤時的特定重試次數。
- –limit-rate=200k:將每次下載的最大頻寬調整為特定值。
- -p下載 HTML 頁面時,請同時拖曳圖片、CSS 和其他資源。
- –轉換連結:將絕對鏈接轉換為相對鏈接,以便離線使用。
但是,建議使用 wget 命令。 至少應採取最低限度的謹慎措施,以避免造成與安全或資源消耗相關的問題。以下是一些基本建議:
- 務必檢查網址 在下載任何內容之前,尤其是如果您以以下方式執行命令: 根為了避免下坡 惡意軟件 或不想要的內容。
- 了解你使用的選項特別是遞歸(-r、-mirror、-H、-np),以避免下載超出預期的資料或使伺服器過載。
- 控制遞迴 為避免抓取大型網站;調整 -ly -np 有助於限制抓取範圍。
- 盡可能遵守 robots.txt 的規定除非您有明確的許可可以忽略它,否則它會標記網站所有者不希望向網路爬蟲和下載者公開的區域。
- 使用 –limit-rate 設定速度限制 強烈建議在共享網路中使用,以免打擾其他用戶。
- 請勿禁用 HTTPS 驗證 除非你真的知道自己在做什麼,否則證書預設會被檢查,而且證書是重要的安全保障。
wget 的所有這些功能都使其更加完善。 一款用於在 Linux 系統上下載內容的瑞士軍刀從使用簡短命令下載簡單文件,到克隆整個網站、篩選特定文件類型、恢復中斷的下載、使用 FTP 或生成斷鍊報告,所有操作均可透過終端完成,並且可以透過腳本和 cron 作業輕鬆實現自動化。
對字節世界和一般技術充滿熱情的作家。我喜歡透過寫作分享我的知識,這就是我在這個部落格中要做的,向您展示有關小工具、軟體、硬體、技術趨勢等的所有最有趣的事情。我的目標是幫助您以簡單有趣的方式暢遊數位世界。