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

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

评论

主要区别在于wget用于下载内容,而curl用于通过使用特定协议来测试通信。

关于wget的一个有趣的事实:>仅使用qwerty键盘上的左键即可输入Wget!

来自curl作者:daniel.haxx.se/docs/curl-vs-wget.html

#1 楼

主要区别在于:
wgetcurl相比的主要优势是它具有递归下载功能。

wget仅限于命令行。没有lib或任何东西,但是curl的功能由libcurl提供支持。

curl支持FTPFTPSHTTPHTTPSSCPSFTPTFTPTELNETDICT,q4312079 LDAPLDAPSFILEPOP3IMAPSMTP支持RTMPRTSPwget

HTTP可以在比HTTPS更高的平台上构建和运行。

FTP是根据自由软件copyleft许可证(GNU GPL)发布的。 curl是根据免费软件许可许可证(MIT衍生产品)发布的。

wget提供上载和发送功能。 wget仅提供纯HTTP POST支持。

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

curl vs Wget

评论


谢谢,这正是我几个小时以来一直想知道的。我用wget在一个网站上做一个递归蜘蛛,似乎停滞在上面有多达数十亿个链接的页面上。现实情况是,它在一个内核上以100%CPU运行。希望有更好的东西可以做我一直在听说的新式多核产品。

–布莱恩·打顶
15年6月7日在10:13

wget所做的事情之一就是http镜像(或“蜘蛛”)功能。 curl非常擅长于它的功能,但是单独使用curl不能用于镜像网站。

–jsbillings
2015年9月26日在12:38

这些短语毫无意义:“并且所有版权均分配给FSF”,“完全独立且独立,根本没有组织为人父母”。很明显,cURL的作者是它的版权所有者。很明显,wget的作者是它的版权拥有者。但是两者都像自由软件一样是免费的。您可以改为说wget受copyleft许可,而cURL受许可许可。

–Valerio Bozz
18年4月11日在11:59

@ValerioBozz:其实没有。 curl和wget都是社区项目。使用curl时,每个人都拥有他们贡献的代码的版权。与其他大多数GNU程序一样,使用Wget时,各个作者将其版权都授予了FSF。也就是说,他们不再拥有该代码。这是为了允许FSF严格执行copyleft并在需要时重新许可代码。

–darnir
18年11月27日在23:20

答案末尾的超链接指向cURL的作者Daniel Sterberg撰写的文章。

–朱洪波
19年2月13日在10:59

#2 楼

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




wget是从服务器下载文件的工具

curl是使您交换请求/响应的工具使用服务器

wget

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

curl

与wget相比,Curl使您可以根据需要构建请求。将其与支持的众多协议结合在一起-FTPFTPSGopherHTTPHTTPSSCPSFTPTFTPTelnetDICTLDAPLDAPSIMAPPOP3SMTPRTSPURI (用于测试协议,测试服务器配置等)。

如前所述,您可以下载带有curl的文件。是的,但这只是“额外”。实际上,如果要通过wget不支持的协议下载文件,请使用CURL。

评论


实际上,wget也遵循重定向,然后保存响应,而不像curl那样。两者都可以实现与默认行为相反的wget -qO-http://google.co.uk/或curl http://google.co.uk/> index.html

–马特
14年8月15日在17:46

@mtm curl http://google.co.uk/> index.html并未使用内置功能。无论如何,主要区别是每种工具的用途。不可否认的是,工具在发展,并且偏离了最初的轨迹很多次。

– Pithikos
14年8月16日在10:24

@mtm curl http://google.co.uk -o index.html将使用curl的内部结构,而不是使用>进行shell输出重定向。

– Petrus回购
15年1月15日在11:35

#3 楼

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

#4 楼

我对wget和curl进行了一些性能测试,结果是:下载1MB文件时,平均运行时间是测试的100倍:

wget: 0.844s
cURL: 0.680s


下载5MB文件时测试的平均运行时间> 100倍:

wget: 1.075s
cURL: 0.863s

下载10MB文件时测试的平均运行时间100倍: br />
系统上的命令大小:

wget: 1.182s
cURL: 1.074s


评论


处理小文件时,基准会颠倒。我必须用wget代替curl来加速后端脚本,该脚本经常轮询对Web API的调用,但对每个脚本的响应都很少。我猜启动时间会有所不同。我还感到困惑的是,您的10M文件比1M文件只需要20%的下载时间。某些时候必须涉及缓存。我不认为您的基准有效。同样,命令大小并不能说明启动时需要加载的所有库的大小。

–oᴉɹǝɥɔ
12月9日20:05