乐于分享
好东西不私藏

Surge 使用指南:如何高效下载大文件

Surge 使用指南:如何高效下载大文件

相信大家都有下载大文件的需求吧。由于工作的需要,我平时会到服务器上下载镜像、软件包之类的大文件,有时候下载任务一多,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.0

3. 使用说明

接下来将介绍 Surge 的基本功能,包括:

  1. 终端交互模式
  2. 服务器模式
  3. 浏览器插件

3.1 终端交互模式

Surge 中最常用的就是终端交互模式。它用起来很简单,只需要输入 surge 就可以打开界面:

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

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

如果需要批量下载文件,可以在命令后添加多个地址: 

1surge https://example.com/file1.zip https://example.com/file2.zip

也可以通过文本来下载:

1surge --batch urls.txt

3.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 MB

4. 性能测试

虽然 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
1m38.259s
1m34.089s
1m36.111s
wget
2m44.012s
2m48.608s
2m39.925s

从数据来看,虽然没有两倍那么夸张,但是 Surge 的效率明显更胜一筹。

5. 写在最后

Surge 作为一款高性能的下载工具,很适合用来下载一些大体积文件。它的安装和使用都比较简单,由于是跨平台的,所以在 Windows、Linux 以及 macOS 上都运行。实际测试下来,Surge 的性能表现也很不错,我很推荐大家来试试。

References

[1] Surge:https://github.com/surge-downloader/Surge