Admin

【教程】Linux 如何进行多线程下载

前言

最近需要从本地传一个文件到纽约的buyvm服务器(千兆带宽、Debian9),奈何本地带宽小加上速度不理想,就尝试先传到onedrive上,再利用oneindex下载到目标服务器,说干就干,经过简单的google搜索,可以知道:wget是不支持多线程下载的,可以尝试安装其他应用。

正文

本文尝试使用两款工具:axel和aria2
由于我服务器使用的是debian9系统,所以也以debian9为例

axel

安装

安装步骤很简单:
首先去github下载其releases包

wget https://github.com/axel-download-accelerator/axel/releases/download/v2.17.9/axel-2.17.9.tar.bz2

解压并打开解压后的文件夹:

tar -xjvf axel-2.17.9.tar.bz2
cd axel-2.17.9

安装程序

./configure && make && make install

创建软链接

ln ./axel /usr/bin/axel

之后可以尝试运行命令:axel --version 试试是否已成功安装。

使用

语法

axel [options] url1 [url2] [url...]

选项

--max-speed=x , -s x         # 最高速度x
--num-connections=x , -n x   # 连接数x
--output=f , -o f            # 下载为本地文件f
--search[=x] , -S [x]        # 搜索镜像
--header=x , -H x            # 添加头文件字符串x(指定 HTTP header)
--user-agent=x , -U x        # 设置用户代理(指定 HTTP user agent)
--no-proxy , -N             # 不使用代理服务器
--quiet , -q                # 静默模式
--verbose ,-v               # 更多状态信息
--alternate , -a            # Alternate progress indicator
--help ,-h                  # 帮助
--version ,-V               # 版本信息

例子,以10个线程下载vultr的测试文件:

axel -n 10 http://sjo-ca-us-ping.vultr.com/vultr.com.1000MB.bin

可以看到速度非常夸张(差不多跑满了带宽):

aria2

由于axel在通过在线oneindex的文件时总是出现一些奇怪的问题(cloudflare 500错误等),这里尝试换用aria2进行下载

安装

由于debian内置源存有aria2的包,那么这里可以直接通过apt-get下载:

apt-get install aria2

使用

具体的命令参数就不贴了,网上有很多了,就举个简单例子好了:

aria2c -x [线程数] [URL]

可以看到效果不错,速度提升很明显(wget下载速度1.6M/s左右)