aria2下載工具特點:
1、支持http/https/ftp/bt協議
2、支持metalink3.0,metalink是一種可以將不同協議下載的同一文件集合到一起以達到最大下載穩定性和速度的東東。個人感覺這個似乎比迅雷支持不同網址下載同一文件似乎更高級些
3、支持分段下載和續傳
4、支持通過http代理的ftp下載
5、可以作為守候進程運行
注:aria有gtk界面,但aria2只有命令行版本。
arch下安裝:
pacman -S aria2
典型用法:
aria2c http://AAA.BBB.CCC/file.zip 普通下載
aria2c -s 2http://AAA.BBB.CCC/file.zip 開2個線程下載
aria2c http://AAA.BBB.CCC/file.zipftp://DDD.EEE.FFF/GGG/file.zip 從不同的地址下載同一文件
aria2c http://AAA.BBB.CCC/file.zipftp://DDD.EEE.FFF/GGG/file.zip 支持不同的協議下載同一文件
aria2c -otest.torrent http://AAA.BBB.CCC/file.torrent 下載BT種子
aria2c –max-upload-limit 40K -Tfile.torrent 設定BT最大上傳速度
aria2chttp://AAA.BBB.CCC/file.metalink 從metalink下載文件
注:https下載依賴於安裝gnutls或openssl
bt下載依賴於安裝gnutls+libgcrypt或openssl
metalink下載依賴於安裝libxml2
官方地址:http://aria2.sourceforge.net/
命令行下多線程下載工具:axel (prozilla下載工具因安全問題不推薦使用)
圖形界面下載工具:d4x wxdownload
轉自:http://floss.zoomquiet.org/data/20100901090942/
相關文檔:
http://aria2.sourceforge.net/
http://aria2.sourceforge.net/manual/en/html/
http://aria2.sourceforge.net/manual/en/html/aria2c.html#rpc-interface
http://wiki.ubuntu.org.cn/Aria2
http://www.debugfs.com/?p=412
aria2是一款輕量型命令行下載工具,它提供了對多協議和多源地址的支持,目前支持的協議包括HTTP(S), FTP, BitTorrent (DHT, PEX, MSE/PE), and Metalink。
aria2可以從多個源地址,並使用多種協議進行下載,並嘗試將下載帶寬利用率最大化。它可以同時從HTTP(S)/FTP 和 BitTorrent下載一份數據,並且將其上傳到bt集群中。通過Metalink的分塊檢查,aria2可以在下載過程中自動的進行數據校驗。
雖然現在有諸如wget和curl等其他類似產品,但aria2具有兩個獨特的功能:(1)aria2可以從多個源下載文件(HTTP(S)/FTP /BitTorrent),(2)aria2可以並發的進行多個源地址的下載。這樣用戶將不必等待單個文件的下載完成,而且aria2會盡可能快的下載。
除aria2外,也有一些其他可以進行分片下載的工具,它們往往按照線程數分割文件,並行下載,換言之,它們不會對未完成的部分進行自適應性重新分片,當 整個流程工作正常時,這個策略是可以的,但一旦存在一個線程運行非常慢,這樣整個進程就需要等待該線程的執行。而aria2可以很好的處理這個情況,它可 以將文件分割成1M大小的分片,當某個線程運行特別緩慢時,aria2可以使用更快的線程來替換。總之,根據作者的說法,aria2是非常智能和可靠的。
和最初的aria工具具有一個GTK+界面不同,aria2只提供了命令行接口,從而使得對資源的要求更小。通常它的物理內存消耗為4M(HTTP/FTP)到9M(BitTorrent),當進行bt下載且速度為2.8M/s時的cpu消耗約為6%
aria2使用舉例
本篇描述的是aria2的使用示例,更詳盡的描述請見:man page
當源地址存在諸如’&’或’*'等其他shell特殊字符時,請使用單引號或者雙引號將uri包含起來。
在aria2的1.10.0版中,aria2對每台主機默認使用1個連接和20MB的分塊大小,所以不論在-s參數中指定任何值,他都對一台主機只會建立 一個連接,需要注意的一點是這個限制是針對單個主機的,當指定了多台主機時,它會對每台主機建立一個連接。如果要使用1.9.x版中的行為,則要使用 -x16 -k1M。另見man頁面的 –max-connection-per-server 和 –min-split-size。
aria2默認會在開始下載前預先分配文件空間以避免可能的文件碎片,但這會在部分PC上帶來50%-90%的cpu消耗。當使用環境為比較新的文件系 統,例如ext4,btrfs,xfs或者NTFS時,作者推薦使用–file-allocation=falloc,這種方式會在瞬間完成大文件(數 G)的空間分配並且不會帶來額外的性能下降。
如果你既沒有使用cutting-edge文件系統,也沒有使用linux,並且很在意系統性能,那么可以使用–file-allocation=none來關閉文件的預分配。
如果你忘記了這些參數的全名或者含義,把-h放在選項或者詞的前面,比如aria2c -hcrypt,這樣aria2就會搜索crypt相關的選項並把他的幫助打印出來,如果aria2發現使用了-h,它會在打印出幫助信息后停止運行。
基本用法
- 下載一個文件
aria2c http://host/image.iso
在1.10.0版中,aria2對每個host使用一個連接,你可以使用–max-connection-per-server 或 -x來修改
- 使用兩個連接從一個源下載文件
:
aria2c -x2 http://host/image.iso
Ctrl+c可以中止當前的下載,在同樣的目錄運行同樣的命令可以繼續原來的下載,你設置可以修改uri,如果他們指向的是同一個文件的話。
- 使用兩個連接下載文件:
aria2c -s2 http://host/image.iso http://mirror1/image.iso http://mirror2/image.iso
注:如果命令中uri的數量多於-s的值,如本例所示,aria2將會首先使用前兩個uri,將第3個uri作為候補,如果前兩個有一個下載失敗,就會啟用第3個
- 從http或ftp服務器下載:
aria2c http://host1/file.zip ftp://host2/file.zip
- 從任意源進行並行下載:
aria2c -Z http://host/file1 file2.torrent file3.metalink
如果僅僅指定本地磁盤上的torrent文件或者metalink,是不需要-Z選項的,如:
aria2c file1.torrent file2.torrent
- 從文件中讀取目的文件,並行下載
aria2c -ifiles.txt -j5
注:-j參數指定了並發下載的數量,在輸入文件中可以包含torrent文件和metelink
注:輸入文件中支持添加參數,詳見后續的“輸入文件”章節 - 退出時保存出錯/未完成的下載
aria2c -ifiles.txt --save-session=out.txt
當ctrl+c或者aria2自己退出時,所有的錯誤,未完成的下載信息會保存到out.txt中,但通過aria2.addTorrent 和 aria2.addMetalink XML-RPC方式增加的下載不會保存。
后續可以使用該文件繼續未完成的下載:aria2c -iout.txt
aria2對續傳有很好的支持,只需要重新運行同樣的命令即可,假如通過如下命令進行文件下載:
aria2c -d /tmp http://localhost/file.gz
當在aria2的下載過程中按下ctrl+c中止了服務運行后,會在/tmp目錄下發現file.gz和file.gz.aria2兩個文件
$ ls /tmp file.gz file.gz.aria2
其中file.gz.aria2保存這下載的進度信息,當aria2使用同樣的命令重新運行時,它會讀取這個文件並繼續原來的下載。當然,aria2並不 要求一定要是使用完全一直的參數:用戶需要指定那些可以找到*.aria2文件的參數,所有-d選項是很重要的,而URI卻不一定與上次相同,只要保證他 們指向了同樣的文件即可。這意味着你可以用某個URI開始下載,然后使用torrent文件進行續傳。當然如果只存在*.aria2文件,續傳就會被忽略 掉。
為了能夠成功進行續傳,需要考慮到如下的一些情況
HTTP(S)/FTP/Metalink(without BitTorrent)協議下的續傳
| file size known | D | D | D | O | X |
| file exists | O | X | O | O | O |
| ctrl exists | O | X | O | X | X |
| file size match | O | - | X | - | - |
| ACTION | R | S | A | B | C |
- “size known” 表示文件大小在開始下載前是已知的,如metalink可以提供文件大小
- “file size match”表示控制文件中的大小與遠端(或metalink)的大小相同
- ‘D’表示不關心
- ACTION表示在上面的各種情況下aria2會采取的動作:
| R |
續傳,但如果給定的URI不支持續傳則會失敗 |
| S |
重新開始下載 |
| A |
取消下載 |
| B |
如果–allow-overwrite=true則重新下載,否則取消 |
| C |
如果–allow-overwrite=true,則重新下載;如果本地文件大小與遠程文件大小一致,則不再下載;如果–auto-file-renaming=true則重命名文件;其他情況取消下載 |
BitTorrent下的續傳規則
| file exists | O | O | O | X |
| ctrl exists | O | O | X | X |
| file size match | O | X | - | - |
| ACTION | R | A | B | S |
R, A, B, S與剛才介紹的定義一致
BitTorrent相關下載
- 通過遠程BitTorrent文件下載
aria2c http://site/file.torrent
- 通過遠程BitTorrent文件下載,但在內存中處理
aria2c --follow-torrent=mem http://site/file.torrent
- 通過本地torrent文件下載:
aria2c -u40K /path/to/file.torrent
注:-u, –max-upload-limit用來指定最大上傳速度
可以同時處理多個torrent文件aria2c /path/to/file1.torrent /path/to/file2.torrent
- 通過BitTorrent Magnet URI下載:
aria2c "magnet:?xt=urn:btih:248D0A1CD08284299DE78D5C1ED359BB46717D8C&dn=aria2"
注:需要將magnet的地址用單引號或者雙引號引起來,因為里面包含’&'字符。當使用magnet時,強烈建議打開dht選項,–enable-dht
將metadata保存成.torrent文件aria2c --bt-save-metadata "magnet:?xt=urn:btih:248D0A1CD08284299DE78D5C1ED359BB46717D8C&dn=aria2"
這個命令會將metadata信息保存在248d0a1cd08284299de78d5c1ed359bb46717d8c.torrent文件中
- 自動調整peer節點數量
當所有節點的整體下載速度低於某個值時,aria2可以臨時增加節點數量來獲取更快的下載速率
aria2c --bt-request-peer-speed-limit=200K file.torrent
- 開啟DHT
aria2c --enable-dht http://site/file.torrent
注:在1.7.2版本后,dht選項是被默認打開的。當aria2只處理http/ftp下載時,不會打開dht選項。當第一個torrent開始下載時,aria2進行DHT功能的初始化,然后一直運行到aria2退出。
- 開啟ipv6的DHT
aria2c --enable-dht6 --dht-listen-port=6881 --dht-listen-addr6=YOUR_GLOBAL_UNICAST_IPV6_ADDR --enable-async-dns6
注:如果aria2在build時沒有使用c-ares,則不需要–enable-async-dns6。aria2在ipv4和ipv6的dht中共享一些端口
- 增加和刪除tracker URI:
下面這個例子將從file.torrent中移除所有的tracker的uri,然后使用”http://tracker1/announce” 和 “http://tracker2/announce”
aria2c --bt-exclude-tracker="*" --bt-tracker="http://tracker1/announce,http://tracker2/announce" file.torrent
- 加密
在默認情況下,aria2可以接收加密/非加密的連接,並且會首先嘗試加密握手,如果失敗才會去使用傳統的BitTorrent握手
下面這個例子中,aria2將只通過加密的握手接受與建立連接。aria2c --bt-require-crypto=true http://site/file.torrent
存在兩種加密方式,頭加密和全連接加密。如果兩種都可以被peer提供,aria2將默認使用頭加密方式。如果要使用全連接加密,可以使用:
aria2c --bt-min-crypto-level=arc4 http://site/file.torrent
- 打印torrent文件內容
aria2c -S file.torrent
- 通過序號選擇指定文件下載:
aria2c --select-file=1-4,8 -Tfile.torrent
注:index信息可以通過-S來獲得
- 修改監聽端口
aria2c --listen-port=6881-6883 file.torrent
注:請確保指定端口可以進行tcp的上行和下行通信
- 指定aria2完成下載后的停止條件
aria2c --seed-time=120 --seed-ratio=1.0 file.torrent
注:本例中,aria2會在下載完成后120分鍾,或seed ratio達到1.0時退出程序
- 設置上傳速度
aria2c --max-upload-limit=100K file.torrent
- Seeding已經下載完成的文件
可以使用-V選擇來播種下載完成的文件,它會首先對文件進行分片的hash校驗
Seeding already downloaded file
如果可以確定下載文件的正確性,可以使用–bt-seed-unverified選項來跳過文件的校驗環節
aria2c --bt-seed-unverified -d/path/to/dir file.torrent
還可以同時播種多個torrent文件
aria2c --bt-seed-unverified -d/path/to/dir file1.torrent file2.torrent
- 通過index指定文件名
為了指定bt下載的文件名稱,需要使用-S選線來查看torrent文件中的index信息,例如:
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
注:當對http uri中的torrent文件使用–index-out是不成功,它只對本地的torrent文件有效。aria2也不會去記憶–index-out選項內容,在每次的繼續下載或播種時都需要手工指明,而且如果沒有該選項,它也不會給用戶任何提醒,所以需要注意。
- 為進行文件預覽進行分片優先下載
優先下載torrent中所有文件的前1MB
aria2c --bt-prioritize-piece=head file.torrent
Metalink相關下載示例
- 從遠程metalink下載文件:
aria2c http://host/file.metalink
- 從遠程metalink下載文件,但在內存中處理metalink:
aria2c --follow-metalink=mem http://host/file.metalink
- 通過本地metalink下載:
aria2c -t10 --lowest-speed-limit=4000 file.metalink
- 使用5個server下載
aria2c -C5 file.metalink
注:當使用metalink時,-s參數不再起作用,需要使用-C選項
- 通過多個本地metalink文件進行下載:
aria2c file1.metalink file2.metalink
- 打印metalink的內容
aria2c -S file.metalink
- 通過序號下載指定文件
aria2c --select-file=1-4,8 -Mfile.metalink
注:可以通過-S選擇來打印metalink文件的內容
- 指定用戶偏好從本地metalink下載文件
aria2c --metalink-location=JP,US --metalink-version=1.1 --metalink-language=en-US file.metalink
使用代理服務器
- 為所有協議(HTTP(S)/FTP)設定代理服務器
aria2c --all-proxy='http://proxy:8080' http://host/file
注:–all-proxy選項可以被特定的協議選項覆蓋,如–http-proxy, –https-proxy 和 –ftp-proxy
- 設置http代理
aria2c --http-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
注:username and password 需要進行%轉碼,如過username是’myid@domain’,則轉碼后的結果為:’myid@domain’。
高級的http特性:
- 導入cookie
導入Mozilla/Firefox(1.x/2.x) 和 Netscape格式的cookie
aria2c --load-cookies=cookies.txt http://host/file
- 導入Firefox3格式的cookie
aria2c --load-cookies=cookies.sqlite http://host/file
- 被瀏覽器或其他程序繼續下載
aria2c -c -s2 http://host/partiallydownloadedfile.zip
其他高級特性
- 下載速度限制
aria2c --max-download-limit=100K http://host/file
- 使用-V修復受損的下載
aria2c -V file.metalink
注:這個選項只適用於BitTorrent或者帶有校驗的metalink
- 當下載速度下於某個特定值時放棄下載
aria2c --lowest-speed-limit=10K file.metalink
URI的參數化支持
- 可以使用大括號來表達一組列表
aria2c -P http://{host1,host2,host3}/file.iso - 可以使用[]來表示一個數字序列
aria2c -Z -P http://host/image[000-100].png
注:當所有的URI指向不同的文件時,需要使用-Z選項
- 甚至可以指定步長
aria2c -Z -P http://host/image[A-Z:2].png
- 時間戳
保留源文件時間戳
aria2c -R http://host/file.iso
- 下載完成后執行特定命令
aria2c --on-download-complete=COMMAND http://example.org/file.iso
另見:–on-download-error, –on-download-start 和 –on-download-stop,或者執行aria2c -h#hook
- 寫入/dev/null
aria2c -d /dev -o null --allow-overwrite=true http://example.org/file
–allow-overwrite=true是為了避免aria2重命名已有的/dev/null
輸入文件
輸入文件中可以包括一系列的URI地址,也可以針對同一個資源設置多個URI:不同的URI寫在一行並使用tab分割。
輸入文件的每一行都被當作aria2的命令行參數,因此可以受到-Z和-P選項影響
另外,選項也可以在每行URI的后面設置,更詳盡的描述可以在man page的輸入文件部分得到。這種選擇的含義與命令行選項的含義一致,不過只適用在他們跟隨的那個URI上。
如下,一個uri文件名為uri.txt,其內容如下:http://server/file.iso http://mirror/file.iso dir=/iso_images out=file.img http://foo/bar
如果aria2使用 -i uri.txt -d /tmp, 那么file.iso就會被保存為/iso_images/file.img,它的下載源為http://server/file.iso 和 http://mirror/file.iso ;而bar文件則是從http://foo/bar 下載並且保存為 /tmp/bar
