开发者社区> 玄学酱> 正文

命令行下载工具aria2应用实例

简介:
+关注继续查看

aria2 是一个自由、开源、轻量级多协议和多源的命令行下载工具。它支持 HTTP/HTTPS、FTP、SFTP、 BitTorrent 和 Metalink 协议。aria2 可以通过内建的 JSON-RPC 和 XML-RPC 接口来操纵。aria2 下载文件的时候,自动验证数据块。它可以通过多个来源或者多个协议下载一个文件,并且会尝试利用你的最大下载带宽。默认情况下,所有的 Linux 发行版都包括 aria2,所以我们可以从官方库中很容易的安装。一些 GUI 下载管理器例如 uget 使用 aria2 作为插件来提高下载速度。

Aria2 特性

  • 支持 HTTP/HTTPS GET
  • 支持 HTTP 代理
  • 支持 HTTP BASIC 认证
  • 支持 HTTP 代理认证
  • 支持 FTP (主动、被动模式)
  • 通过 HTTP 代理的 FTP(GET 命令行或者隧道)
  • 分段下载
  • 支持 Cookie
  • 可以作为守护进程运行。
  • 支持使用 fast 扩展的 BitTorrent 协议
  • 支持在多文件 torrent 中选择文件
  • 支持 Metalink 3.0 版本(HTTP/FTP/BitTorrent)
  • 限制下载、上传速度

1) Linux 下安装 aria2

我们可以很容易的在所有的 Linux 发行版上安装 aria2 命令行下载器,例如 Debian、 Ubuntu、 Mint、 RHEL、 CentOS、 Fedora、 suse、 openSUSE、 Arch Linux、 Manjaro、 Mageia 等等……只需要输入下面的命令安装即可。对于 CentOS、 RHEL 系统,我们需要开启 uget 或者 RPMForge 库的支持。


  1. [对于 Debian、 Ubuntu 和 Mint] 
  2. $ sudo apt-get install aria2 
  3. [对于 CentOS、 RHEL、 Fedora 21 和更早些的操作系统] 
  4. # yum install aria2 
  5. [Fedora 22 和 之后的系统] 
  6. # dnf install aria2 
  7. [对于 suse 和 openSUSE] 
  8. # zypper install wget 
  9. [Mageia] 
  10. # urpmi aria2 
  11. [对于 Arch Linux] 
  12. $ sudo pacman -S aria2 

2) 下载单个文件

下面的命令将会从指定的 URL 中下载一个文件,并且保存在当前目录,在下载文件的过程中,我们可以看到文件的(日期、时间、下载速度和下载进度)。


  1. # aria2c https://download.owncloud.org/community/owncloud-9.0.0.tar.bz2 
  2. [#986c80 19MiB/21MiB(90%) CN:1 DL:3.0MiB] 
  3. 03/22 09:49:13 [NOTICE] Download complete: /opt/owncloud-9.0.0.tar.bz2 
  4. Download Results: 
  5. gid   |stat|avg speed  |path/URI 
  6. ======+====+===========+======================================================= 
  7. 986c80|OK  |   3.0MiB/s|/opt/owncloud-9.0.0.tar.bz2 
  8. Status Legend: 
  9. (OK):download completed. 

3) 使用不同的名字保存文件

在初始化下载的时候,我们可以使用 -o(小写)选项在保存文件的时候使用不同的名字。这儿我们将要使用 owncloud.zip 文件名来保存文件。


  1. # aria2c -o owncloud.zip https://download.owncloud.org/community/owncloud-9.0.0.tar.bz2 
  2. [#d31304 16MiB/21MiB(74%) CN:1 DL:6.2MiB] 
  3. 03/22 09:51:02 [NOTICE] Download complete: /opt/owncloud.zip 
  4. Download Results: 
  5. gid   |stat|avg speed  |path/URI 
  6. ======+====+===========+======================================================= 
  7. d31304|OK  |   7.3MiB/s|/opt/owncloud.zip 
  8. Status Legend: 
  9. (OK):download completed. 

4) 下载速度限制

默认情况下,aria2 会利用全部带宽来下载文件,在文件下载完成之前,我们在服务器就什么也做不了(这将会影响其他服务访问带宽)。所以在下载大文件时最好使用 –max-download-limit 选项来避免进一步的问题。


  1. # aria2c --max-download-limit=500k https://download.owncloud.org/community/owncloud-9.0.0.tar.bz2 
  2. [#7f9fbf 21MiB/21MiB(99%) CN:1 DL:466KiB] 
  3. 03/22 09:54:51 [NOTICE] Download complete: /opt/owncloud-9.0.0.tar.bz2 
  4. Download Results: 
  5. gid   |stat|avg speed  |path/URI 
  6. ======+====+===========+======================================================= 
  7. 7f9fbf|OK  |   462KiB/s|/opt/owncloud-9.0.0.tar.bz2 
  8. Status Legend: 
  9. (OK):download completed. 

5) 下载多个文件

下面的命令将会从指定位置下载超过一个的文件并保存到当前目录,在下载文件的过程中,我们可以看到文件的(日期、时间、下载速度和下载进度)。


  1. # aria2c -Z https://download.owncloud.org/community/owncloud-9.0.0.tar.bz2 ftp://ftp.gnu.org/gnu/wget/wget-1.17.tar.gz 
  2. [DL:1.7MiB][#53533c 272KiB/21MiB(1%)][#b52bb1 768KiB/3.6MiB(20%)] 
  3. 03/22 10:25:54 [NOTICE] Download complete: /opt/wget-1.17.tar.gz 
  4. [#53533c 18MiB/21MiB(86%) CN:1 DL:3.2MiB] 
  5. 03/22 10:25:59 [NOTICE] Download complete: /opt/owncloud-9.0.0.tar.bz2 
  6. Download Results: 
  7. gid   |stat|avg speed  |path/URI 
  8. ======+====+===========+======================================================= 
  9. b52bb1|OK  |   2.8MiB/s|/opt/wget-1.17.tar.gz 
  10. 53533c|OK  |   3.4MiB/s|/opt/owncloud-9.0.0.tar.bz2 
  11. Status Legend: 
  12. (OK):download completed. 

6) 续传未完成的下载

当你遇到一些网络连接问题或者系统问题的时候,并将要下载一个大文件(例如: ISO 镜像文件),我建议你使用 -c 选项,它可以帮助我们从该状态续传未完成的下载,并且像往常一样完成。不然的话,当你再次下载,它将会初始化新的下载,并保存成一个不同的文件名(自动的在文件名后面添加 .1 )。注意:如果出现了任何中断,aria2 使用 .aria2 后缀保存(未完成的)文件。


  1. # aria2c -c https://download.owncloud.org/community/owncloud-9.0.0.tar.bz2 
  2. [#db0b08 8.2MiB/21MiB(38%) CN:1 DL:3.1MiB ETA:4s]^C 
  3. 03/22 10:09:26 [NOTICE] Shutdown sequence commencing... Press Ctrl-C again for emergency shutdown. 
  4. 03/22 10:09:26 [NOTICE] Download GID#db0b08bf55d5908d not complete: /opt/owncloud-9.0.0.tar.bz2 
  5. Download Results: 
  6. gid   |stat|avg speed  |path/URI 
  7. ======+====+===========+======================================================= 
  8. db0b08|INPR|   3.3MiB/s|/opt/owncloud-9.0.0.tar.bz2 
  9. Status Legend: 
  10. (INPR):download in-progress. 
  11. 如果重新启动传输,aria2 将会恢复下载。 
  12. # aria2c -c https://download.owncloud.org/community/owncloud-9.0.0.tar.bz2 
  13. [#873d08 21MiB/21MiB(98%) CN:1 DL:2.7MiB] 
  14. 03/22 10:09:57 [NOTICE] Download complete: /opt/owncloud-9.0.0.tar.bz2 
  15. Download Results: 
  16. gid   |stat|avg speed  |path/URI 
  17. ======+====+===========+======================================================= 
  18. 873d08|OK  |   1.9MiB/s|/opt/owncloud-9.0.0.tar.bz2 
  19. Status Legend: 
  20. (OK):download completed. 

7) 从文件获取输入

就像 wget 可以从一个文件获取输入的 URL 列表来下载一样。我们需要创建一个文件,将每一个 URL 存储在单独的行中。ara2 命令行可以添加 -i 选项来执行此操作。


  1. # aria2c -i test-aria2.txt 
  2. [DL:3.9MiB][#b97984 192KiB/21MiB(0%)][#673c8e 2.5MiB/3.6MiB(69%)] 
  3. 03/22 10:14:22 [NOTICE] Download complete: /opt/wget-1.17.tar.gz 
  4. [#b97984 19MiB/21MiB(90%) CN:1 DL:2.5MiB] 
  5. 03/22 10:14:30 [NOTICE] Download complete: /opt/owncloud-9.0.0.tar.bz2 
  6. Download Results: 
  7. gid   |stat|avg speed  |path/URI 
  8. ======+====+===========+======================================================= 
  9. 673c8e|OK  |   4.3MiB/s|/opt/wget-1.17.tar.gz 
  10. b97984|OK  |   2.5MiB/s|/opt/owncloud-9.0.0.tar.bz2 
  11. Status Legend: 
  12. (OK):download completed. 

8) 每个主机使用两个连接来下载

默认情况,每次下载连接到一台服务器的最大数目,对于一条主机只能建立一条。我们可以通过 aria2 命令行添加 -x2(2 表示两个连接)来创建到每台主机的多个连接,以加快下载速度。


  1. # aria2c -x2 https://download.owncloud.org/community/owncloud-9.0.0.tar.bz2 
  2. [#ddd4cd 18MiB/21MiB(83%) CN:1 DL:5.0MiB] 
  3. 03/22 10:16:27 [NOTICE] Download complete: /opt/owncloud-9.0.0.tar.bz2 
  4. Download Results: 
  5. gid   |stat|avg speed  |path/URI 
  6. ======+====+===========+======================================================= 
  7. ddd4cd|OK  |   5.5MiB/s|/opt/owncloud-9.0.0.tar.bz2 
  8. Status Legend: 
  9. (OK):download completed. 

9) 下载 BitTorrent 种子文件

我们可以使用 aria2 命令行直接下载一个 BitTorrent 种子文件:


  1. # aria2c https://torcache.net/torrent/C86F4E743253E0EBF3090CCFFCC9B56FA38451A3.torrent?title=[kat.cr]irudhi.suttru.2015.official.teaser.full.hd.1080p.pathi.team.sr 
  2. [#388321 0B/0B CN:1 DL:0B]                                                                                                                     
  3. 03/22 20:06:14 [NOTICE] Download complete: /opt/[kat.cr]irudhi.suttru.2015.official.teaser.full.hd.1080p.pathi.team.sr.torrent 
  4. 03/22 20:06:14 [ERROR] Exception caught 
  5. Exception: [BtPostDownloadHandler.cc:98] errorCode=25 Could not parse BitTorrent metainfo 
  6. Download Results: 
  7. gid   |stat|avg speed  |path/URI 
  8. ======+====+===========+======================================================= 
  9. 388321|OK  |    11MiB/s|/opt/[kat.cr]irudhi.suttru.2015.official.teaser.full.hd.1080p.pathi.team.sr.torrent 
  10. Status Legend: 
  11. (OK):download completed. 

10) 下载 BitTorrent 磁力链接

使用 aria2 我们也可以通过 BitTorrent 磁力链接直接下载一个种子文件:


  1. # aria2c 'magnet:?xt=urn:btih:248D0A1CD08284299DE78D5C1ED359BB46717D8C' 

11) 下载 BitTorrent Metalink 种子

我们也可以通过 aria2 命令行直接下载一个 Metalink 文件。


  1. # aria2c https://curl.haxx.se/metalink.cgi?curl=tar.bz2 

12) 从密码保护的网站下载一个文件

或者,我们也可以从一个密码保护网站下载一个文件。下面的命令行将会从一个密码保护网站中下载文件。


  1. # aria2c --http-user=xxx --http-password=xxx https://download.owncloud.org/community/owncloud-9.0.0.tar.bz2 
  2. # aria2c --ftp-user=xxx --ftp-password=xxx ftp://ftp.gnu.org/gnu/wget/wget-1.17.tar.gz 

13) 阅读更多关于 aria2

如果你希望了解了解更多选项 —— 它们同时适用于 wget,可以输入下面的命令行在你自己的终端获取详细信息:


  1. # man aria2c 
  2. or 
  3. # aria2c --help 

谢谢欣赏 …)






作者:MAGESH MARUTHAMUTHU
来源:51CTO

版权声明:本文内容由阿里云实名注册用户自发贡献,版权归原作者所有,阿里云开发者社区不拥有其著作权,亦不承担相应法律责任。具体规则请查看《阿里云开发者社区用户服务协议》和《阿里云开发者社区知识产权保护指引》。如果您发现本社区中有涉嫌抄袭的内容,填写侵权投诉表单进行举报,一经查实,本社区将立刻删除涉嫌侵权内容。

相关文章
layui弹出层之应用实例讲解
从酒店管理系统到智能门锁及其现在的资源共享平台,layui框架,我们团队用的比较多的就是这个layui弹出层。   layui弹出层,除了页面iframe层我们比较常用还有就是表单校验和其他相关的友好提示信息。
1181 0
窗口子类化-实例应用
所谓窗口子类化:改变一个已经存在的窗口实例的性质:消息处理与其他实例属性。   通常在SDK中所谓的窗口子类化就是改变一个窗口函数(如GetWindowLong()和SetWindowLong())通过这两个函数来设置窗口的属性等;   而今天我们主要内容是介绍MFC中的子类化,它跟SDK中的子类化不太一样: 所有MFC窗口有相同的窗口函数,由该窗口函数根据窗口句柄查找窗口实例,在把消息映射到该窗口类(class)得消息处理函数上。
980 0
arp工具简介_arptables_arpwatch
一.ARP协议简介 当主机上的需要发送一个数据到一个目的IP时,设备驱动程序并不能理解这个IP地址.
959 0
菜鸟入门【ASP.NET Core】5:命令行配置、Json文件配置、Bind读取配置到C#实例、在Core Mvc中使用Options
命令行配置 我们通过vs2017创建一个控制台项目CommandLineSample   可以看到现在项目以来的是dotnet core framework 我们需要吧asp.net core引用进来,我们可以直接添加Microsoft.
1432 0
js之radio应用实例
radio和checkbox还有select,可谓是前后端常用三剑客啊!特别是checkbox和select,关于这两个今天不讲,因为在下面这几篇文章,我已经比较详细的讲解了。 SpringMVC之ajax+select下拉框交互常用方式 checkbox选中并通过ajax传数组到后台接收 关于checkbox自动选中 今天主要讲解的是radio。
1003 0
Angular应用ng serve命令行的学习笔记
Angular应用ng serve命令行的学习笔记
27 0
+关注
玄学酱
这个时候,玄酱是不是应该说点什么...
20709
文章
438
问答
文章排行榜
最热
最新
相关电子书
更多
JS零基础入门教程(上册)
立即下载
性能优化方法论
立即下载
手把手学习日志服务SLS,云启实验室实战指南
立即下载