必备极速多线程并行下载工具 — aria2
aria2 是一款免费开源跨平台且不限速的多线程下载软件,其优点是速度快、体积小、资源占用少;支持 HTTP / FTP / BT / Magnet 磁力链接等类型的文件下载;支持 Win、Mac、Linux 系统,甚至在树莓派、NAS、路由器等设备上都能安装它。强大的地方,结合第三方插件,可以扩展,下载百度网盘等资源,居家下片必备神器。
官网:https://aria2.github.io
aria2 并行下载的原理:
分段下载:aria2 将下载的文件分成多个较小的段(chunk),每个段的大小可以通过参数进行设置。然后,aria2 同时启动多个线程,每个线程负责下载不同的段,从而实现同时下载多个片段的目的。
多连接下载:aria2 可以同时使用多个连接下载同一文件的不同段。在 HTTP/HTTPS 下载中,这通常是通过断点续传来实现的。它向服务器请求文件的不同部分,服务器将这些部分作为不同的片段返回给 aria2,然后 aria2 会合并这些片段,组装成完整的文件。
服务器支持:为了实现多线程下载,服务器必须支持断点续传功能。如果服务器不支持断点续传,aria2 将无法使用多线程下载。
带宽控制:aria2 可以设置最大下载速度(速度限制)和最大连接数,以控制下载时的带宽使用情况。这样可以避免过多的连接和下载速度过快,从而平衡带宽资源的利用。
多线程下载的优势在于能够利用更多的网络资源,提高下载速度,尤其在高带宽和高延迟的网络环境中,多线程下载能显著地提升下载效率。然而,要实现有效的多线程下载,需要下载服务器支持断点续传,并且服务器端的带宽和处理能力也需要足够强大,否则可能会导致服务器负担过重或被封禁。因此,在使用aria2进行多线程下载时,需要适度设置连接数和速度限制,以免对服务器和网络造成不必要的负担。
扫码关注微信公众号【生信F3】获取更多生物信息学最新知识。
1 安装方式
1.1 使用 Docker 容器
官方介绍:https://p3terx.com/archives/docker-aria2-pro.html
Aria2 是目前最强大的全能型下载工具,它支持 BT、磁力、HTTP、FTP 等下载协议,常用做离线下载的服务端。目前有非常多的 Aria2 Docker 方案,大多都整合了 WebUI 和文件管理功能,看似很好很强大,实际上都只是做了简单的打包的工作,完全没有考虑到核心的下载体验和资源占用等问题。这也导致很多人在初次使用 Aria2 时会遇到 BT 下载无速度、文件残留占用空间、任务丢失等问题,所以会觉得 Aria2 并不好用,但事实并非如此。Aria2 完美配置是博主经过长时间使用和研究官方文档后总结出来的一套配置方案,其最初目的是为了解决这些问题,而且为 Aria2 添加了额外的一些功能,经过一年多时间的打磨已经积累了大量的使用者和良好的口碑,其中不乏一些知名开源项目开发者、影视字幕组、科技视频 UP 主。之前一直使用一键脚本作为部署方案,为了满足小伙伴们使用 Docker 部署的需求,博主特意制作了基于 Aria2 完美配置和特殊定制优化的 Aria2 Docker ,为了和一般的 Aria2 Docker 方案做区分所以将其取名为 Aria2 Pro。
https://hub.docker.com/r/p3terx/aria2-pro
docker pull p3terx/aria2-pro
singularity pull docker://p3terx/aria2-pro
1.2 Linux 下安装
# Debian | Ubuntu | Mint
$ sudo apt-get install aria2
# CentOS | RHEL | Fedora 21 和更早些的操作系统
$ sudo yum install aria2
# Fedora 22 和之后的系统
$ sudo dnf install aria2
# 对于 suse 和 openSUSE
$ sudo zypper install wget
# Mageia
$ sudo urpmi aria2
# 对于 Arch Linux
$ sudo pacman -S aria2
2 下载文件
2.1 Windows 下使用
推荐使用以 aria2 为内核的桌面应用 Motrix(https://motrix.app/)。Motrix 是一款全能的下载工具,支持下载 HTTP、FTP、BT、磁力链等资源。
2.2 Linux 下使用
2.1 基本用法
$ aria2c [OPTIONS] [URI | MAGNET | TORRENT_FILE | METALINK_FILE]...
从 WEB 下载:
$ aria2c http://example.org/mylinux.iso
下载两个文件:
$ aria2c http://a/f.iso ftp://b/f.iso
每台主机使用 4 个连接下载:
$ aria2c -x4 -s4 http://a/f.iso
BitTorrent 下载
$ aria2c http://example.org/mylinux.torrent
BitTorrent 磁力链接(Magnet URI):
$ aria2c 'magnet:?xt=urn:btih:248D0A1CD08284299DE78D5C1ED359BB46717D8C'
通过 Metalink 下载:
$ aria2c http://example.org/mylinux.metalink
利用保存在文本文件中的 URI 下载:
$ aria2c -i uris.txt
2.2 选项参数
-d, --dir=<DIR>
指定文件下载目录。
-i, --input-file=<FILE>
指定保存 URI 下载链接的输入文件,例如:
http://example.com/foo
http://example.com/bar
-j, --max-concurrent-downloads=<N>
设置并发下载项的数量。默认值:5
注意:--max-concurrent-downloads
用于限制并发下载项的数量。--split
和 --min-split-size
影响每条项内的连接数。以上述 -i
参数的输入文件为例,其存在 2 个下载项(item),如果给 --max-concurrent-downloads
赋值大于或等于 2,aria2 可以并发地下载这些项。在每个下载项中,我们可以使用 --split
和/或 min-split-size
等配置连接数。
-c, --continue [true|false]
继续下载部分下载的文件。使用此选项可以恢复由 web 浏览器或其他程序开始的下载,这些程序从头向后下载文件。目前此选项仅适用于 HTTP(S)/FTP 下载。注意:如果出现了任何中断,aria2 使用 .aria2
后缀保存(未完成的)文件。
-x, --max-connection-per-server=<NUM>
每次下载中针对一台服务器的最大连接数。默认值:1
-k, --min-split-size=<SIZE>
例如,让我们考虑下载 20MiB 文件。如果 SIZE 为 10M,aria2 可以将文件拆分为 2 个范围 [0-10MiB] 和[10MiB-20MiB],并使用 2 个源(如果 --split >= 2
)同时下载它。如果 SIZE 为 15M,由于 2*15M >20MiB, aria2 不拆分文件并使用 1 个源下载。我们可以添加 K 或 M (1K = 1024, 1M = 1024K)。取值范围:1M ~ 1024m。默认值:20M
-s, --split=<N>
使用 N 个连接下载文件。如果给定的 URI 多于 N 个,则使用前 N 个 URI,其余的 URI 用于备份。如果给出的URI 少于 N 个,则这些 URI 将被重复使用,从而同时建立总共 N 个连接。到同一台主机的连接数由 --max-connection-per-server
选项限制。默认值:5
下面的命令将会从 NCBI 下载 Nr 数据库文件,并且保存在当前目录:
aria2c --file-allocation=none --continue=true --max-connection-per-server=5 -j5 https://ftp.ncbi.nlm.nih.gov/blast/db/FASTA/nr.gz
-
--file-allocation=none
:指定文件分配方法。'none' 不预先分配文件空间。 -
--continue=true
-
--max-connection-per-server=5
-
-j10
-
-o
:在初始化下载的时候,我们可以使用选项在保存文件的时候使用不同的名字
在下载文件的过程中,我们可以看到文件的(日期、时间、下载速度和下载进度)
扫码关注微信公众号【生信F3】获取更多生物信息学最新知识。
本文由 mdnice 多平台发布