linux命令行下載管理器Aria2

aria2 是一個自由、開源、輕量級多協議和多源的命令行下載工具。它支持 HTTP/HTTPS、FTP、SFTP、 BitTorrent 和 Metalink 協議。aria2 可以通過內建的 JSON-RPC 和 XML-RPC 介面來操縱。aria2 下載文件的時候,自動驗證數據塊。它可以通過多個來源或者多個協議下載一個文件,並且會嘗試利用你的最大下載帶寬。默認情況下,所有的 Linux 發行版都包括 aria2,所以我們可以從官方庫中很容易的安裝。一些 GUI 下載管理器例如 uget 使用 aria2 作為插件來提高下載速度。

支持 HTTP/HTTPS GET 方式
支持 HTTP 代理
支持 HTTP BASIC 認證
支持 HTTP 代理認證
支持 FTP (主動、被動模式)
通過 HTTP 代理的 FTP(GET 命令或隧道)
分段下載
支持 Cookie
它可以作為守護進程運行。
支持 BitTorrent 協議和 fast 擴展。
在含有多個文件的 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 庫的支持。

    [對於 Debian、 Ubuntu 和 Mint]
    $ sudo apt-get install aria2
    [對於 CentOS、 RHEL、 Fedora 21 和更早些的操作系統]
    # yum install aria2
    [Fedora 22 和 之後的系統]
    # dnf install aria2
    [對於 suse 和 openSUSE]
    # zypper install wget
    [Mageia]
    # urpmi aria2
    [對於 Arch Linux]
    $ sudo pacman -S aria2

2) 下載單個文件。下面的命令將會從指定的 URL 中下載一個文件,並且保存在當前目錄,在下載文件的過程中,我們可以看到文件的(日期、時間、下載速度和下載進度)。

zhong@debian:~$ aria2c https://cdimage.debian.org/debian-cd/current/amd64/iso-cd/debian-11.1.0-amd64-netinst.iso

10/18 11:26:11 [NOTICE] Downloading 1 item(s)

10/18 11:26:11 [NOTICE] CUID#7 - Redirecting to https://laotzu.ftp.acc.umu.se/debian-cd/current/amd64/iso-cd/debian-11.1.0-amd64-netinst.iso
 *** Download Progress Summary as of Mon Oct 18 11:27:11 2021 ***          
===========================================================================
[#4bffcd 370MiB/378MiB(98%) CN:1 DL:6.2MiB ETA:1s]
FILE: /home/zhong/debian-11.1.0-amd64-netinst.iso
---------------------------------------------------------------------------

[#4bffcd 370MiB/378MiB(98%) CN:1 DL:6.2MiB ETA:1s]
10/18 11:27:12 [NOTICE] 下載已完成:/home/zhong/debian-11.1.0-amd64-netinst.iso

下載結果:
gid   |stat|avg speed  |path/URI
======+====+===========+=======================================================
4bffcd|OK  |   6.3MiB/s|/home/zhong/debian-11.1.0-amd64-netinst.iso

狀態標識:
(OK):下載已完成。

3) 使用不同的名字保存文件。在初始化下載的時候,我們可以使用 -o(小寫)選項在保存文件的時候使用不同的名字。這兒我們將要使用 owncloud.zip 文件名來保存文件。

zhong@debian:~$ aria2c -o debian.zip  https://cdimage.debian.org/debian-cd/current/amd64/iso-cd/debian-11.1.0-amd64-netinst.iso

10/18 12:23:07 [NOTICE] Downloading 1 item(s)

10/18 12:23:08 [NOTICE] CUID#7 - Redirecting to https://laotzu.ftp.acc.umu.se/debian-cd/current/amd64/iso-cd/debian-11.1.0-amd64-netinst.iso
[#be6e2b 371MiB/378MiB(98%) CN:1 DL:6.9MiB ETA:1s]                         
10/18 12:24:06 [NOTICE] 下載已完成:/home/zhong/debian.zip

下載結果:
gid   |stat|avg speed  |path/URI
======+====+===========+=======================================================
be6e2b|OK  |   6.6MiB/s|/home/zhong/debian.zip

狀態標識:
(OK):下載已完成。

4) 下載速度限制。默認情況下,aria2 會利用全部帶寬來下載文件,在文件下載完成之前,我們在伺服器就什麼也做不了(這將會影響其他服務訪問帶寬)。所以在下載大文件時最好使用 –max-download-limit 選項來避免進一步的問題。

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

5) 下載多個文件。下面的命令將會從指定位置下載超過一個的文件並保存到當前目錄,在下載文件的過程中,我們可以看到文件的(日期、時間、下載速度和下載進度)。

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

6) 續傳未完成的下載。當你遇到一些網路連接問題或者系統問題的時候,並將要下載一個大文件(例如: ISO 鏡像文件),我建議你使用 -c 選項,它可以幫助我們從該狀態續傳未完成的下載,並且像往常一樣完成。不然的話,當你再次下載,它將會初始化新的下載,並保存成一個不同的文件名(自動的在文件名後面添加 .1 )。注意:如果出現了任何中斷,aria2 使用 .aria2 後綴保存(未完成的)文件。

    # aria2c -c https://download.owncloud.org/community/owncloud-9.0.0.tar.bz2
    [#db0b08 8.2MiB/21MiB(38%) CN:1 DL:3.1MiB ETA:4s]^C
    03/22 10:09:26 [NOTICE] Shutdown sequence commencing... Press Ctrl-C again for emergency shutdown.
    03/22 10:09:26 [NOTICE] Download GID#db0b08bf55d5908d not complete: /opt/owncloud-9.0.0.tar.bz2
    Download Results:
    gid   |stat|avg speed  |path/URI
    ======+====+===========+=======================================================
    db0b08|INPR|   3.3MiB/s|/opt/owncloud-9.0.0.tar.bz2
    Status Legend:
    (INPR):download in-progress.
    如果重新啟動傳輸,aria2 將會恢復下載。
    # aria2c -c https://download.owncloud.org/community/owncloud-9.0.0.tar.bz2
    [#873d08 21MiB/21MiB(98%) CN:1 DL:2.7MiB]
    03/22 10:09:57 [NOTICE] Download complete: /opt/owncloud-9.0.0.tar.bz2
    Download Results:
    gid   |stat|avg speed  |path/URI
    ======+====+===========+=======================================================
    873d08|OK  |   1.9MiB/s|/opt/owncloud-9.0.0.tar.bz2
    Status Legend:
    (OK):download completed.

7) 從文件獲取輸入。就像 wget 可以從一個文件獲取輸入的 URL 列表來下載一樣。我們需要創建一個文件,將每一個 URL 存儲在單獨的行中。ara2 命令行可以添加 -i 選項來執行此操作。

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

8) 每個主機使用兩個連接來下載。默認情況,每次下載連接到一台伺服器的最大數目,對於一條主機只能建立一條。我們可以通過 aria2 命令行添加 -x2(2 表示兩個連接)來創建到每台主機的多個連接,以加快下載速度。

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

9) 下載 BitTorrent 種子文件。我們可以使用 aria2 命令行直接下載一個 BitTorrent 種子文件:

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

10) 下載 BitTorrent 磁力鏈接。使用 aria2 我們也可以通過 BitTorrent 磁力鏈接直接下載一個種子文件:

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

11) 下載 BitTorrent Metalink 種子。我們也可以通過 aria2 命令行直接下載一個 Metalink 文件。

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

12) 從密碼保護的網站下載一個文件。或者,我們也可以從一個密碼保護網站下載一個文件。下面的命令行將會從一個密碼保護網站中下載文件。

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

13) 閱讀更多關於 aria2。如果你希望了解了解更多選項 —— 它們同時適用於 wget,可以輸入下面的命令行在你自己的終端獲取詳細信息:

    # man aria2c
    or
    # aria2c --help

作者: 張津東

群而不黨,和而不同,自由理性皆容納。

發表回復