aria2下载工具-程序员宅基地

技术标签: shell  操作系统  数据库  

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://www.openboy.net/ubuntu-linux-download-tool-aria2.html

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

 

转载于:https://www.cnblogs.com/ikaka/p/3496700.html

版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
本文链接:https://blog.csdn.net/weixin_34166472/article/details/94249066

智能推荐

ios9/sdk9/xcode7/iphone6s(+)适配 -程序员宅基地

文章浏览阅读161次。 ios9 企业级分发iOS9网络适配_ATS为了强制增强数据访问安全,iOS9 默认会把所有从NSURLConnection 、 CFURL 、 NSURLSession发出的 HTTP 请求,都改为 HTTPS 请求:iOS9.x-SDK编译时,默认会让所有从NSURLConnection 、 CFURL 、 NSURLSession发出的 HTTP 请求统一采用TLS 1...

java Spring Boot整合jwt实现token生成_springboot项目生成token-程序员宅基地

文章浏览阅读1k次。这里 我是直接不管了 不管他传什么进来 只要是符合我users类格式的 我就算他登录通过 通过getid生成一个token 返回回去。然后 这里 我们加一个属性类 用于用户登录使用 这里 我就搞简单一点 直接 一个id 一个name了。这里需要注意的是 如果你想通过id生成token 那么 你的id必须是个字符串。因为登录接口要用 JwtUtils 所以 最好建在登录接口的类的同目录下。然后 我们接口所在的类 要条件装配好我们用户的属性类 也就是 users。_springboot项目生成token

Android Studio真机调试教程_android studio 配置调试机-程序员宅基地

文章浏览阅读508次,点赞4次,收藏10次。进行USB连接的真机调试,将你写的安卓程序安装到安卓手机、平板。在目标安卓终端和AS进行一些设置。我的设备信息:Android设备:MatePad10.4 Mate40e版本:鸿蒙3.0 / 鸿蒙4.0 对应安卓下载10.0版本即可(只要是鸿蒙系统一般都是下载10.0)_android studio 配置调试机

get新技能!把学校饭卡复制到小米手环NFC版本上_nfc_reader_crack-程序员宅基地

文章浏览阅读7.8k次,点赞3次,收藏32次。*严正声明:本文仅限于技术讨论与分享,严禁用于非法途径。hello!大家好,欢迎来到网络安全情报局,网络安全特工将持续为您分享最新资讯、干货。也可以关注我的公众号:网络安全情报局,获取最新消息。一、NFC是什么?NFC是Near Field Communication缩写,即近距离无线通讯技术。由飞利浦公司和索尼公司共同开发的NFC是一种非接触式识别和互联技术,可以在移动设备、消费类电子产品、PC和智能控件工具间进行近距离无线通信。NFC功能提供了一种简单、触控式的解决方案,可以让消费者简单_nfc_reader_crack

[转]Discuz! X3.0最新研发进度【提前预览】_discuzx3.0-程序员宅基地

文章浏览阅读1.2k次。【Discuz! X3.0研发进度-曝光】1、离Discuz! X2.5发布已有半年时间,很多站长和我一样,想了解下Discuz!产品的最新动态,咱们研发团队最近都在忙什么呢?  这段时间我们把主要精力放在了Discuz! 新产品的研发上了,在优化和完善Discuz! X2.5百项功能的基础上,开发Discuz! X3.0,目前Discuz! X3.0已进入最后攻坚阶段_discuzx3.0

DB2对SEQUENCE进行授权_db2 sequence授权-程序员宅基地

文章浏览阅读1k次。场景:在A模式下创建了序列TEST_SEQ,但是当B模式使用该序列时发现报错。此时就需要对B模式授权。具体步骤如下A模式下执行授权:grant usage on sequence igw.TEST_SEQ to ipay;B模式下创建别名:create or replace alias ipay.TEST_SEQ for sequence igw.TEST_SEQ这样模式A和B可以共用..._db2 sequence授权

随便推点

【机器学习】高斯回归过程GPR_高斯过程回归 kriging-程序员宅基地

文章浏览阅读418次。我是知识的搬运工_高斯过程回归 kriging

[Win32SDK基本]ListView Controls(1)Report (details) View 详解_syslistview32l 换行-程序员宅基地

文章浏览阅读7k次,点赞5次,收藏16次。本文由CSDN用户zuishiko所作,转载请注明出处:http://blog.csdn.net/zuishikonghuan/article/details/46872885老规矩,先上MSDN:https://msdn.microsoft.com/en-us/library/windows/desktop/bb774737(v=vs.85).aspx其实还是子窗口,static那节_syslistview32l 换行

QT 网络编程(一)-程序员宅基地

文章浏览阅读1.1k次,点赞38次,收藏20次。Qt 网络编程相关

软工视频总结-程序员宅基地

文章浏览阅读614次。经过十天的时间,对软工视频进行一下简单的总结。软工视频总共有24讲,一讲大约50分钟。前3章介绍软工视频的历史。 第 6 讲 1.需求分析的任务就是借助于当前系统的逻辑模型导出目标系统的逻辑模型,解决,目标系统的“做什么”的问题。 2.问题识别的另一项工作是建立分析所需要的通信途径,以保证能顺利地对问题进行分析。

python bad magic number_科学网-python反编译软件推荐uncompyle6-Bad magic number in .pyc-陈照强的博文...-程序员宅基地

文章浏览阅读2.6k次。背景从友方那边获得了pyc文件,但是由于他当时用的是python2.6编译的,而现在python2.6几乎被淘汰掉了,安装了python2.7 等其他版本无法运行该pyc文件,报错 RuntimeError: Bad magic number in .pyc file 。安装了python 2.6 后,运行该文件不报错,但是依赖模块openbabel,openbabel在python2.6中安装稍..._bad magic number in .pyc file

C语言中的数组(1)-程序员宅基地

文章浏览阅读902次,点赞29次,收藏17次。一维数组的创建和初始化,一维数组的使用,一维数组在内存中的存储,以及计算数组元素的个数的方法。

推荐文章

热门文章

相关标签