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