aria2 是一個自由、開源、輕量級多協(xié)議和多源的命令行下載工具。它支持 HTTP/HTTPS、FTP、SFTP、 BitTorrent 和 Metalink 協(xié)議。aria2 可以通過內(nèi)建的 JSON-RPC 和 XML-RPC 接口來操縱。aria2 下載文件的時候,自動驗證數(shù)據(jù)塊。它可以通過多個來源或者多個協(xié)議下載一個文件,并且會嘗試?yán)媚愕淖畲笙螺d帶寬。默認(rèn)情況下,所有的 Linux 發(fā)行版都包括 aria2,所以我們可以從官方庫中很容易的安裝。一些 GUI 下載管理器例如 uget 使用 aria2 作為插件來提高下載速度。
aria2特性:
- 支持 HTTP/HTTPS GET
- 支持 HTTP 代理
- 支持 HTTP BASIC 認(rèn)證
- 支持 HTTP 代理認(rèn)證
- 支持 FTP (主動、被動模式)
- 通過 HTTP 代理的 FTP(GET 命令行或者隧道)
- 分段下載
- 支持 Cookie
- 可以作為守護進程運行。
- 支持使用 fast 擴展的 BitTorrent 協(xié)議
- 支持在多文件 torrent 中選擇文件
- 支持 Metalink 3.0 版本(HTTP/FTP/BitTorrent)
- 限制下載、上傳速度
1、安裝
我們可以很容易的在所有的 Linux 發(fā)行版上安裝 aria2 命令行下載器,例如 Debian、 Ubuntu、 Mint、 RHEL、 CentOS、 Fedora、 suse、 openSUSE、 Arch Linux、 Manjaro、 Mageia 等等……只需要輸入下面的命令安裝即可。對于 CentOS、 RHEL 系統(tǒng),我們需要開啟 uget 或者 RPMForge 庫的支持。
[對于 Debian、 Ubuntu 和 Mint]
$ sudo apt-get install aria2
[對于 CentOS、 RHEL、 Fedora 21 和更早些的操作系統(tǒng)]
# yum install aria2
[Fedora 22 和 之后的系統(tǒng)]
# dnf install aria2
[對于 suse 和 openSUSE]
# zypper install wget
[Mageia]
# urpmi aria2
[對于 Arch Linux]
$ sudo pacman -S aria2
2、簡單使用
2.1 下載單個文件
下面的命令將會從指定的 URL 中下載一個文件,并且保存在當(dāng)前目錄,在下載文件的過程中,我們可以看到文件的(日期、時間、下載速度和下載進度)。
# aria2c https://download.owncloud.org/community/owncloud-9.0.0.tar.bz2
[#986c80 19MiB/21MiB(90%) CN:1 DL:3.0MiB]
03/22 09:49:13 [NOTICE] Download complete: /opt/owncloud-9.0.0.tar.bz2
Download Results:
gid |stat|avg speed |path/URI
======+====+===========+=======================================================
986c80|OK | 3.0MiB/s|/opt/owncloud-9.0.0.tar.bz2
Status Legend:
(OK):download completed.
2.2 使用不同的名字保存文件
在初始化下載的時候,我們可以使用-o
(小寫)選項在保存文件的時候使用不同的名字。這兒我們將要使用 owncloud.zip 文件名來保存文件。
# aria2c -o owncloud.zip https://download.owncloud.org/community/owncloud-9.0.0.tar.bz2
[#d31304 16MiB/21MiB(74%) CN:1 DL:6.2MiB]
03/22 09:51:02 [NOTICE] Download complete: /opt/owncloud.zip
Download Results:
gid |stat|avg speed |path/URI
======+====+===========+=======================================================
d31304|OK | 7.3MiB/s|/opt/owncloud.zip
Status Legend:
(OK):download completed.
2.3 下載速度限制
默認(rèn)情況下,aria2 會利用全部帶寬來下載文件,在文件下載完成之前,我們在服務(wù)器就什么也做不了(這將會影響其他服務(wù)訪問帶寬)。所以在下載大文件時最好使用 --max-download-limit
選項來避免進一步的問題。
# aria2c --max-download-limit=500k https://download.owncloud.org/community/owncloud-9.0.0.tar.bz2
[#7f9fbf 21MiB/21MiB(99%) CN:1 DL:466KiB]
03/22 09:54:51 [NOTICE] Download complete: /opt/owncloud-9.0.0.tar.bz2
Download Results:
gid |stat|avg speed |path/URI
======+====+===========+=======================================================
7f9fbf|OK | 462KiB/s|/opt/owncloud-9.0.0.tar.bz2
Status Legend:
(OK):download completed.
2.4 下載多個文件
下面的命令將會從指定位置下載超過一個的文件并保存到當(dāng)前目錄,在下載文件的過程中,我們可以看到文件的(日期、時間、下載速度和下載進度)。
# aria2c -Z https://download.owncloud.org/community/owncloud-9.0.0.tar.bz2 ftp://ftp.gnu.org/gnu/wget/wget-1.17.tar.gz
[DL:1.7MiB][#53533c 272KiB/21MiB(1%)][#b52bb1 768KiB/3.6MiB(20%)]
03/22 10:25:54 [NOTICE] Download complete: /opt/wget-1.17.tar.gz
[#53533c 18MiB/21MiB(86%) CN:1 DL:3.2MiB]
03/22 10:25:59 [NOTICE] Download complete: /opt/owncloud-9.0.0.tar.bz2
Download Results:
gid |stat|avg speed |path/URI
======+====+===========+=======================================================
b52bb1|OK | 2.8MiB/s|/opt/wget-1.17.tar.gz
53533c|OK | 3.4MiB/s|/opt/owncloud-9.0.0.tar.bz2
Status Legend:
(OK):download completed.
使用 -P
參數(shù)來擴展下載地址:
[11:30 sxuan@hulab ~/gatk4_practice]$ aria2c -Z -P "http://host/image{1,2,3}_{A,B,C}.png"
5da2af|ERR | 0B/s|http://host/image1_A.png%0A
3c98a4|ERR | 0B/s|http://host/image1_B.png%0A
17ba0a|ERR | 0B/s|http://host/image1_C.png%0A
e7afa3|ERR | 0B/s|http://host/image2_A.png%0A
e99fcf|ERR | 0B/s|http://host/image2_B.png%0A
1f151a|ERR | 0B/s|http://host/image2_C.png%0A
2da0f1|ERR | 0B/s|http://host/image3_A.png%0A
17b599|ERR | 0B/s|http://host/image3_B.png%0A
d9f5ad|ERR | 0B/s|http://host/image3_C.png%0A
2.5 續(xù)傳未完成的下載
當(dāng)你遇到一些網(wǎng)絡(luò)連接問題或者系統(tǒng)問題的時候,并將要下載一個大文件(例如: ISO 鏡像文件),我建議你使用 -c
選項,它可以幫助我們從該狀態(tài)續(xù)傳未完成的下載,并且像往常一樣完成。不然的話,當(dāng)你再次下載,它將會初始化新的下載,并保存成一個不同的文件名(自動的在文件名后面添加 .1 )。注意:如果出現(xiàn)了任何中斷,aria2 使用 .aria2 后綴保存(未完成的)文件。
# aria2c -c https://download.owncloud.org/community/owncloud-9.0.0.tar.bz2
[#db0b08 8.2MiB/21MiB(38%) CN:1 DL:3.1MiB ETA:4s]^C
03/22 10:09:26 [NOTICE] Shutdown sequence commencing... Press Ctrl-C again for emergency shutdown.
03/22 10:09:26 [NOTICE] Download GID#db0b08bf55d5908d not complete: /opt/owncloud-9.0.0.tar.bz2
Download Results:
gid |stat|avg speed |path/URI
======+====+===========+=======================================================
db0b08|INPR| 3.3MiB/s|/opt/owncloud-9.0.0.tar.bz2
Status Legend:
(INPR):download in-progress.
如果重新啟動傳輸,aria2 將會恢復(fù)下載。
# aria2c -c https://download.owncloud.org/community/owncloud-9.0.0.tar.bz2
[#873d08 21MiB/21MiB(98%) CN:1 DL:2.7MiB]
03/22 10:09:57 [NOTICE] Download complete: /opt/owncloud-9.0.0.tar.bz2
Download Results:
gid |stat|avg speed |path/URI
======+====+===========+=======================================================
873d08|OK | 1.9MiB/s|/opt/owncloud-9.0.0.tar.bz2
Status Legend:
(OK):download completed.
2.6 從文件獲取輸入
就像 wget
可以從一個文件獲取輸入的 URL 列表來下載一樣。我們需要創(chuàng)建一個文件,將每一個 URL 存儲在單獨的行中。aria2
命令行可以添加 -i
選項來執(zhí)行此操作。
# aria2c -i test-aria2.txt
[DL:3.9MiB][#b97984 192KiB/21MiB(0%)][#673c8e 2.5MiB/3.6MiB(69%)]
03/22 10:14:22 [NOTICE] Download complete: /opt/wget-1.17.tar.gz
[#b97984 19MiB/21MiB(90%) CN:1 DL:2.5MiB]
03/22 10:14:30 [NOTICE] Download complete: /opt/owncloud-9.0.0.tar.bz2
Download Results:
gid |stat|avg speed |path/URI
======+====+===========+=======================================================
673c8e|OK | 4.3MiB/s|/opt/wget-1.17.tar.gz
b97984|OK | 2.5MiB/s|/opt/owncloud-9.0.0.tar.bz2
Status Legend:
(OK):download completed.
2.7 每個主機使用兩個連接來下載
默認(rèn)情況,每次下載連接到一臺服務(wù)器的最大數(shù)目,對于一條主機只能建立一條。我們可以通過 aria2 命令行添加 -x2
(2 表示兩個連接)來創(chuàng)建到每臺主機的多個連接,以加快下載速度。
# aria2c -x2 https://download.owncloud.org/community/owncloud-9.0.0.tar.bz2
[#ddd4cd 18MiB/21MiB(83%) CN:1 DL:5.0MiB]
03/22 10:16:27 [NOTICE] Download complete: /opt/owncloud-9.0.0.tar.bz2
Download Results:
gid |stat|avg speed |path/URI
======+====+===========+=======================================================
ddd4cd|OK | 5.5MiB/s|/opt/owncloud-9.0.0.tar.bz2
Status Legend:
(OK):download completed.
2.8 下載 BitTorrent 種子文件
我們可以使用 aria2 命令行直接下載一個 BitTorrent 種子文件:
# aria2c https://torcache.net/torrent/C86F4E743253E0EBF3090CCFFCC9B56FA38451A3.torrent?title=[kat.cr]irudhi.suttru.2015.official.teaser.full.hd.1080p.pathi.team.sr
[#388321 0B/0B CN:1 DL:0B]
03/22 20:06:14 [NOTICE] Download complete: /opt/[kat.cr]irudhi.suttru.2015.official.teaser.full.hd.1080p.pathi.team.sr.torrent
03/22 20:06:14 [ERROR] Exception caught
Exception: [BtPostDownloadHandler.cc:98] errorCode=25 Could not parse BitTorrent metainfo
Download Results:
gid |stat|avg speed |path/URI
======+====+===========+=======================================================
388321|OK | 11MiB/s|/opt/[kat.cr]irudhi.suttru.2015.official.teaser.full.hd.1080p.pathi.team.sr.torrent
Status Legend:
(OK):download completed.
2.9 下載 BitTorrent 磁力鏈接
使用 aria2 我們也可以通過 BitTorrent 磁力鏈接直接下載一個種子文件:
# aria2c 'magnet:?xt=urn:btih:248D0A1CD08284299DE78D5C1ED359BB46717D8C'
2.10 下載 BitTorrent Metalink 種子
我們也可以通過 aria2 命令行直接下載一個 Metalink 文件。
# aria2c https://curl.haxx.se/metalink.cgi?curl=tar.bz2
2.11 從密碼保護的網(wǎng)站下載一個文件
或者,我們也可以從一個密碼保護網(wǎng)站下載一個文件。下面的命令行將會從一個密碼保護網(wǎng)站中下載文件。
# aria2c --http-user=xxx --http-password=xxx https://download.owncloud.org/community/owncloud-9.0.0.tar.bz2
# aria2c --ftp-user=xxx --ftp-password=xxx ftp://ftp.gnu.org/gnu/wget/wget-1.17.tar.gz
2.12 更多命令
使用man aria2c
或aria2c -h
查看更多詳細(xì)參數(shù)信息。
3、aria2配置
## 全局設(shè)置 ## ============================================================
# 日志
#log-level=warn
#log=/PATH/.aria2/aria2.log
# 后臺運行
daemon=true
# 下載位置, 默認(rèn): 當(dāng)前啟動位置
dir=/PATH/Downloads
# 從會話文件中讀取下載任務(wù)
input-file=/PATH/.aria2/aria2.session
# 在Aria2退出時保存`錯誤/未完成`的下載任務(wù)到會話文件
save-session=/PATH/.aria2/aria2.session
# 定時保存會話, 0為退出時才保存, 需1.16.1以上版本, 默認(rèn):0
save-session-interval=30
# 斷點續(xù)傳
continue=true
# 啟用磁盤緩存, 0為禁用緩存, 需1.16以上版本, 默認(rèn):16M
#disk-cache=32M
# 文件預(yù)分配方式, 能有效降低磁盤碎片, 默認(rèn):prealloc
# 預(yù)分配所需時間: none < falloc ? trunc < prealloc
# falloc和trunc則需要文件系統(tǒng)和內(nèi)核支持
# NTFS建議使用falloc, EXT3/4建議trunc, MAC 下需要注釋此項
file-allocation=none
# 客戶端偽裝
user-agent=netdisk;5.2.6;PC;PC-Windows;6.2.9200;WindowsBaiduYunGuanJia
referer=http://pan.baidu.com/disk/home
# 禁用IPv6, 默認(rèn):false
disable-ipv6=true
# 其他
always-resume=true
check-integrity=true
## 下載位置 ## ============================================================
# 最大同時下載任務(wù)數(shù), 運行時可修改, 默認(rèn):5
max-concurrent-downloads=5
# 同一服務(wù)器連接數(shù), 添加時可指定, 默認(rèn):1
max-connection-per-server=5
# 最小文件分片大小, 添加時可指定, 取值范圍1M -1024M, 默認(rèn):20M
# 假定size=10M, 文件為20MiB 則使用兩個來源下載; 文件為15MiB 則使用一個來源下載
min-split-size=10M
# 單個任務(wù)最大線程數(shù), 添加時可指定, 默認(rèn):5
split=5
# 整體下載速度限制, 運行時可修改, 默認(rèn):0
#max-overall-download-limit=0
# 單個任務(wù)下載速度限制, 默認(rèn):0
#max-download-limit=0
# 整體上傳速度限制, 運行時可修改, 默認(rèn):0
#max-overall-upload-limit=0
# 單個任務(wù)上傳速度限制, 默認(rèn):0
#max-upload-limit=0
## RPC設(shè)置 ## ============================================================
# 啟用RPC, 默認(rèn):false
enable-rpc=true
# 允許所有來源, 默認(rèn):false
rpc-allow-origin-all=true
# 允許非外部訪問, 默認(rèn):false
rpc-listen-all=true
# 事件輪詢方式, 取值:[epoll, kqueue, port, poll, select], 不同系統(tǒng)默認(rèn)值不同
#event-poll=select
# RPC監(jiān)聽端口, 端口被占用時可以修改, 默認(rèn):6800
rpc-listen-port=6800
# 設(shè)置的RPC授權(quán)令牌, v1.18.4新增功能, 取代 --rpc-user 和 --rpc-passwd 選項
#rpc-secret=<TOKEN>
# 是否啟用 RPC 服務(wù)的 SSL/TLS 加密,
# 啟用加密后 RPC 服務(wù)需要使用 https 或者 wss 協(xié)議連接
#rpc-secure=true
# 在 RPC 服務(wù)中啟用 SSL/TLS 加密時的證書文件,
# 使用 PEM 格式時,您必須通過 --rpc-private-key 指定私鑰
#rpc-certificate=/path/to/certificate.pem
# 在 RPC 服務(wù)中啟用 SSL/TLS 加密時的私鑰文件
#rpc-private-key=/path/to/certificate.key
## BT/PT下載相關(guān) ## ============================================================
# 當(dāng)下載的是一個種子(以.torrent結(jié)尾)時, 自動開始BT任務(wù), 默認(rèn):true
#follow-torrent=true
# BT監(jiān)聽端口, 當(dāng)端口被屏蔽時使用, 默認(rèn):6881-6999
listen-port=51413
# 單個種子最大連接數(shù), 默認(rèn):55
#bt-max-peers=55
# 打開DHT功能, PT需要禁用, 默認(rèn):true
enable-dht=false
# 打開IPv6 DHT功能, PT需要禁用
#enable-dht6=false
# DHT網(wǎng)絡(luò)監(jiān)聽端口, 默認(rèn):6881-6999
#dht-listen-port=6881-6999
dht-file-path=/opt/var/aria2/dht.dat
dht-file-path6=/opt/var/aria2/dht6.dat
# 本地節(jié)點查找, PT需要禁用, 默認(rèn):false
#bt-enable-lpd=false
# 種子交換, PT需要禁用, 默認(rèn):true
enable-peer-exchange=false
# 每個種子限速, 對少種的PT很有用, 默認(rèn):50K
#bt-request-peer-speed-limit=50K
# 設(shè)置 peer id 前綴
peer-id-prefix=-TR2770-
# 當(dāng)種子的分享率達到這個數(shù)時, 自動停止做種, 0為一直做種, 默認(rèn):1.0
seed-ratio=0
# 強制保存會話, 即使任務(wù)已經(jīng)完成, 默認(rèn):false
# 較新的版本開啟后會在任務(wù)完成后依然保留.aria2文件
#force-save=false
# BT校驗相關(guān), 默認(rèn):true
#bt-hash-check-seed=true
# 繼續(xù)之前的BT任務(wù)時, 無需再次校驗, 默認(rèn):false
bt-seed-unverified=true
# 保存磁力鏈接元數(shù)據(jù)為種子文件(.torrent文件), 默認(rèn):false
bt-save-metadata=true
bt-max-open-files=16