mwget:用 Rust 写的多线程 wget,终于让下载体验现代化了

0 阅读2分钟

如果你曾经用 wget 下载大文件或者整站镜像,却只能单线程慢慢等,那种煎熬你一定懂。 wget 自 1996 年诞生以来,虽然可靠,但性能早已跟不上现在的网络和硬件。

现在,有了 mwget —— 一个完全用 Rust 重写的 wget 高性能实现。它保留了你熟悉的命令行用法,同时加入真正的多线程并发下载,让下载速度飞起来。

GitHub 项目地址:github.com/rayylee/mwg…

为什么需要 mwget?

传统 wget 和 curl 在下载单个文件时通常只开一条连接,而 mwget 通过 -n 参数可以同时开启多个 HTTP 连接并发下载。 在高速宽带下,下载大文件(如 ISO、视频、数据集、压缩包)时,速度提升非常明显。

不仅如此,因为是用 Rust 编写,还有很多优势:

  • 内存安全 + 高性能,避免 C/C++ 常见的各种坑
  • 代码简洁、易于维护和理解

核心特性

mwget 已经支持了日常使用中最常用的一系列 wget 选项:

  • -n / --number NUM:指定并发连接数(核心杀手锏)
  • -O / --output-document:自定义输出文件名(已修复特殊设备文件处理)
  • -c / --continue:断点续传
  • 递归下载、目录控制等基础功能正在逐步完善
  • 支持自定义 User-Agent、Header、Referer、超时、重试次数等
  • -q 安静模式、--no-check-certificate 等实用选项

项目宣称:相比单线程工具,平均快 4 倍(提升 300%) ,最高可达 2x~10x 提速。 官方基准测试(下载耗时,单位毫秒):

官方基准测试(下载耗时,单位毫秒):

文件大小mwgetwgetcurl
small25381023210231
mid127925125451310
large51335205279205341

安装方法

从源码编译

git clone https://github.com/rayylee/mwget.git
cd mwget
cargo build --release
# 可执行文件在 target/release/mwget
sudo cp target/release/mwget /usr/local/bin/   # 可选,全局可用

或者直接下载编译好的二进制(包含musl静态编译版本): github.com/rayylee/mwg…

使用示例

普通单文件下载(和 wget 用法几乎一样):

mwget https://example.com/large-file.iso

多线程加速(根据你的带宽调整):

mwget -n 8 https://example.com/10gb-archive.tar.gz

mwget 没有试图一夜之间取代 GNU wget 的所有功能,而是专注于“把你最常用的 80% 场景做到极致快且安全”。 如果你每天都在终端里和下载打交道,强烈建议把 mwget 加入你的工具箱。

⭐ 去 GitHub 点个 Star 吧,下次下载大文件时试试看,下载进度条会让你眼前一亮。

项目链接: github.com/rayylee/mwg…