curl 和 wget 有什么区别?

lak*_*esh 389 download utilities wget curl

我渴望知道的区别curlwget。两者都用于获取文件和文档,但它们之间的主要区别是什么。

为什么有两个不同的程序?

Sae*_*fam 409

主要区别是:

  • wget相比之下,curl它的主要优势在于它的递归下载能力。
  • wget只是命令行。没有 lib 或任何东西,但curl的功能由 libcurl 提供支持。
  • curl支撑件FTPFTPSHTTPHTTPSSCPSFTPTFTPTELNETDICTLDAPLDAPSFILEPOP3IMAPSMTPRTMPRTSPwget支持HTTP,HTTPSFTP.
  • curl构建和运行在比wget.
  • wget是在自由软件版权许可(GNU GPL)下发布的。curl是在自由软件许可协议(MIT 衍生产品)下发布的。
  • curl提供上传和发送功能。wget仅提供纯 HTTP POST 支持。

您可以在以下链接中查看更多详细信息:

卷曲与 Wget

  • 谢谢,这正是我几个小时以来一直想知道的。我使用 wget 在一个网站上做一个递归蜘蛛,似乎在一个有 110 多个链接的页面上停滞不前。现实情况是它在一个内核上以 100% 的 CPU 运行。希望有更好的东西可以做我一直听说的那种新奇的多核事情。 (2认同)
  • `wget` 所做的一件事被排除在这个答案之外是 http 镜像(或“蜘蛛”)能力。`curl` 非常擅长它的功能,但它本身并不是用来镜像网站的。 (2认同)
  • @ValerioBozz:实际上没有。curl 和 wget 都是社区项目。使用 curl,每个人都拥有他们贡献的代码的版权。对于 Wget,与大多数其他 GNU 程序一样,不同的作者将他们的版权交给 FSF。也就是说,他们不再拥有该代码。这是为了允许 FSF 严格执行 Copyleft 并在需要时重新许可代码。 (2认同)

Pit*_*kos 103

它们是为不同的目的而制造的

  • wget 是一个从服务器下载文件的工具
  • curl 是一种工具,可让您与服务器交换请求/响应

获取

Wget 仅允许您从HTTP/HTTPSFTP服务器下载文件。你给它一个链接,它会自动下载链接指向的文件。它会自动构建请求。

卷曲

与 wget 相比,curl 允许您根据需要构建请求。再加上协议的支持多如牛毛- ,FTPFTPSGopherHTTPHTTPSSCPSFTPTFTPTelnetDICTLDAPLDAPSIMAP,,和-你得到一个惊人的调试工具(用于测试的协议,测试服务器配置等)。POP3SMTPRTSPURI

正如许多人已经提到的,您可以使用 curl 下载文件。没错,但这只是一个“额外”。实际上,当您想通过 wget 不支持的协议下载文件时,请使用 CURL。

  • 实际上 `wget` 也跟随重定向然后保存响应,不像 `curl`。两者都可以实现与默认行为相反的行为 `wget -qO - http://google.co.uk/` 或 `curl http://google.co.uk/ > index.html` (2认同)
  • @mtm `curl http://google.co.uk/ > index.html` 没有使用内置功能。无论如何,主要区别在于每个工具的**目的**。不可否认,工具会不断发展并多次偏离其初始轨迹。 (2认同)
  • @mtm `curl http://google.co.uk -o index.html` 将使用curl 的内部结构,而不是使用`>` 进行shell 输出重定向。 (2认同)

sen*_*nfo 23

实际上,主要区别在于curl包含一个库 ( libcurl),并且该库被其他应用程序广泛使用。 wget是独立的。


Fer*_*man 14

我用 wget 和 curl 做了一些性能测试,结果是:

下载1MB文件时经过 100 次测试的平均运行时间:

wget: 0.844s
cURL: 0.680s
Run Code Online (Sandbox Code Playgroud)

下载5MB文件时经过 100 次测试的平均运行时间:

wget: 1.075s
cURL: 0.863s
Run Code Online (Sandbox Code Playgroud)

下载10MB文件时经过 100 次测试的平均运行时间:

wget: 1.182s
cURL: 1.074s
Run Code Online (Sandbox Code Playgroud)

系统上的命令大小:

wget: 371K
cURL: 182K
Run Code Online (Sandbox Code Playgroud)

  • 在处理小文件时,基准是相反的。我不得不用 wget 替换 curl 来加速后端脚本,这些脚本经常轮询 Web API 调用,并对每个调用做出小的响应。我的猜测启动时间有所不同。我也很困惑你的 10M 文件下载时间比 1M 长 20%。在某些时候必须涉及缓存。我不相信你的基准是有效的。命令 size 也没有说明它在启动时需要加载的所有库的大小。 (5认同)