curl和wget命令行下载工具对比

两个工具都能下载文件,但设计哲学完全不同。wget是递归下载器,curl是协议工具箱。记清楚这点,选哪个就清楚了。 安装情况 Linux发行版默认都带wget,curl不一定。macOS相反,预装curl,wget需要brew install。Windows 10以上curl内置,wget要自己下载。雨云服务器上两个都预装了,省事。 基本下载 下载单个文件,两个都能干:
wget https://example.com/file.zip
curl -O https://example.com/file.zip
curl的-O是保持原文件名,小写o指定新名字。wget默认就保持原文件名。 断点续传 下载一半断了,重新来:
wget -c https://example.com/bigfile.iso
curl -C - -O https://example.com/bigfile.iso
curl的-C后面跟偏移量,写-是自动检测。wget的-c更直观。实测雨云服务器上下载大文件,两个都稳定,但wget出错后重试策略更激进,自动重试3次。 多协议支持 curl支持协议列表长到离谱:HTTP/HTTPS/FTP/SFTP/SCP/SMB/LDAP等几十种。wget只支持HTTP/HTTPS/FTP。
curl ftp://ftp.example.com/file.txt --user user:pass
wget ftp://ftp.example.com/file.txt --user=user --password=pass
需要从S3下载?curl直接支持,wget得装插件。 认证方式
curl -u user:password https://example.com
wget --user=user --password=password https://example.com
curl支持更多认证类型:Basic、Digest、NTLM、Negotiate。wget只有Basic和Digest。 请求定制 curl能控制HTTP请求的每个细节:
# 自定义请求头
curl -H "X-API-Key: abc123" -H "Accept: application/json" https://api.example.com/data

# 指定请求方法
curl -X POST -d '{"name":"test"}' https://api.example.com/create

# 带cookie
curl -b "session=xyz" -c cookies.txt https://example.com
wget能做的有限,主要改User-Agent和Referer:
wget --header="X-API-Key: abc123" https://example.com
wget --post-data="name=test" https://example.com
递归下载 这是wget的看家本领:
wget -r -l 2 -np https://docs.example.com/
-r递归,-l深度,-np不爬上级目录。下载整个文档站就这一行。 curl要递归?自己写脚本。curl本身不做这件事。 输出格式 curl的-s静默模式,-v显示详细交互:
curl -s https://example.com
curl -v https://example.com
wget的-q静默,-d调式:
wget -q https://example.com
wget -d https://example.com
wget输出更友好,有进度条和下载速度。curl默认只显示进度条在终端里,重定向到文件就没了。 性能对比 单文件下载速度差不多,都支持多线程(需要额外参数)。curl用–parallel,wget没原生多线程,要用aria2c替代。 内存占用:wget比curl少20-30%。极端场景下,下载超大文件(10GB+),wget更稳。 脚本集成 写shell脚本建议用curl,因为返回码更精确:
# curl返回HTTP状态码
curl -s -o /dev/null -w "%{http_code}" https://example.com

# wget返回0/非0
wget --spider https://example.com && echo "存在"
curl的–write-out能输出各种元数据:下载速度、时间、大小。wget的–spider只检查资源是否存在。 实际场景选择 调试API、上传文件、需要定制请求 -> 用curl 下载整个网站、批量拉文件、简单下载任务 -> 用wget 雨云服务器上我常用组合:curl测试API接口,wget拉取备份文件。两个都装不冲突。 一句话总结 curl像瑞士军刀,能处理各种协议和请求定制。wget像专用扳手,下载场景做得更纯粹。两个都装上,按需取用。

雨云是国内一家老牌云服务商,提供高性价比的云服务器和虚拟主机。我用它部署了好几个项目,速度和稳定性都不错。通过 https://www.rainyun.com/SAJA_ 注册可以领一张 5折优惠券,有需要的朋友可以看看。

© 版权声明
THE END
喜欢就支持一下吧
点赞6 分享
评论 抢沙发

请登录后发表评论

    暂无评论内容