aria2 (简体中文) - ArchWiki

Jump to content

# aria2 (简体中文)

From ArchWiki

翻译状态：本文是 Aria2 的翻译。上次翻译日期：2021-12-11。如果英文版本有所更改，则您可以帮助同步翻译。

来自 aria2 主页:

  aria2 是一个轻量级多协议多源命令行下载工具，支持 HTTP/HTTPS， FTP，BitTorrent 和 Metalink。用户可以通过内置的 JSON-RPC 和 XML-RPC 接口操作 aria2。

## 安装

安装 aria2 软件包。

要以守护进程运行 aria2，你可以写一个 systemd 用户单元。

## 配置

### aria2.conf

aria2 默认从 `$XDG_CONFIG_HOME/aria2/aria2.conf` 中寻找全局配置，该行为可以通过 `--conf-path` 选项改变：

- 下面的示例用配置文件 `/file/aria2.rapidshare` 中的选项下载 `aria2.example.rar`：

    $ aria2c --conf-path=/file/aria2.rapidshare http://rapidshare.com/files/12345678/aria2.example.rar

如果存在 `$XDG_CONFIG_HOME/aria2/aria2.conf`，但希望使用 `/file/aria2.rapidshare` 中的选项，需要在命令中加入 `--no-conf` 选项：

- 若不使用默认的配置文件，只使用 `/file/aria2.rapidshare` 中的选项下载 `aria2.example.rar`：

    $ aria2c --no-conf --conf-path=/file/aria2.rapidshare http://rapidshare.com/files/12345678/aria2.example.rar

如果不存在 `$XDG_CONFIG_HOME/aria2/aria2.conf`，并且你想要简化配置管理：

    $ touch $XDG_CONFIG_HOME/aria2/aria2.conf

### 示例 aria2.conf

    continue
    dir=${HOME}/Desktop
    file-allocation=none
    input-file=${HOME}/.aria2/input.conf
    log-level=warn
    max-connection-per-server=4
    min-split-size=5M
    on-download-complete=exit

这与执行下面的命令等价：

    $ aria2c --dir=${HOME}/Desktop --file-allocation=none --input-file=${HOME}/.aria2/input.conf --on-download-complete=exit --log-level=warn FILE

注意： 上面示例 aria.conf 可能错误地使用了 $HOME 变量，一些用户报告说，使用花括号语法会在 aria2 的工作目录下创建名叫 ${HOME} 的文件夹。因为 bash 会把 $HOME 当成环境变量，这样的文件夹很难访问。目前建议在 aria2.conf 中使用绝对路径。

#### 选项细节

- `continue`: 如果存在下载任务对应的控制文件，自动继续未完成的下载任务。
- `dir=${HOME}/Desktop`: 在 `~/Desktop` 中存储下载文件。
- `file-allocation=none`: 不要在下载开始前预分配磁盘空间（默认值：prealloc1
- `input-file=${HOME}/.aria2/input.conf`: 从 `~/.aria2/input.conf` 中的 URI 下载文件，URI 以 TAB 分割。
- `log-level=warn`: 设置日志级别，只输出警告和错误。（默认值：debug）
- `max-connection-per-server=4`: 设置每个服务器的最大链接数为 4。（默认值：1）
- `min-split-size=5M`: 只在文件大小超过 2*5MB = 10MB 时分割文件。（默认值： 20M）
- `on-download-complete=exit`: 当下载任务完成时，运行 `exit` 命令并退出 shell。

##### 示例输入文件 #1

从两个分别的地址下载 `aria2-1.10.0.tar.bz2` 到 `~/Desktop`，并合并为 `aria2-1.10.0.tar.bz2`

    http://aria2.net/files/stable/aria2-1.10.0/aria2-1.10.0.tar.bz2    http://sourceforge.net/projects/aria2/files/stable/aria2-1.10.0/aria2-1.10.0.tar.bz2

##### 示例输入文件 #2

下载 `aria2-1.9.5.tar.bz2`，命名为 `aria2.old.tar.bz2` ，保存到 `/file/old`

    http://aria2.net/files/stable/aria2-1.9.5/aria2-1.9.5.tar.bz2
      dir=/file/old
      out=aria2.old.tar.bz2

下载 `aria2-1.10.0.tar.bz2`，命名为 `aria2.new.tar.bz2`，保存到 `~/Desktop`

    http://aria2.net/files/stable/aria2-1.10.0/aria2-1.10.0.tar.bz2
      out=aria2.new.tar.bz2

#### 备注

1 `--file-allocation=falloc`: 推荐在新的文件系统，比如 ext4 （具有 extents 支持的）、btrfs 或者 xfs 上，使用这个选项，因为它们几乎可以瞬间分配 GB 级别的大文件。不要在传统的文件系统，比如 ext3 上，使用 falloc，因为预分配会消耗与正常分配相同的时间，还会阻塞 aria2 下载。

提示： 要查看完整的配置选项，参见 `aria2c --help=#all` 和 aria2c(1) § OPTIONS。

### 示例 aria2.rapidshare

    http-user=USER_NAME
    http-passwd=PASSWORD
    allow-overwrite=true
    dir=/file/Downloads
    file-allocation=falloc
    enable-http-pipelining=true
    input-file=/file/input.rapidshare
    log-level=error
    max-connection-per-server=2
    summary-interval=120

#### 选项细节

- `http-user=USER_NAME`: 设置 HTTP 用户名为 USER_NAME。这会影响所有的 URI。
- `http-passwd=PASSWORD`: 设置 HTTP 密码为 PASSWORD。这会影响所有的 URI。
- `allow-overwrite=true`: 如果控制文件不存在，重新下载。（默认值：false）
- `dir=/file/Downloads`: 存储下载文件到 `/file/Downloads`。
- `file-allocation=falloc`: 在下载开始前，调用 posix_fallocate(3) 分配磁盘空间。（默认值：prealloc）
- `enable-http-pipelining=true`: 启用 HTTP/1.1 流水线来降低网络延迟的影响，并减少数据用量。（默认值：false）
- `input-file=/file/input.rapidshare`: 从 `/file/input.rapidshare` 中的 URI 下载文件，URI 以 TAB 分割。
- `log-level=error`: 设置日志级别，只输出错误。（默认值：debug）
- `max-connection-per-server=2`: 设置每台服务器每个文件的最大链接数为 2。（默认值：1）
- `summary-interval=120`: 每 120 秒输出下载进度汇总。（默认值：60）2

#### 备注

- 因为 `aria2.rapidshare` 包含用户名和密码，建议将该文件权限设置为 600 或类似的权限。

    $ cd /file
    $ chmod 600 /file/aria2.rapidshare
    $ ls -l
    total 128M
    -rw------- 1 arch users  167 Aug 20 00:00 aria2.rapidshare

2 `summary-interval=0`: 不显示下载进度汇总，可以提高总体性能。日志仍然会按照 `log-level` 选项的配置输出。

提示： 示例的配置文件可以用于Hotfile，DepositFiles 等网站。
注意： 命令行选项永远优先于配置文件中的选项。

### 示例 aria2.bittorrent

    bt-seed-unverified
    max-overall-upload-limit=1M
    max-upload-limit=128K
    seed-ratio=5.0
    seed-time=240

#### 选项细节

- `bt-seed-unverified=false`: 在做种前不检查文件哈希。（默认值：true）
- `max-overall-upload-limit=1M`: 设置全局最大上传速度为 1MB/sec。（默认值：0）
- `max-upload-limit=128K`: 设置每个种子的最大上传速度为 128K/sec。（默认值：0）
- `seed-ratio=5.0`: 下载完成后持续做种直到分享率达到 5.0。（默认值：1.0）
- `seed-time=240`: 下载完成后做种 240 分钟。

注意： 如果同时设置了 `seed-ratio` 和 `seed-time`，当至少一个条件满足时就会停止做种。

### 示例 aria2.daemon

这个配置可以用于以服务启动的 aria2。可以与下面的前端一起使用。注意 rpc-user 与 rpc-pass 选项已经被弃用，但许多前端还不支持新的认证系统。记得修改用户名、密码和下载目录。

    continue
    daemon=true
    dir=/home/aria2/Downloads
    file-allocation=falloc
    log-level=warn
    max-connection-per-server=4
    max-concurrent-downloads=3
    max-overall-download-limit=0
    min-split-size=5M
    enable-http-pipelining=true

    enable-rpc=true
    rpc-listen-all=true
    rpc-user=rpcuser
    rpc-passwd=rpcpass

## 前端

注意： 前端的设置不会影响 `aria2` 本身的配置，不确定不同的前端是否会在提供了自定义配置时，复用 `aria2` 的配置。用户应当确认选择的工具能效实现，并能持久保存配置。（比如 uGet 提供了自己的 `aria2` 命令行，并且会在重启间保存配置）。

### Web UIs

注意： 这些前端需要 `aria2c` 以 `--enable-rpc` 选项启动。它们应该在你本地的设备，而不是远程服务器上运行。

- Webui — Aria2 的 Html 前端。

  https://github.com/ziahamza/webui-aria2 || webui-aria2AUR

- aria2rpc — 用于连接远程 `aria2c` 实例的命令行工具。如果安装了 `aria2c`，该程序可以在 `/usr/share/doc/aria2/xmlrpc/aria2rpc` 下找到。

  https://github.com/tatsuhiro-t/aria2/blob/master/doc/xmlrpc/aria2rpc || aria2

### 其他 UIs

注意： 这些前端不需要 `aria2c` 以 `--enable-rpc` 选项启动。

- aria2fe — 一个命令行下载工具 aria2 的 GUI。

  https://sourceforge.net/projects/aria2fe/ || aria2feAUR

- Persepolis — Aria2 下载管理器的图形前端，具有许多功能，支持 HTTP 和 FTP。

  https://github.com/persepolisdm/ || persepolis, persepolis-gitAUR

- uGet — 功能丰富的 GTK/CLI 下载管理器，可以通过内置的插件，使用 aria2 作为后端。

  https://ugetdm.com || uget

## 提示与技巧

### 下载但不安装软件包

只需要用下面的命令：

    # pacman -Sp packages | aria2c -i -

`pacman -Sp` 在标准输出里打印软件包的 URL，而不是下载它们，然后用 `|` 管道传给下一个命令。最后，`aria2c -i -` 里的 `-i` 意味着下载文件的 URL 应该从文件里指定。但如果传入了 `-`，就从 stdin 里读取 URL。

### pacman XferCommand

参见 pacman (简体中文)/Tips and tricks (简体中文)#使用aria2.

### 改变 User Agent

一些站点会根据你的 User Agent 过滤请求，由于 aria2 并不出名，使用主流下载器或浏览器的 User Agent 可能会更好。只需要像这样使用 `-U` 选项：

    $ aria2c -UWget http://some-url-to-download/file.xyz

你可以任意指定 User Agent，比如 -UMozilla/5.0 等。

### 在 makepkg 中使用 aria2

你可以使用 aria2 代替 curl 来下载源文件，只需要像下面一样更改 `DLAGENTS` 变量：

    /etc/makepkg.conf

    [...]
    DLAGENTS=('ftp::/usr/bin/aria2c -UWget -s4 %u -o %o'
              'http::/usr/bin/aria2c -UWget -s4 %u -o %o'
              'https::/usr/bin/aria2c -UWget -s4 %u -o %o'
              'rsync::/usr/bin/rsync --no-motd -z %u %o'
              'scp::/usr/bin/scp -C %u %o')
    [...]

注意： 用 `-UWget` 选项改变 user agent 为 Wget，可以防止下载文件时，站点根据不同的 user agent 提供不同的响应。由于 aria2 不是著名的下载器，可能会被站点识别为浏览器而不是下载器，所以使用 Wget 的 user agent 可以在大多数情况下解决问题。

### 作为守护进程使用 aria2

要使用 aria2 作为守护进程，你可以 写一个systemd用户单元。比如：

    ~/.config/systemd/user/aria2cd.service

    [Unit]
    Description=aria2 Daemon

    [Service]
    Type=simple
    ExecStart=/usr/bin/aria2c --conf-path=/path/to/conf

    [Install]
    WantedBy=default.target

#示例 aria2.daemon 展示了配置文件示例。

### 使用 aria2 做种

要做种下载好的种子，使用 `--check-integrity` 选项：

    $ aria2c --check-integrity=true --seed-ratio=0.0 --dir="/path/to/iso" "/path/to/torrent/archlinux-2020.03.01-x86_64.iso.torrent"

指定 `--seed-ratio=0.0` 选项可以永久做种。

## 另请参见

- aria2 手册 - 官方网站
- aria2 用例 - 官方网站

Categories:

- Download utilities (简体中文)
- BitTorrent (简体中文)