实测对比

aria2、wget 与 curl:实测数据,而非猜测

三者都能在命令行下载文件,但它们是为不同的任务设计的。我们在同一台机器、同样的测试服务器上把它们放在一起运行,并记录下每一个数字。

最后更新: 已用 aria2 1.37.0 测试

简短结论

aria2

大文件、慢速服务器、大量下载、种子

  • 服务器限制单个连接速度时,最多快 10 倍
  • 内置 BitTorrent、Metalink 和镜像支持
  • 一台可以通过 RPC 控制的下载服务器

wget

简单下载和复制整个网站

  • 我们的测试中内存占用最小
  • 用 -r 递归镜像网站
  • 几乎所有系统都预装

curl

调用 API、上传和用脚本处理任意协议

  • 我们测试的版本支持 25 种协议
  • 支持上传、表单和完整的 HTTP 控制
  • 记得用 -L 跟随重定向

从限制单连接速度的服务器下载一个大文件

镜像站和网盘经常限制单个连接的速度。我们的测试服务器在 24 MiB/s 的线路上允许每个连接 2 MiB/s。文件大小:50 MB。

下载 50 MB 用时(越短越快)服务器单连接限速 2 MiB/s,带宽 24 MiB/s。测试日期:2026-10-27。
以表格显示
工具命令秒
wget24.0wget URL · 24.0 秒
curl24.0curl -O URL · 24.0 秒
aria2,1 个连接24.1aria2c URL · 24.1 秒
aria2 -x16 -s1612.2aria2c -x16 -s16 URL · 12.2 秒
aria2 -x16 -s16 -k1M2.3aria2c -x16 -s16 -k1M URL · 2.3 秒

只用一个连接时,三者都要 24 秒:速度由服务器决定。aria2 用 16 个连接花了 12.2 秒,因为它默认的 -k 20M 只把 50 MB 的文件拆成 2 个分块。加上 -k1M 后,它用满了全部 16 个连接,2.3 秒就完成了。

同时下载 20 个文件

从一台服务器下载二十个 2 MB 的文件,该服务器给每个请求增加 80 ms 延迟,并把每个连接限制在 2 MiB/s。wget 和普通的 curl 一个接一个地下载;curl --parallel 和 aria2 同时下载多个。

下载 20 个文件的用时(越短越快)20 × 2 MB,80 ms 延迟,每个连接 2 MiB/s。测试日期:2026-10-27。
以表格显示
工具命令秒
wget -i21.8wget -i urls.txt · 21.8 秒
curl,逐个下载21.9xargs -n1 curl -O < urls.txt · 21.9 秒
curl --parallel5.5curl --parallel --parallel-max 5 -O … · 5.5 秒
aria2c -i4.5aria2c -i urls.txt · 4.5 秒
aria2c -i -j16 -x42.0aria2c -i urls.txt -j16 -x4 -k1M · 2.0 秒

aria2 默认同时运行 5 个下载,在同样的并发数下比 curl --parallel 略快。加上 -j16 -x4 后,它达到了线路上限:2.0 秒,而 wget 需要 21.8 秒。五次运行得到的文件完全一致。

服务器不限制连接时

在一台不限速的本地服务器上,三者下载 50 MB 文件都不到一秒,wget 和 curl 比 aria2 略快一点,因为 aria2 会先为文件预留磁盘空间。如果一个连接已经能跑满你的带宽,增加连接数也不会更快。

内存

在同一次 HTTP 下载过程中测量。“自身内存”是程序为自己分配的内存;总量还包括共享的系统库。

工具自身内存总量(RSS)
wget 0.7 MiB 4.7 MiB
curl 1.5 MiB 10.4 MiB
aria2 4.5 MiB 17.1 MiB

wget 最精简。aria2 需要更多内存,因为它要随时准备好下载引擎、磁盘缓存和 BitTorrent 代码,但 4.5 MiB 仍然很小:aria2 官方给出的数字是 4–9 MiB。

继续中断的下载

我们在限速下载进行到一半时中断每个工具,然后重新启动。三者最终都得到了正确的文件:wget 用 -c,curl 用 -C -,aria2 用 -c。aria2 即使不加 -c 也能断点续传,因为它的 .aria2 控制文件记录了哪些分块已经完成。注意 aria2 会先预留完整的文件大小,所以未下载完的文件已经显示为最终大小。

重定向:curl 的陷阱

很多下载链接会重定向到镜像。wget 和 aria2 默认跟随重定向。curl 不会:不加 -L 时,它保存了一个空文件,退出码却仍然是 0,脚本根本发现不了。用 curl 下载时请始终加上 -L。

各工具能做什么

对照每个工具的文档核对,并尽可能实际运行验证。

aria2wgetcurl
一个文件用多个连接下载 支持 不支持 不支持
同时从多个镜像下载一个文件 支持 不支持 不支持
BitTorrent 和磁力链接 支持 不支持 不支持
Metalink 支持 部分版本 不支持
断点续传 支持 支持 支持
远程控制(RPC) 支持 不支持 不支持
镜像整个网站 不支持 支持 不支持
上传、25+ 种协议、API 不支持 不支持 支持
大多数 Linux 系统预装 不支持 支持 支持

同一任务在三个工具中的写法

除最后两行外,每一行都在我们的测试服务器上运行过,数值换成了我们自己的;每条命令都得到了正确的文件。

任务wgetcurlaria2c
下载一个文件 wget URLcurl -O URLaria2c URL
以其他文件名保存 wget -O name.iso URLcurl -o name.iso URLaria2c -o name.iso URL
保存到指定文件夹 wget -P dir URLcurl --output-dir dir -O URLaria2c -d dir URL
断点续传 wget -c URLcurl -C - -O URLaria2c -c URL
把速度限制在 1 MiB/s wget --limit-rate=1m URLcurl --limit-rate 1M -O URLaria2c --max-download-limit=1M URL
最多重试 10 次 wget --tries=10 URLcurl --retry 10 -O URLaria2c --max-tries=10 URL
发送一个请求头 wget --header="X-Key: 1" URLcurl -H "X-Key: 1" -O URLaria2c --header="X-Key: 1" URL
设置 User-Agent wget -U "Agent/1" URLcurl -A "Agent/1" -O URLaria2c -U "Agent/1" URL
HTTP 登录 wget --user=U --password=P URLcurl -u U:P -O URLaria2c --http-user=U --http-passwd=P URL
下载 URL 列表 wget -i urls.txtxargs -n1 curl -O < urls.txtaria2c -i urls.txt
跳过证书检查 wget --no-check-certificate URLcurl -k -O URLaria2c --check-certificate=false URL
跟随重定向 wget URLcurl -L -O URLaria2c URL
用 16 个连接下载一个文件 不支持不支持aria2c -x16 -s16 -k1M URL
下载种子 不支持不支持aria2c file.torrent
复制一个网站 wget -r -np URL不支持不支持

该用哪一个?

  • 从慢速或繁忙的服务器下载大文件aria2c -x16 -s16 -k1M
  • 按列表下载数百个文件aria2c -i urls.txt -j16
  • 种子、磁力链接或 Metalinkaria2c
  • 用浏览器或手机控制的下载队列aria2c --enable-rpc 配合 WebUI
  • 整个网站或目录树wget -r -np
  • API 调用、上传或表单curl
  • 在刚登录的服务器上临时下载一个文件wget 或 curl -L,系统已预装

常见问题

aria2 总是比 wget 快吗?
不是。当服务器限制单个连接的速度,或同时下载很多文件时,aria2 更快:在我们的测试中最多快 10 倍。如果一个连接已经能跑满你的带宽,wget 和 curl 同样快,在我们不限速的本地服务器上甚至略快一些。
curl 能用多个连接下载一个文件吗?
它本身不能。curl --parallel 可以同时下载多个 URL,但每个文件仍然只用一个连接。aria2 会把一个文件拆成多个分块并行下载。
可以在脚本中用 aria2 代替 wget 吗?
就下载而言可以:aria2c -o name -d dir URL 覆盖了 wget -O 和 -P 的功能,退出码会告诉脚本出了什么问题。aria2 不能复制整个网站,这种情况请继续用 wget。
哪个占用内存更少?
wget:在我们的测试中自身内存为 0.7 MiB,curl 为 1.5 MiB,aria2 为 4.5 MiB。三者都小到足以在树莓派或路由器上运行。
wget 支持 BitTorrent 吗?
不支持。wget 和 curl 都不能下载种子或磁力链接。aria2 既是完整的 BitTorrent 客户端,也是 HTTP 和 FTP 下载工具。

相关内容