CentOS下搭建Aria2遠程下載環境

關于Aria2

Aria2是一個基于命令行的開源下載工具,支持多協議、多來源(HTTP/HTTPS、FTP、BitTorrent、Metalink協議等)、多線程的下載。它比axel優秀的地方在于完全支持BitTorrent協議,同時可以作為BitTorrent客戶端來下載種子文件,支持Metalink協議,遠程控制(通過web端)下載進程。

主要優勢如下

高速,自動多線程下載;

斷點續傳;

輕量占用內存非常少,通常情況平均4~9MB內存占用(官方介紹);

多平臺。支援 Win/Linux/OSX/Android 等操作系統下的部署;

模塊化。分段下載引擎,文件整合速度快;

支持RPC界面遠程;

全面支持BitTorrent協議;

Aria2官方項目頁面:https://aria2.github.io/

安裝Aria2

包安裝

CentOS

默認Repo里沒有Aria2,我們需要添加第三方的yum源。

安裝rpmforge源

1

2

$ wgethttp://pkgs.repoforge.org/rpmforge-release/rpmforge-release-0.5.3-1.el6.rf.x86_64.rpm

$ rpm -ivh rpmforge-release-0.5.3-1.el6.rf.x86_64.rpm

安裝Aria2

1

$ yum -y install aria2

注:rpmforge源中的版本是1.16.4,版本相對是比較低!

Ubuntu

1

$ sudo apt-get install aria2

MAC OS

1

$ brew install aria2

編譯安裝Aria2

依賴環境

Aria2 1.17.1以上版本要求gcc >= 4.8.3 or clang >= 3.4

安裝clang

1

$ yum install clang? #epel源

安裝GCC

通過SCL安裝GCC

CentOS 6

https://copr.fedoraproject.org/coprs/rhscl/devtoolset-3/

$ wgethttps://copr.fedoraproject.org/coprs/rhscl/devtoolset-3/repo/epel-6/rhscl-devtoolset-3-epel-6.repo-O /etc/yum.repos.d/rhscl-devtoolset-3-epel-6.repo

$ yum install devtoolset-3-gcc devtoolset-3-gcc-c++ devtoolset-3-binutils devtoolset-3-gcc-gfortran

$ scl enable devtoolset-3 bash? #啟用SCL環境中新版本GCC

$ gcc --version

編譯Aria2

$ wgethttps://github.com/aria2/aria2/releases/download/release-1.22.0/aria2-1.22.0.tar.gz

$ tar xzvf aria2-1.22.0.tar.gz

$ cd aria2-1.22.0

$ ./configure

$ make

$ make install

$ man aria2c //查看aria2c manual

驗證Aria2版本

$ aria2c --version

aria2 版本 1.22.0

Copyright (C) 2006, 2015 Tatsuhiro Tsujikawa

本程序為自由軟件;您可自由再版或修改它,惟須遵守 GNU 通用公共許可證,

第 2 版或更新版本(依您所愿)的條款,以自由軟件基金會發布的版本為準。

我們本著希望有用的態度發行此軟件,但 *從未做出任何保證*,甚至不暗示對

于適銷性或對某一特定用途的適用性的保證。參見 GNU 通用公共許可證以獲取

更多信息。

** 配置 **

已開啟的特性: BitTorrent, Firefox3 Cookie, GZip, HTTPS, Message Digest, Metalink, XML-RPC

哈希算法: sha-1, sha-224, sha-256, sha-384, sha-512, md5, adler32

庫: zlib/1.2.3 libxml2/2.7.6 sqlite3/3.6.20 OpenSSL/1.0.1e

編譯器: gcc 4.9.2 20150212 (Red Hat 4.9.2-6)

built by? x86_64-pc-linux-gnu

on? ? ? ? May? 6 2016 14:31:52

系統: Linux 2.6.32-573.12.1.el6.x86_64 #1 SMP Tue Dec 15 21:19:08 UTC 2015 x86_64

配置Aria2

創建配置文件

$ mkdir /etc/aria2/

$ vim /etc/aria2/aria2.conf

#用戶名

#rpc-user=user

#密碼

#rpc-passwd=passwd

#上面的認證方式不建議使用,建議使用下面的token方式

#設置加密的密鑰

#rpc-secret=token

#允許rpc

enable-rpc=true

#允許所有來源, web界面跨域權限需要

rpc-allow-origin-all=true

#允許外部訪問,false的話只監聽本地端口

rpc-listen-all=true

#RPC端口, 僅當默認端口被占用時修改

rpc-listen-port=6800

#最大同時下載數(任務數), 路由建議值: 3

max-concurrent-downloads=5

#斷點續傳

continue=true

#同服務器連接數

max-connection-per-server=5

#最小文件分片大小, 下載線程數上限取決于能分出多少片, 對于小文件重要

min-split-size=10M

#單文件最大線程數, 路由建議值: 5

split=10

#下載速度限制

max-overall-download-limit=0

#單文件速度限制

max-download-limit=0

#上傳速度限制

max-overall-upload-limit=0

#單文件速度限制

max-upload-limit=0

#斷開速度過慢的連接

#lowest-speed-limit=0

#驗證用,需要1.16.1之后的release版本

#referer=*

#文件保存路徑, 默認為當前啟動位置

dir=/root/downloads

#文件緩存, 使用內置的文件緩存, 如果你不相信Linux內核文件緩存和磁盤內置緩存時使用, 需要1.16及以上版本

#disk-cache=0

#另一種Linux文件緩存方式, 使用前確保您使用的內核支持此選項, 需要1.15及以上版本(?)

#enable-mmap=true

#文件預分配, 能有效降低文件碎片, 提高磁盤性能. 缺點是預分配時間較長

#所需時間 none < falloc ? trunc << prealloc, falloc和trunc需要文件系統和內核支持

file-allocation=prealloc

注意將配置表中保存路徑一項dir=/root/downloads替換為自己的保存位置。(Windows下類似這樣dir=F:\SoftWare)

Aria2的使用

配置完成后,就可以開始使用了。

Aria2有兩種模式

命令直接調用

直接在命令行下載$ aria2c "download.url", 下載完成后自動退出,就和wget 的工作方式一樣。

Aria2命令行使用

使用Aria2下載文件,只需在命令后附加地址即可。如

1

$ aria2chttp://www.kernel.org/pub/linux/kernel/v2.6/linux-2.6.22.6.tar.bz2

分段下載

利用Aria2的分段下載功能可以加快文件的下載速度,對于下載大文件時特別有用。為了使用aria2的分段下載功能,你需要在命令中指定-s選項。如

1

$ aria2c -s 2http://www.kernel.org/pub/linux/kernel/v2.6/linux-2.6.22.6.tar.bz2

這將使用2連接來下載該文件。-s后面的參數值介于1~5之間,你可以根據實際情況選擇。

斷點續傳

在命令中使用-c選項可以斷點續傳文件。如


$ aria2c -chttp://www.kernel.org/pub/linux/kernel/v2.6/linux-2.6.22.6.tar.bz2

下載torrent文件

你也可以使用Aria2下載BitTorrent文件。如


$ aria2c -o gutsy.torrenthttp://cdimage.ubuntu.com/daily-live/current/gutsy-desktop-i386.iso.torrent

后臺下載

$ aria2c -D url

$ aria2c --deamon=true url

驗證文件

$ aria2c --checksum=md5=別人提供的md5

BT下載

$ aria2c /tmp/CentOS-6.3-i386-bin-DVD1to2.torrent

$ aria2chttp://mirrors.163.com/centos/6.6/isos/x86_64/CentOS-6.6-x86_64-minimal.torrent

列出種子內容

$ aria2c -S .torrent

下載種子內特定編號的文件

$ aria2c --select-file=1,4-7 .torrent

此處下載編號為1,4,5,6,7的文件

設置bt端口

1

$ aria2c --listen-port=1234 .torrent

設置dht端口

1

$ aria2c --dht-listen-port=1234 .torrent

下載需要引用頁的文件

$ aria2c --referer=referurl url

限速下載

$ aria2c --max-download-limit=500k url //單個文件

$ aria2c --max-overall-download-limit=500k url //全局

下載需要Cookie驗證的文件

$ aria2c --header='Cookie:cookie名稱=cookie內容' url

$ aria2c --load-cookies=cookie文件 url

Metalink

$ aria2chttp://example.org/mylinux.metalink

批量下載文本中所有URL

$ aria2c -i uris.txt

注意:當源地址存在諸如&,*等shell的特殊字符,請使用單引號或雙引號把URI包含起來。

RPC Server模式(推薦)

Aria2作為后臺常駐程序,監測rpc端口的活動情況,添加并下載文件。完成后繼續在后臺運行。

涉及到命令輸入,力求簡化,第二種模式明顯更省事。

啟動Aria2 RPC模式

命令行啟動

1

$ aria2c --enable-rpc --rpc-listen-all --rpc-allow-origin-all -c? --dir /root/downloads -D (-D daemon模式,用于后臺執行)

配置文件啟動(推薦)

1

$ aria2c --conf-path=

是指配置文件所在的絕對路徑。默認位置是:$HOME/.aria2/aria2.conf

依照上述配置一路下來,具體是

1

$ aria2c --conf-path="/etc/aria2.conf" -D? #(-D daemon模式,用于后臺執行)

這時正確無誤的話,Aria2就啟動了。

啟動腳本

為方便管理,創建一個管理腳本。

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

20

21

22

23

24

25

26

27

28

29

30

31

32

33

34

35

36

37

38

39

40

41

42

43

44

45

46

47

48

49

50

51

52

53

54

55

56

57

58

59

60

61

62

63

64

65

66

67

68

69

70

71

72

73

74

75

$ vi /etc/init.d/aria2

#!/bin/bash

#

# aria2 - this script starts and stops the aria2 daemon

#

# chkconfig:? - 85 15

# description: Aria2 - Download Manager

# processname: aria2c

# config:? ? ? /etc/aria2/aria2.conf

# pidfile:

# Source function library.

. /etc/rc.d/init.d/functions

# Source networking configuration.

. /etc/sysconfig/network

# Check that networking is up.

[ "$NETWORKING" = "no" ] && exit 0

aria2c="/usr/bin/aria2c"

ARIA2C_CONF_FILE="/etc/aria2/aria2.conf"

options=" --conf-path=$ARIA2C_CONF_FILE -D "

RETVAL=0

start() {

# code here to start the program

echo -n "Starting aria2c daemon."

${aria2c} ${options}

RETVAL=$?

echo

}

stop() {

echo -n "Shutting down aria2c daemon."

/usr/bin/killall aria2c

RETVAL=$?

echo

}

status() {

ID=$(/bin/ps -ef | grep 'aria2c' | grep -v 'grep' | awk '{print $2}')

if [[ "x$ID" != "x" ]]; then

echo "Aria2 is running."

else

echo "Aria2 is not running."

fi

}

restart() {

stop

sleep 3

start

}

case "$1" in

start)

start

;;

stop)

stop

;;

status)

status

;;

restart)

restart

;;

*)

echo "Usage: service aria2c {start|stop|restart}"

RETVAL=1

esac

exit $RETVAL

添加可執行權限

1

$ chmod +x /etc/init.d/aria2

啟動Aria2

1

$ /etc/init.d/aria2 start

搭配Aria2 Web UI

Aria2不帶GUI界面。了解下載進度會有不便,日常使用需搭配Web UI工具方便查看。

webui-aria2

1

2

$ git clonehttps://github.com/ziahamza/webui-aria2

$ python -m SimpleHTTPServer 9999

訪問這臺機器的9999端口就可以了,這里為了方便用python做為WEB服務器,其它任意一種WEB服務器都是可以的。

如果你不想搭建可使用http://ziahamza.github.io/webui-aria2/,配置數據是存在本地瀏覽器的,不需要注冊。

注意:需要根據情況設置一下Aria2 RPC的地址,一般為Aria2后臺進程運行的ip:port,例如192.168.119.100:6800。

YAAW

1

2

$ git clonehttps://github.com/binux/yaaw

$ python -m SimpleHTTPServer 9999 #也可以使用Apache

訪問這臺機器的9999端口就可以了,這里為了方便用python做為WEB服務器,其它任意一種WEB服務器都是可以的。

YAAW也有線版本

http://aria2c.com/

http://binux.github.io/yaaw/demo/

注意:需要根據情況設置一下Aria2 RPC的地址,一般為Aria2后臺進程運行的ip:port,例如192.168.119.100:6800。

Windows下圖形版本

Aria2c Remote Control

http://sourceforge.net/projects/aria2cremote/

給jsonrpc加上驗證

使用token驗證(建議使用)

需要1.18.4以上版本,帳號密碼方式將在后續版本中停用!

配置文件

1

2

# token驗證

rpc-secret=secret

命令行

使用--rpc-secret=xxxxxx選項

啟用驗證后,使用http://token:secret@hostname:port/jsonrpc的地址格式設置secret。

使用密碼驗證

需要1.15.2以上,1.18.6以下版本

1.18.4新增了--rpc-secret,設置的RPC授權令牌, 取代--rpc-user和--rpc-passwd選項

配置文件

1

2

3

4

#用戶名

rpc-user=username

#密碼

rpc-passwd=passwd

命令行

使用--rpc-user=user--rpc-passwd=pwd選項

啟用驗證后,使用http://username:passwd@hostname:port/jsonrpc的地址格式設置密碼。

對于RPC模式來說, 界面和后端是分離的, 只要給后端設置密碼即可. 前端認證什么的是毫無意義的。

最后編輯于
?著作權歸作者所有,轉載或內容合作請聯系作者
平臺聲明:文章內容(如有圖片或視頻亦包括在內)由作者上傳并發布,文章內容僅代表作者本人觀點,簡書系信息發布平臺,僅提供信息存儲服務。

推薦閱讀更多精彩內容