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

运维 系统运维
aria2 是一个自由、开源、轻量级多协议和多源的命令行下载工具。它支持 HTTP/HTTPS、FTP、SFTP、 BitTorrent 和 Metalink 协议。aria2 可以通过内建的 JSON-RPC 和 XML-RPC 接口来操纵。aria2 下载文件的时候,自动验证数据块。它可以通过多个来源或者多个协议下载一个文件,并且会尝试利用你的最大下载带宽。

[[177656]]

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 

谢谢欣赏 …) 

 

责任编辑:庞桂玉 来源: Linux中国
相关推荐

2010-06-07 14:45:37

Linux下载工具

2010-02-04 15:17:48

Linux wget

2009-08-11 09:26:06

2020-12-11 06:44:16

命令行工具开发

2020-12-10 16:16:08

工具代码开发

2011-07-11 13:20:13

linuxuniq

2023-06-09 07:45:29

Kuberneteskubectl

2010-07-15 09:37:47

Perl命令行

2010-07-20 14:18:22

Perl命令行

2013-12-09 14:29:13

OpenStack命令行工具API

2010-11-24 17:12:17

MySQL命令行

2017-03-03 10:10:15

2011-01-18 19:11:26

Postfix命令行

2010-07-26 09:32:41

Perl命令行

2010-07-20 14:02:38

Perl命令行参数

2010-07-15 11:08:23

Perl命令行

2010-07-26 09:14:22

Perl命令行

2019-08-27 10:32:01

Linux操作系统Windows

2018-05-04 09:15:35

PythonPlumbum命令行

2013-11-15 09:43:15

JDK工具
点赞
收藏

51CTO技术栈公众号