Linux命令 Aria2


原文链接: Linux命令 Aria2

aria2/aria2: aria2 is a lightweight multi-protocol & multi-source, cross platform download utility operated in command-line. It supports HTTP/HTTPS, FTP, SFTP, BitTorrent and Metalink.
aria2配置示例 | Binuxの杂货铺
Aria2c 使用举例
##多线程下载axel
axel -q -n 10 -o /tmp/ http://soft.vpser.net/lnmp/lnmp0.7-full.tar.gz

aria2c -c -x5 https://atlas.hashicorp.com/hashicorp/boxes/precise64/versions/1.1.0/providers/virtualbox.box
-c 断点续传
-x2 多线程 同一host建立多个连接
-s2 大文件分段下载
--max-upload-limit=100K 调节上传速度(Throttle upload speed)

Aria2 是一个轻量级多协议和多源 命令行 下载实用工具。它支持 HTTP / HTTPS, FTP, SFTP, bt 和 Metalink。通过内置 Aria2 可以操作 json - rpc 和 xml - rpc。对,Aria2 没有 GUI 图形界面,只有粗糙的命令行界面!但这也正是 Aria2 之轻快好省所在。

#命令行模式

我们可以在命令行中非常简单地调用 aria2 进行多种协议的下载操作。例如:

普通下载:
aria2c http://example.org/mylinux.iso

多个源下载文件:同时使用两个连接
aria2c http://a/f.iso ftp://b/f.iso

多线程下载
aria2c -x2 http://a/f.iso

断点续传
aria2c -c http://host/partiallydownloadedfile.zip

从 txt 文本文档中获取下载链接下载文件:
aria2c -i http://www.url.com/url.txt
-j5 用于指定同时下载的文件的数量

写入到 /dev/null (Writing to /dev/null)
aria2c -d /dev -o null --allow-overwrite=true http://example.org/file

为所有的连接设置代理服务器(Set proxy server to use all protocols(HTTP(S)/FTP))

aria2c --all-proxy='http://proxy:8080' http://host/file
aria2c --http-proxy='http://proxy:8080' --http-proxy-user='username' --http-proxy-passwd='password' http://host/file
aria2c --http-proxy='http://username:password@proxy:8080' http://host/file

使用 BitTorrent 协议下载:
$ aria2c http://example.org/mylinux.torrent

使用磁力链接(Magnet URI)进行下载:
$ aria2c 'magnet:?xt=urn:btih:248D0A1CD08284299DE78D5C1ED359BB46717D8C'

Metalink:
$ aria2c http://example.org/mylinux.metalink

下载 text 文本文件中的链接:
$ aria2c -i uris.txt

简易版的 Aria2 至此就部署完毕,你可以在 Web 控制前段方便地添加下载链接/bt种子了。如要想要进一步使用 Aria2,往下读吧。
进阶 Aria2

配置文件 aria2.conf 详解

更多参数请参考官方说明文档: http://aria2.sourceforge.net/manual/en/html/aria2c.html

网友翻译的部分内容: http://sydi.org/posts/linux/aria2c-usage-sample-cns.html#fn.1

'#'开头为注释内容, 选项都有相应的注释说明, 根据需要修改

被注释的选项填写的是默认值, 建议在需要修改时再取消注释

基本选项

文件的保存路径(可使用绝对路径或相对路径), 默认: 当前启动位置

dir=~/downloads

启用磁盘缓存, 0为禁用缓存, 需1.16以上版本, 默认:16M

disk-cache=32M

文件预分配方式, 能有效降低磁盘碎片, 默认:prealloc

预分配所需时间: none < falloc ? trunc < prealloc

falloc和trunc则需要文件系统和内核支持

NTFS建议使用falloc, EXT3/4建议trunc, MAC 下需要注释此项

file-allocation=none

断点续传,目前只支持 HTTP/HTTPS/FTP 协议

continue=true
#检查文件完整性,默认:false
check-intergrity=false
#帮助信息分类
#一个标签以#开头
#可用标签: #basic, #advanced, #http, #https, #ftp, #metalink, #bittorrent, #cookie, #hook, #file, #rpc, #checksum, #experimental, #deprecated, #help, #all Default: #basic
#默认为#basic
help=#basic

下载连接相关

最大同时下载任务数, 运行时可修改, 默认:5

max-concurrent-downloads=1

同一服务器连接数, 添加时可指定, 默认:1

max-connection-per-server=5

最小文件分片大小, 添加时可指定, 取值范围1M -1024M, 默认:20M

假定size=10M, 文件为20MiB 则使用两个来源下载; 文件为15MiB 则使用一个来源下载

min-split-size=10M

单个任务最大线程数, 添加时可指定, 默认:5

split=5

整体下载速度限制, 运行时可修改, 默认:0

#max-overall-download-limit=0

单个任务下载速度限制, 默认:0

#max-download-limit=0

整体上传速度限制, 运行时可修改, 默认:0

#max-overall-upload-limit=0

单个任务上传速度限制, 默认:0

#max-upload-limit=0

禁用IPv6, 默认:false

disable-ipv6=true

进度保存相关

从会话文件中读取下载任务

input-file=/etc/aria2/aria2.session

在Aria2退出时保存错误/未完成的下载任务到会话文件

save-session=/etc/aria2/aria2.session

定时保存会话, 0为退出时才保存, 需1.16.1以上版本, 默认:0

#save-session-interval=60

RPC相关设置

启用RPC, 默认:false

enable-rpc=true

允许所有来源, 默认:false

rpc-allow-origin-all=true

允许非外部访问, 默认:false

rpc-listen-all=true

事件轮询方式, 取值:[epoll, kqueue, port, poll, select], 不同系统默认值不同

#event-poll=select

RPC监听端口, 端口被占用时可以修改, 默认:6800

#rpc-listen-port=6800

设置的RPC授权令牌, v1.18.4新增功能, 取代 --rpc-user 和 --rpc-passwd 选项

#rpc-secret=

设置的RPC访问用户名, 此选项新版已废弃, 建议改用 --rpc-secret 选项

#rpc-user=

设置的RPC访问密码, 此选项新版已废弃, 建议改用 --rpc-secret 选项

#rpc-passwd=

BT/PT下载相关

当下载的是一个种子(以.torrent结尾)时, 自动开始BT任务, 默认:true

#follow-torrent=true

BT监听端口, 当端口被屏蔽时使用, 默认:6881-6999

listen-port=51413

单个种子最大连接数, 默认:55

#bt-max-peers=55

打开DHT功能, PT需要禁用, 默认:true

enable-dht=false

打开IPv6 DHT功能, PT需要禁用

#enable-dht6=false

DHT网络监听端口, 默认:6881-6999

#dht-listen-port=6881-6999

本地节点查找, PT需要禁用, 默认:false

#bt-enable-lpd=false

种子交换, PT需要禁用, 默认:true

enable-peer-exchange=false

每个种子限速, 对少种的PT很有用, 默认:50K

#bt-request-peer-speed-limit=50K

客户端伪装, PT需要

peer-id-prefix=-TR2770-
user-agent=Transmission/2.77

当种子的分享率达到这个数时, 自动停止做种, 0为一直做种, 默认:1.0

seed-ratio=0

强制保存会话, 话即使任务已经完成, 默认:false

较新的版本开启后会在任务完成后依然保留.aria2文件

#force-save=false

BT校验相关, 默认:true

#bt-hash-check-seed=true

继续之前的BT任务时, 无需再次校验, 默认:false

bt-seed-unverified=true

保存磁力链接元数据为种子文件(.torrent文件), 默认:false

bt-save-metadata=true

新建链接任务进阶

直接添加链接下载文件:

http://www.url.com/file.zip

从多个地址源下载同一个文件(用空格隔开):

http://www.url1.com/file.zip www.url2.com/file.zip

使用 n 个线程下载文件("x2" 就是 2 个线程):

-x2 http://www.url.com/file.zip

基本使用
下载一个文件(Download a file):

aria2c http://host/image.iso

说明:1.10.0以后的版本默认对每个 host 使用 1 个连接,你可以使用 –max-connection-per-server 或者 -x 选项进行改变。
用每个 host 两个连接从一个 host 下载一个文件(To download a file using 2 connections from single host):

aria2c -x2 http://host/image.iso

说明:想要停止下载,可以按Ctrl-C。想要恢复下载,可以在同一个文件夹中执行相同的下载命令。只要URI指向同一个文件,URIs是可以被改变的。
同时使用两个连接下载同一文件(Download a file using 2 connections):

aria2c -s2 http://host/image.iso http://mirror1/image.iso http://mirror2/image.iso

说明:你可以指定URIs的数量多余 -s 选项设定的数。在这个例子中,前两个URL会被用于下载,而第三个URL作为备用(如果前面两个有个挂了,第三个顶上)。
同时从FTP和HTTP源下载一个文件(Download a file from HTTP and FTP servers):

aria2c http://host1/file.zip ftp://host2/file.zip

并行下载任意数目的URI, metalink, torrent(Parallel downloads of arbitrary number of URI, metalink, torrent):

aria2c -Z http://host/file1 file2.torrent file3.metalink

说明:如果你只是下载 torrent 和 metalink 的文件,那么选项 -Z 将不是必须的。所以你可以使用以下这个命令同时下载bt文件。

aria2c file1.torrent file2.torrent

并发下载一个文件中的URI(Download files listed in a file concurrently):

aria2c -ifiles.txt -j5

说明:选项 -j 用于指定同时下载的文件的数量。你可以在文件中指定本地的 torrent 和 metalink 文件。

说明:你可以指定一些 选项 在下载文件(input list file)中。
在退出时保存错误/未完成的下载(Save error/unfinished downloads on exit):

aria2c -ifiles.txt --save-session=out.txt

当你按下Ctrl-C或者 aria2 退出时,所有的错误(error)/未完成(unfinished)下载将会保存到 out.txt 文件中。注意通过 XML-RPC 方式(aria2.addTorrent and aria2.addMetalink)添加的下载不会被保存!你可以使用这个文件作为一个输入文件列表(input file list)来重新开始下载。

aria2c -iout.txt

Metalink Download(不翻译)
BT下载(BitTorrent Download)
通过网上的种子文件下载(Download files from remote BitTorrent file)

aria2c http://site/file.torrent

通过网上的种子文件下载,种子保存在内存(Download files from remote BitTorrent file; torrent file itself is processed in memory)

aria2c --follow-torrent=mem http://site/file.torrent

通过本地的种子文件下载(Download using a local torrent file)

aria2c -u40K /path/to/file.torrent

说明: -u, –max-upload-limit 指定最大的上传速度

说明:想要停止下载,可以按Ctrl-C。想要恢复下载,可以在同一个文件夹中执行相同的下载命令。只要URI指向同一个文件,URIs是可以被改变的。

你可以同时进行多个 bt 的下载:

aria2c /path/to/file1.torrent /path/to/file2.torrent

通过 bt magnet uri 下载(Download using BitTorrent Magnet URI)

aria2c "magnet:?xt=urn:btih:248D0A1CD08284299DE78D5C1ED359BB46717D8C&dn=aria2"

说明:在 bt magnet uri 包含"&"的时候记住要加单引号或者双引号。强烈推荐打开 DHT 选项。 –enable-dht
保存元数据到 .torrent 文件中(Save metadata as .torrent file)

aria2c --bt-save-metadata "magnet:?xt=urn:btih:248D0A1CD08284299DE78D5C1ED359BB46717D8C&dn=aria2"

上面那个命令会保存元数据到一个名为"248d0a1cd08284299de78d5c1ed359bb46717d8c.torrent"的种子文件。
自动调节连接数(Adjust the number of peers adaptively)

如果每个种子的下载速度都低于 200K 的话, aria2 会临时增加连接数来试着提高下载速度。

aria2c --bt-request-peer-speed-limit=200K file.torrent

说明:配置 –bt-request-peer-speed-limit 选项为合适的值可以在某些情况下提高你的下载速度。
打开 DHT (Enable DHT)

aria2c --enable-dht http://site/file.torrent

说明:从 1.7.2 版本开始, DHT 默认是打开的。当通过 HTTP/FTP 下载的时候 DHT 不会启用。当首个种子下载开始, aria2 初始化 DHT 功能,之后, DHT 会一直运行知道 aria2 退出为止。
打开 IPv6 的 DHT (Enable IPv6 DHT)

aria2c --enable-dht6 --dht-listen-port=6881 --dht-listen-addr6=YOUR_GLOBAL_UNICAST_IPV6_ADDR --enable-async-dns6

说明:如果 aria2c 编译的时候没有加入 c-ares , –enable-async-dns6 不是必须的。 aria2 会在 IPv4 和 IPv6 之间对 DHT 共享一些端口。
Add and remove tracker URI

接下来的例子指示 aria2 移除 file.torrent 文件中所有的 tracker announce URIs ,并用"http://tracker1/announce" 和 "http://tracker2/announce" 代替。

aria2c --bt-exclude-tracker="*" --bt-tracker="http://tracker1/announce,http://tracker2/announce" file.torrent

加密(Encryption)

默认情况下, aria2 能够同时支持加密和非加密连接。它会先尝试使用加密连接,如果失败则尝试非加密连接。

强制只使用加密连接:

aria2c --bt-require-crypto=true http://site/file.torrent

一共有两种加密类型:只加密头或者全部加密。默认下,如果对方支持两种加密类型, aria2 会选择只加密头。如果想让 aria2 总是使用全加密连接:

aria2c --bt-min-crypto-level=arc4 http://site/file.torrent

打印一个种子文件中的内容(Print the contents of the torrent file)

aria2c -S file.torrent

选择性下载文件(Download only selected files using index (usually called "selectable download"))

aria2c --select-file=1-4,8 -Tfile.torrent

说明:序号(index)可以通过 -S 选项输出
改变监听端口(Change the listening port for incoming peer)

aria2c --listen-port=6881-6883 file.torrent

说明:确认该 TCP 端口是可用的
指定 BT 下载停止的条件(Specify the condition to stop program after torrent download finished)

aria2c --seed-time=120 --seed-ratio=1.0 file.torrent

说明:在上面的这个例子中, 当做种 120分钟 或者种子率大于1以后, aria2 会退出。
调节上传速度(Throttle upload speed)

aria2c --max-upload-limit=100K file.torrent

为已经下载完成的文件做种(Seeding already downloaded file)

你可以使用 -V 选项给已经下载好的文件做种。它会先校验文件的完整性。

aria2c -V -d/path/to/dir file.torrent

如果你肯定文件是正确的,你可以使用 –bt-seed-unverified 选项跳过做种前的文件校验。

aria2c --bt-seed-unverified -d/path/to/dir file.torrent

你可以给多个文件做种:

aria2c --bt-seed-unverified -d/path/to/dir file1.torrent file2.torrent

用序号指定文件名(Specify file name with index)

为 BitTorrent 下载下来的文件指定文件名,你首先需要通过 -S 选项知道该文件的序号。比如一个种子文件 -S 选项输出如下:

idx|path/length
===+======================
1|dist/base-2.6.18.iso
|99.9MiB
---+----------------------
2|dist/driver-2.6.18.iso
|169.0MiB
---+----------------------

把 dist/base-2.6.18.iso 保存为 tmp/mydir/base.iso , /dist/driver-2.6.18.iso 保存为 /tmp/dir/driver.iso ,可以使用一下的命令:

aria2c --dir=/tmp --index-out=1=mydir/base.iso --index-out=2=dir/driver.iso file.torrent

说明: –index-out 选项针对通过 HTTP 方式获取种子文件的方式无效。它只能针对本地种子文件的下载。 aria2 不会记住 –index-out 选项中指定的地址,你必须在每次开始该任务的时候重新指定 –index-out 的值。如果你忘了再次指定输出文件的地址, aria2 不会提醒你,所以你必须谨慎地使用这个选项。
为预览的文件指定优先块(Prioritize piece for previewing files)

优先下载每个文件开头的 1MiB 的内容。

aria2c --bt-prioritize-piece=head file.torrent

使用代理下载(Use With Proxy)
为所有的连接设置代理服务器(Set proxy server to use all protocols(HTTP(S)/FTP))

aria2c --all-proxy='http://proxy:8080' http://host/file

说明: –all-proxy 选项会被具体的代理选项重载: –http-proxy, –https-proxy, –ftp-proxy.
只为 HTTP 设置代理服务器(Set proxy server to be in HTTP only)

aria2c --http-proxy='http://proxy:8080' http://host/file

设置需要验证的代理服务器(Use proxy that requires authentication)

aria2c --http-proxy='http://proxy:8080' --http-proxy-user='username' --http-proxy-passwd='password' http://host/file
aria2c --http-proxy='http://username:password@proxy:8080' http://host/file

说明:用户名和密码需要是 percent-encoded 格式。比如,如果用户名是 myid@domain, 那么 percent-encoded 格式就是 myid%40domain.
高级HTTP功能(Advanced HTTP Features)
载入 cookies (Load cookies)

载入 Mozilla/Firefox(1.x/2.x) 和 Netscape 格式:

aria2c --load-cookies=cookies.txt http://host/file

载入 Firefox3 格式:

aria2c --load-cookies=cookies.sqlite http://host/file

说明:你可以不加任何修改直接读取 Firefox/Mozilla's 的 cookie 内容。
继续浏览器或者其它程序开始的下载任务(Resume download started by web browsers or another programs)

aria2c -c -s2 http://host/partiallydownloadedfile.zip

其它高级功能(Other Advanced Features)
调节下载速度(Throttle download speed)

aria2c --max-download-limit=100K http://host/file

用 -V 选项修复一个被破坏的下载文件(Repair a damaged download using -V option)

aria2c -V file.metalink

说明:这个选项只能对支持校验码的 BitTorrent 或者 metalink 使用。
如果下载速度低于某个特定值就丢弃连接(Drop connection if download speed is lower than specified value)

aria2c --lowest-speed-limit=10K file.metalink

支持参数的 URI (Parameterized URI support)

你可以这样使用 URI :

aria2c -P http://{host1,host2,host3}/file.iso

你可以指定数字序号(You can specify numeric sequence using [])

aria2c -Z -P http://host/image[000-100].png

说明: -Z 选项是必须的,如果所有的 URL 都是指向不同的文件的话。

可以指定步长(You can specify step counter)

aria2c -Z -P http://host/image[A-Z:2].png

Time-stamping

aria2 会在下载完成的时候从服务器拿到该文件的 timestamp 并设置到本地文件

aria2c -R http://host/file.iso

当下载完成后执行一条命令(Execute command when download finishes)

aria2c --on-download-complete=COMMAND http://example.org/file.iso

参见 –on-download-error, –on-download-start 和 –on-download-stop 选项, 或者执行:

aria2c -h #hook

写入到 /dev/null (Writing to /dev/null)

aria2c -d /dev -o null --allow-overwrite=true http://example.org/file

需要 –allow-overwrite=true 是为了避免 aria2 重命名已经存在的 /dev/null。
输入文件(Input File)

http://server/file.iso http://mirror/file.iso
dir=/iso_images
out=file.img
http://foo/bar

`