Aria2C
轻量级的多协议和多源命令行下载工具
软件包包名:aria2c
发行商: openSUSE
开发者: tatsuhiro-t 和社区贡献者
许可证: GPL-v2, OpenSSL License
网站: https://github.com/aria2/aria2
目录
简介
aria2 是一个轻量级的多协议和多源命令行下载实用程序。它支持 HTTP/HTTPS、FTP、SFTP、BitTorrent 和 Metalink。aria2 可以通过内置的 JSON-RPC 和 XML-RPC 接口进行操作。
安装
sudo zypper in aria2
快速使用
查看用户手册:
man aria2c aria2c -h
从特定的网络地址下载东西,例如(将 openSUSE tumbleweed 网络镜像文件下载到用户的 ~/桌面
目录或用户目录):
aria2c --dir=~/桌面 https://download.opensuse.org/tumbleweed/iso/openSUSE-Tumbleweed-NET-x86_64-Current.iso aria2c https://download.opensuse.org/tumbleweed/iso/openSUSE-Tumbleweed-NET-x86_64-Current.iso
按 CTRL + C 可以终止当前的下载进程,或者你打开任务管理器,找到并杀死 aria2 的相关进程。
应用示例:将 aria2 作为常驻服务进行部署
aria2 对于系统资源的占用很低,功能丰富,适合作为一个常驻的后台服务以便需要时快速调用。
准备
在根据上文安装好 aria2 后,请在 ~/.config/aria2
目录新建下列纯文本文档:
aria2.conf aria2.log aria2.session start-aria2.sh aria2.service
aria2.conf 样例
# 文件的保存路径(可使用绝对路径或相对路径), 默认: 当前启动位置 # 你可以将其修改为其他文件夹 dir=/home/$USER/Downloads/Aria2 # 日志文件保存目录 log=/home/$USER/.config/aria2/aria2.log # 启用磁盘缓存, 0 为禁用缓存, 需 1.16 以上版本, 默认:16M disk-cache=50M # 文件预分配方式, 能有效降低磁盘碎片, 默认: prealloc # 预分配所需时间: none < falloc ? trunc < prealloc # falloc 和 trunc 则需要文件系统和内核支持, # NTFS 建议使用 falloc, EXT3/4 建议 trunc, MAC 下需要注释此项 #file-allocation=falloc # 断点续传 continue=true ## 下载连接相关 ## # 最大同时下载任务数, 运行时可修改, 默认:5 #max-concurrent-downloads=5 # 同一服务器连接数, 添加时可指定, 默认:1 max-connection-per-server=16 # 最小文件分片大小, 添加时可指定, 取值范围1M -1024M, 默认:20M # 假定 size=10M, 文件为 20MiB 则使用两个来源下载; 文件为 15MiB 则使用一个来源下载 min-split-size=20M # 单个任务最大线程数, 添加时可指定, 默认:5 split=32 # 整体下载速度限制, 运行时可修改, 默认:0 #max-overall-download-limit=0 # 单个任务下载速度限制, 默认:0 #max-download-limit=0 # 整体上传速度限制, 运行时可修改, 默认:0 #max-overall-upload-limit=0 # 单个任务上传速度限制, 默认:0 #max-upload-limit=0 # 禁用IPv6, 默认:false #disable-ipv6=true # 连接超时时间, 默认:60 #timeout=60 # 最大重试次数, 设置为 0 表示不限制重试次数, 默认:5 #max-tries=5 # 设置重试等待的秒数, 默认:0 #retry-wait=0 ## 进度保存相关 ## # 从会话文件中读取下载任务 input-file=/home/$USER/.config/aria2/aria2.session # 在 aria2 退出时保存`错误/未完成`的下载任务到会话文件 save-session=/home/$USER/.config/aria2/aria2.session # 定时保存会话, 0 为退出时才保存, 需 1.16.1 以上版本, 默认:0 save-session-interval=120 ## RPC相关设置 ## # 启用 RPC, 默认:false enable-rpc=true # 允许所有来源, 默认:false rpc-allow-origin-all=true # 允许非外部访问, 默认:false #rpc-listen-all=true # 事件轮询方式, 取值:[epoll, kqueue, port, poll, select], 不同系统默认值不同 #event-poll=select # RPC监听端口, 端口被占用时可以修改, 默认:6800 #rpc-listen-port=6800 # 设置的 RPC 授权令牌, v1.18.4 新增功能, 取代 --rpc-user 和 --rpc-passwd 选项 #在此处设置你的令牌 rpc-secret=mytoken # 是否启用 RPC 服务的 SSL/TLS 加密, # 启用加密后 RPC 服务需要使用 https 或者 wss 协议连接 #rpc-secure=true # 在 RPC 服务中启用 SSL/TLS 加密时的证书文件, # 使用 PEM 格式时,您必须通过 --rpc-private-key 指定私钥 #rpc-certificate=/path/to/certificate.pem # 在 RPC 服务中启用 SSL/TLS 加密时的私钥文件 #rpc-private-key=/path/to/certificate.key
start-aria2.sh 样例
创建启动脚本并赋予可执行权限:
#!/bin/sh aria2c --conf-path=/home/$USER/.config/aria2/aria2.conf
此时,你可以在终端中启动此脚本:
./start-aria2.sh
关闭此终端窗口会终止正在运行的 aria2c。
AriaNG
要便捷地使用 Aria2,你还需要一个图形化前端。这里以 AriaNG 为例。
将下载完毕的 AriaNg-*-AllInOne.zip
(推荐使用 AllInOne 是为了减少小文件的数量)解压后,放到与配置文件同一个文件夹下。再点击 HTML 文件即可启动 AriaNg。
此时,保持 aria2 运行,然后点击 AriaNG 设置 -> RPC(localhost:6800),填入 aria2.conf 中已经设置的 Aria2 RPC 密钥,AriaNg 会自动重载并链接 aria2。
开机启动
在 KDE 桌面的 系统设置 > 开机与关机 > 自动启动 中,添加 start-aria2.sh 即可。
或者,你可以在 ~/.config/autostart
新建一个 aria2-start.desktop
文件文件,并写入如下内容:
[Desktop Entry] Exec=/home/poplar/.config/aria2/start-aria2.sh Icon= Name=start-aria2.sh Path= Terminal=False Type=Application
与 systemd 集成
如果你希望使用 systemd 统一管理服务,那么你需要在 aria2.service 文件中写入:
[Unit] Description=Start aria2 daemon After=multi-user.target [Service] ExecStart=/usr/bin/aria2c --conf-path=/home/$USER/.config/aria2/aria2.conf Type=simple WorkingDirectory=/home/$USER/.config/aria2 [Install] WantedBy=multi-user.target
然后将 aria2.service 文件拷贝到 /etc/systemd/system 目录,然后运行下列命令重载服务:
sudo systemctl daemon-reload
然后启动 aria2 服务并设置为开机自启动:
sudo systemctl enable aria2 --now
清理日志文件
aria2 运行一段时间后,你需要清理日志文件(~/.config/aria2/aria2.log)。清理时,请先停止 aria2 进程。
如果你使用 systemctl 管理 aria2 服务,那么下面有一个 shell 可用于清理日志文件(请将这个 aria2-clean
可执行文件放置到 $PATH
目录中):
#!/bin/sh #本脚本用于清理 aria2 日志文件 printf 'Do you want to clear the log files? (y/n)? ' read answer if [ "$answer" != "${answer#[Yy]}" ] ;then ls -lh ~/.config/aria2/aria2.log #读取文件大小 sudo systemctl status aria2 | grep "Active" #查询状态 sudo systemctl stop aria2 #关闭服务 rm ~/.config/aria2/aria2.log; touch ~/.config/aria2/aria2.log echo "Logs cleaned" #清理日志文件 sudo systemctl restart aria2 #重启服务 sudo systemctl status aria2 | grep "Active" ls -lh ~/.config/aria2/aria2.log #查询状态 else ls -lh ~/.config/aria2/aria2.log #打印日志文件大小 printf 'Do you want to read the aria2 service status? (y/n)? ' read answer if [ "$answer" != "${answer#[Yy]}" ] ;then sudo systemctl status aria2 #查询状态 else exit fi fi
文档
前端
- GUI for Aria2
- Motrix - 基于 aria2 ,轻便,优雅的全功能下载工具
- uGet - GTK3 的 Curl 与 Aria2 前端