Linux 中的 cURL 與 wget:有什麼區別?

已發表: 2022-07-13
顯示 bash 提示符的 Linux 筆記本電腦
fatmawati achmad zaenuri/Shutterstock.com

如果你問一群 Linux 用戶他們用什麼來下載文件,有些人會說wget而其他人會說cURL 。 有什麼區別,一個比另一個好?

它始於連接

早在 1960 年代,政府研究人員就開始將不同的網絡連接在一起,從而產生了相互連接的網絡。 但是我們所知道的互聯網的誕生是在 1983 年 1 月 1 日 TCP/IP 協議實施的時候。 這是缺失的環節。 它允許不同的計算機和網絡使用通用標准進行通信。

1991 年,CERN 發布了他們在內部使用了幾年的萬維網軟件。 對這種互聯網視覺覆蓋的興趣是直接而廣泛的。 到 1994 年底,已有 10,000 台 Web 服務器和 1000 萬用戶。

互聯網如何運作?
相關互聯網如何運作?

這兩個里程碑——互聯網和網絡——代表了非常不同的連接面。 但它們也有很多相同的功能。

連通性就是這個意思。 您正在連接到某個遠程設備,例如服務器。 你連接到它是因為它上面有你需要或想要的東西。 但是,如何從 Linux 命令行將該遠程託管資源檢索到本地計算機?

1996 年,出現了兩個實用程序,可讓您下載遠程託管資源。 它們是 1 月發布的wget和 12 月發布的cURL 。 它們都在 Linux 命令行上運行。 它們都連接到遠程服務器,並且它們都為您檢索內容。

但這不僅僅是 Linux 提供兩個或更多工具來完成相同工作的常見情況。 這些實用程序具有不同的目的和不同的專長。 問題是,它們非常相似,以至於會導致混淆使用哪個以及何時使用。

考慮兩名外科醫生。 您可能不希望眼科醫生進行心臟搭橋手術,也不希望心臟外科醫生進行白內障手術。 是的,他們都是高技能的醫療專業人員,但這並不意味著他們是彼此的臨時替代品。

wgetcURL也是如此。

目的不同,特點不同,有些重疊

wget命令中的“w”表示其預期用途。 它的主要目的是下載網頁——甚至是整個網站。 它的man頁將其描述為使用 HTTP、HTTPS 和 FTP 協議從 Web 下載文件的實用程序。

相比之下, cURL可以使用 26 種協議,包括 SCP、SFTP 和 SMSB 以及 HTTPS。 它的man頁說它是一種用於將數據傳輸到服務器或從服務器傳輸數據的工具。 它不適用於網站,特別是。 它旨在使用它支持的許多互聯網協議中的任何一種與遠程服務器進行交互。

因此, wget主要以網站為中心,而cURL是在更深層次上運行的東西,在普通的互聯網級別。

wget能夠檢索網頁,它可以遞歸地導航網絡服務器上的整個目錄結構以下載整個網站。 它還能夠調整檢索到的頁面中的鏈接,以便它們正確指向您本地計算機上的網頁,而不是遠程網絡服務器上的對應網頁。

cURL允許您與遠程服務器交互。 它可以上傳文件以及檢索它們。 cURL適用於 SOCKS4 和 SOCKS5 代理,以及 HTTPS 到代理。 它支持自動解壓 GZIP、BROTLI 和 ZSTD 格式的壓縮文件。 cURL還允許您並行下載多個傳輸。

它們之間的重疊之處在於wgetcURL都可以讓您檢索網頁,並使用 FTP 服務器。

這只是一個粗略的衡量標準,但您可以通過查看其man頁的長度來了解這兩個工具的相關功能集。 在我們的測試機器上, wget的手冊頁有 1433 行長。 cURLman頁多達 5296 行。

快速瀏覽 wget

因為wget是 GNU 項目的一部分,所以您應該會發現它預裝在所有 Linux 發行版上。 使用它很簡單,尤其是對於它最常見的用途:下載網頁或文件。

只需將wget命令與網頁或遠程文件的 URL 一起使用。

 wget https://file-examples.com/wp-content/uploads/2017/02/file-sample_100kB.doc 

使用 wget 下載 Word 文檔

該文件被檢索並以其原始名稱保存在您的計算機上。

下載 Word 文檔的 wget 命令的輸出

要使用新名稱保存文件,請使用-O (輸出文檔)選項。

 wget -O word-file-test.doc https://file-examples.com/wp-content/uploads/2017/02/file-sample_100kB.doc 

使用 wget 下載文件並用新名稱保存

檢索到的文件以我們選擇的名稱保存。

下載的文件被重命名為命令行提供的名稱

檢索網站時不要使用-O選項。 如果這樣做,所有檢索到的文件都將附加到一個文件中。

要檢索整個網站,請使用-m (鏡像)選項和網站主頁的 URL。 您還需要使用--page-requisites來確保下載正確呈現網頁所需的所有支持文件。 --convert-links選項調整檢索到的文件中的鏈接以指向本地計算機上的正確目標,而不是網站上的外部位置。

相關:如何使用 wget,終極命令行下載工具

快速瀏覽 cURL

cURL是一個獨立的開源項目。 它預裝在 Manjaro 21 和 Fedora 36 上,但必須安裝在 Ubuntu 21.04 上。

這是在 Ubuntu 上安裝 cURL 的命令。

 sudo apt install curl 

在 Ubuntu 上安裝 cURL

要下載與wget相同的文件,並以相同的名稱保存,我們需要使用此命令。 請注意, -o (輸出)選項是小寫的cURL

 curl -o word-file-test.doc https://file-examples.com/wp-content/uploads/2017/02/file-sample_100kB.doc 

使用 cURL 下載文件並使用新名稱保存

該文件已為我們下載。 下載過程中會顯示一個 ASCII 進度條。

文件以命令行中指定的名稱下載並保存

要連接到 FTP 服務器並下載文件,請使用-u (用戶)選項並提供用戶名和密碼對,如下所示:

 curl -o test.png -u 演示:密碼 ftp://test.rebex.net/pub/example/KeyGenerator.png 

使用 cURL 從 FTP 服務器下載文件

這將從測試 FTP 服務器下載並重命名文件。

使用 cURL 從 FTP 服務器成功下載

相關:如何使用 curl 從 Linux 命令行下載文件

沒有最好的

如果不問“你想做什麼?”就不可能回答“我應該使用哪個”。

一旦你理解了wgetcURL的作用,你就會意識到它們不是競爭的。 它們不滿足相同的要求,也沒有嘗試提供相同的功能。

下載網頁和網站是wget的優勢所在。 如果這就是您正在做的事情,請使用wget 。 對於其他任何事情——例如上傳,或使用任何其他協議——使用cURL