相信大家都有下载大文件的需求吧。由于工作的需要,我平时会到服务器上下载镜像、软件包之类的大文件,有时候下载任务一多,wget 这种命令就有点不够用了。刚好看到有人分享了一个高性能的下载工具,于是我就测试了一下。
1. 项目介绍
Surge[1] 是一个基于 Go 语言开发的高性能终端下载管理器,专为偏好键盘驱动工作流的用户设计 。它支持多连接并行、智能分块以及镜像负载均衡技术,可以大幅提升文件下载效率。
2. 快速安装
目前 Surge 最新版本为 v0.7.0,可以到 Releases 下载对应的安装包。以我安装的为例,命令如下:
12345678# 下载wget https://github.com/surge-downloader/Surge/releases/download/v0.7.0/Surge_0.7.0_linux_amd64.tar.gz# 解压tar -xf Surge_0.7.0_linux_amd64.tar.gz# 将工具放到 PATHmv surge /usr/local/sbin/安装完成后,可以查看 Surge 的版本:
12[root@localhost ~]# surge --versionSurge v0.7.03. 使用说明
接下来将介绍 Surge 的基本功能,包括:
终端交互模式 服务器模式 浏览器插件
3.1 终端交互模式
Surge 中最常用的就是终端交互模式。它用起来很简单,只需要输入 surge 就可以打开界面:

然后输入指令 a 来下载一个文件,在界面中填写 URL、镜像地址(如果有的话):

下载过程中可以看到进度、速度以及日志:

如果需要批量下载文件,可以在命令后添加多个地址:
1surge https://example.com/file1.zip https://example.com/file2.zip也可以通过文本来下载:
1surge --batch urls.txt3.2 服务器模式
Surge 中还有一个服务器模式。当启动该模式后,服务默认会监听在 1700 端口,可供其它服务器远程访问。
启动服务器模式也很简单,命令如下:
12345678# 启动服务器模式 surge server# 使用其它端口surge server --port 8080# 使用指定 API token 启动服务器 surge server --token <token>当服务启动后,其它服务器可以通过以下命令远程连接:
12# 修改 host 和 tokensurge connect 192.168.1.10:1700 --token <token>3.3 浏览器插件
有意思的是,Surge 还提供了 Chrome 和 Firefox 浏览器扩展,能够拦截浏览器下载并自动转发到 Surge 服务上。
首先到 Releases 中下载并安装插件,我用的是 Chrome 浏览器,这里就下载 extension-chrome.zip,安装后界面如下:

填写主机地址和 Token。如果信息无误,插件会处于“已连接”的状态:

记得要打开 Intercept Downloads 选项。这里我从浏览器下载了 Node.js,就成功转到服务器上了:
1234[root@localost ~]# surge lsID FILENAME STATUS PROGRESS SPEED SIZE-- -------- ------ -------- ----- ----905c2f47 node-v24.14.0-linux-x6... completed 100.0% 14.3 MB/s 31 MB4. 性能测试
虽然 Surge 的界面很漂亮,用起来也简单,但是它在下载大文件时的表现如何呢?如果它的下载速度和 wget 差不多,那就没什么意义了。
我找到了官方的 Benchmarks。相较于其它工具,Sruge 的下载速度还是很有优势的:

可以看到,Surge 的速度居然是 wget 的两倍。为了验证,我写了一个简易的脚本,用来对比两者的速度:
1234567891011121314151617181920#!/bin/bash URL="https://ash-speed.hetzner.com/1GB.bin"ITERATIONS=3echo"=== Surge vs wget 速度测试 ==="for i in $(seq 1 $ITERATIONS); doecho"第 $i 次测试:"# Surge 测试 echo -n "Surge: "time surge server $URL --output ./test --exit-when-done# wget 测试 echo -n "wget: "time wget -O ./test/file-wget.bin $URL# 清理 rm -f ./test/*done以下是我的测试结果:
从数据来看,虽然没有两倍那么夸张,但是 Surge 的效率明显更胜一筹。
5. 写在最后
Surge 作为一款高性能的下载工具,很适合用来下载一些大体积文件。它的安装和使用都比较简单,由于是跨平台的,所以在 Windows、Linux 以及 macOS 上都运行。实际测试下来,Surge 的性能表现也很不错,我很推荐大家来试试。
References
[1] Surge:https://github.com/surge-downloader/Surge
夜雨聆风