美文网首页
aria2 使用简介

aria2 使用简介

作者: Whyn | 来源:发表于2019-10-01 22:26 被阅读0次

    前言

    aria2 is a lightweight multi-protocol & multi-source, cross platform download utility operated in command-line. It supports HTTP/HTTPS, FTP, SFTP, BitTorrent and Metalink.

    aria2 是一款使用 C++ 编写的轻量级跨平台命令行下载工具,支持 HTTP/HTTPS, FTP, SFTP, BitTorrent 和 Metalink 等多种协议。

    特点

    aria2 具备很多功能特性,这里只简单罗列一些本人认为很有用的:

    • 命令行工具
    • 支持多协议:HTTP(S)/FTP/SFTP/BitTorrent/Metalink
    • 支持 HTTP 认证,支持 HTTP 代理,Cookie,自定义头部···
    • 上传/下载速度限制
    • 支持 JSON-RPC/XML-RPC 轻量级远程调用接口
      ······

    安装

    aria2 支持跨平台,这里主要介绍在 Windows 平台上的安装与使用。

    • 安装:具体步骤如下:
      1)下载主程序(aria2c.exe):在 releases 下载合适版本,将其中的主程序 aria2c.exe 拷贝到 D:\aria2 (该路径自主决定)中。
      2)配置环境变量:将 aria2c.exe 配置到系统环境变量,方便命令行使用:控制台输入 systemdm.cpl,选择 Advanced -> Environment Variables,将 D:\aria2 配置到环境变量即可。

    到此,aria2 的安装就完成了,此时我们就可以直接在命令行下运行 aria2 进行下载了。

    # 下载一张图片,此时下载路径为当前命令执行路径
    aria2c "http://pic16.nipic.com/20111006/6239936_092702973000_2.jpg"
    

    常用命令选项

    aria2 是一个命令行下载工具,其格式为:

    aria2c [<OPTIONS>] [<URI>|<MAGNET>|<TORRENT_FILE>|<METALINK_FILE>] …
    

    可以看到其提供了很多命令行选项(OPTIONS),下面介绍一些常用的选项:

    • 基础选项

    1)-d,--dir=<DIR>:下载路径(默认为当前路径)
    示例:下载图片到 D 盘根目录

    # 下载到当前目录
    aria2c http://pic39.nipic.com/20140321/18063302_210604412116_2.jpg -d .
    # 下载到 D 盘
    aria2c http://pic39.nipic.com/20140321/18063302_210604412116_2.jpg --dir="D:/"
    

    2)-i,--input-file=<FILE>:从文件读取要下载的 URIs。可以将要下载的多个 URI 写入到一个文件中,每个 URI 独占一行,然后使用该选项进行下载。
    :官方文档说 URI 之间使用空格进行隔离,当在本人 Win10 系统上,实验失败,只有换行才能成功。

    3)-l,--log<LOG>:写入到指定日志文件。如果指定了-,日志会被输出到stdout。如果未指定或使用空字符串"",则不产生日志。
    示例:

    # 下载文件,并输出日志到当前控制台
    aria2c -l - "http://pic16.nipic.com/20111006/6239936_092702973000_2.jpg"
    

    4)-j,--max-concurrent-downloads=<N>:设置下载并发数。默认为 5。
    示例:同时下载两个文件

    # 文件 downUris.txt 记录要下载的两个文件 URL
    http://pic16.nipic.com/20111006/6239936_092702973000_2.jpg 
    http://pic39.nipic.com/20140321/18063302_210604412116_2.jpg 
    
    # 进行下载,设置并发数为 2
    aria2c -j 2 -i downUris.txt
    

    5)-c,--continue [true|false]:断点续传。当前该选项只支持 HTTP(S)/FTP。

    6)-h,--help[=<TAG>|<KEYWORD>]:查看帮助信息。帮助信息按标签进行分类。标签以#开头,aria2 提供的标签有:#basic#advanced#http#https#ftp#metalink#bittorrent#cookie#hook#file#rpc#checksum#experimental#deprecated#help#all。默认使用#basic标签。如果未指定标签,则打印出包含该参数名称的选项内容。
    示例:

    # 查询 http 标签选项
    aria2c --help=#http
    # 查询包含 http 名称的选项
    aria2c --help=http
    
    • HTTP/FTP/SFTP 选项

    1)-m,--max-tries=<N>:失败重试次数。默认值为:5。

    2)--retry-wait=<SEC>:失败重试间隔时间(单位:秒),默认值为:0。

    3)-o,--out=<FILE>:命名下载文件。下载文件默认名称为--dir最后的相对路径名,当使用--force-sequential时,该选项无效。

    4)-x, --max-connection-per-server=<NUM>:设置每个下载最大的连接数。默认情况下,对一个下载,只有一个连接到服务器,可通过该选项增大连接数,以加快下载速度。
    示例:

    aria2c -x2 http://pic39.nipic.com/20140321/18063302_210604412116_2.jpg
    
    • HTTP 专有选项

    1)--header=<HEADER>:设置请求头。
    示例:

    aria2c --header="X-A: b78" --header="X-B: 9J1" "http://host/file"
    

    2)--save-cookie=<FILE>:保存 cookies 到文件中。

    3)--load-cookies=<FILE>:加载 cookies。

    • 高级选项

    1)--auto-file-renaming [true|false]:自动重命名已存在文件。当进行 HTTP(S)/FTP 下载时,如果存在同名文件,则新文件以 "文件名.{num}.后缀" 格式进行命名,num会自动递增,其范围为1..9999。该选项默认值为:true

    2)--conf-path=<PATH>:指定配置文件。默认配置文件为:$HOME/.aria2/aria2.conf,如果不存在,则为:$XDG_CONFIG_HOME/aria2/aria2.conf

    3)-D,--daemon [true|false]:设置以守护进程运行,此时当前工作目录会更改为/,且标准输入,标准输出和标准错误都会被重定向到/dev/null。该选项默认值为:false

    4)--max-download-limit=<SPEED>:设置最大下载速度。0表示无限制。可以通过在数字后追加KM表示千字节或兆字节。该选项默认值为:0

    5)-Z,--force-sequential [true|false]: 按命令行指定顺序下载多个文件,针对每个 URI 都会开启一个新的会话进行下载。
    示例:下载两个文件

    aria2c -Z http://pic16.nipic.com/20111006/6239936_092702973000_2.jpg http://pic39. nipic.com/20140321/18063302_210604412116_2.jpg
    

    6)-P,--parameterized-uri [true|false]:支持参数化 URI。当要下载的多个文件 URI 存在一定关系或规律时,可通过该选项构建这种关系,比如:可以参数化下载块:http://{sv1,sv2,sv3}/foo.iso,同样,也可以指定数字序列加步进:http://host/image[000-100:2].img。如果所有的 URI 都不是指定同一个文件,则需要加上-Z选项。该选项默认值为:false

    其余更多选项,请参考:options

    配置文件

    aria2 提供了很多的命令选项,但有些选项其实不经常变,对于这些选项的配置,aria2 提供了读取配置文件的功能--conf-path=<PATH>,我们可将这些不常更改,但是又想自定义的选项配置到一个默认配置文件中,然后以后每次启动 aria2 时,都读取该配置文件。

    下面介绍下 aria2 配置文件环境搭建:

    1. D:\aria2 目录(目录自主决定)中,创建以下 3 个文件:
      aria2.log:日志文件
      aria2.session:下载进度缓存
      aria2.conf:配置文件

    2. 配置 aria2:打开 aria2.conf 文件,输入以下内容:

    ## 下载设置 ##
    ## ------------
    
    # 断点续传
    continue=true
    # 最大同时下载任务数, 运行时可修改, 默认:5
    max-concurrent-downloads=5
    # 单个任务最大线程数, 添加时可指定, 默认:5
    split=16
    # 最小文件分片大小, 添加时可指定, 取值范围1M -1024M, 默认:20M
    # 假定size=10M, 文件为20MiB 则使用两个来源下载; 文件为15MiB 则使用一个来源下载
    min-split-size=1M
    # 同一服务器连接数, 添加时可指定, 默认:1
    max-connection-per-server=16
    # 断开速度过慢的连接
    lowest-speed-limit=0
    # 整体下载速度限制, 运行时可修改, 默认: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
    # 当服务器返回503错误时, aria2会尝试重连
    # 尝试重连次数, 0代表无限, 默认:5
    max-tries=0
    # 重连冷却, 默认:0
    #retry-wait=0
    
    ## 进度保存相关 ##
    ##--------------------
    
    # 从会话文件中读取下载任务
    # 开启该参数后aria2将只接受session中的任务, 这意味着aria2一旦使用conf后将不再接受来自终端的任务, 所以该条只需要在启动rpc时加上就可以了
    # 在Aria2退出时保存`错误/未完成`的下载任务到会话文件
    save-session=D:\aria2\aria2.session
    # 定时保存会话, 0为退出时才保存, 需1.16.1以上版本, 默认:0
    save-session-interval=60
    # 强制保存会话, 即使任务已经完成, 默认:false
    # 较新的版本开启后会在任务完成后依然保留.aria2文件
    #force-save=false
    
    
    ## RPC相关设置 ##
    ##---------------
    
    # 启用RPC, 默认:false(rpc 不启动则只能使用命令行下载)
    enable-rpc=true
    # 允许所有来源, 默认:false
    rpc-allow-origin-all=true
    # 允许非外部访问, 默认:false
    rpc-listen-all=true
    # 事件轮询方式, 取值:[epoll, kqueue, port, poll, select], 不同系统默认值不同
    #event-poll=kqueue
    # RPC监听端口, 端口被占用时可以修改, 默认:6800
    #rpc-listen-port=6800
    # 设置的RPC授权令牌, v1.18.4新增功能, 取代 --rpc-user 和 --rpc-passwd 选项
    #rpc-secret=www.niuyoucai.org
    # 设置的RPC访问用户名, 此选项新版已废弃, 建议改用 --rpc-secret 选项
    #rpc-user=
    # 设置的RPC访问密码, 此选项新版已废弃, 建议改用 --rpc-secret 选项
    #rpc-passwd=
    
    ## BT/PT下载相关 ##
    ##------------------
    
    # 当下载的是一个种子(以.torrent结尾)时, 自动开始BT任务, 默认:true
    follow-torrent=true
    # BT监听端口, 当端口被屏蔽时使用, 默认:6881-6999
    #listen-port=51413
    # 单个种子最大连接数, 默认:55
    #bt-max-peers=55
    # 打开DHT功能, PT需要禁用, 默认:true
    enable-dht=true
    # 打开IPv6 DHT功能, PT需要禁用, 默认:true
    #enable-dht6=false
    # DHT网络监听端口, 默认:6881-6999
    #dht-listen-port=6881-6999
    # 本地节点查找, PT需要禁用, 默认:false
    #bt-enable-lpd=true
    # 种子交换, PT需要禁用, 默认:true
    enable-peer-exchange=true
    # 每个种子限速, 对少种的PT很有用, 默认:50K
    #bt-request-peer-speed-limit=50K
    # 客户端伪装, PT需要
    peer-id-prefix=-TR2770-
    user-agent=Transmission/2.77
    # 当种子的分享率达到这个数时, 自动停止做种, 0为一直做种, 默认:1.0
    seed-ratio=0
    # BT校验相关, 默认:true
    #bt-hash-check-seed=true
    # 继续之前的BT任务时, 无需再次校验, 默认:false
    bt-seed-unverified=true
    # 保存磁力链接元数据为种子文件(.torrent文件), 默认:false
    bt-save-metadata=true
    # 强制加密, 防迅雷必备
    #bt-require-crypto=true
    
    ## 磁盘相关 ##
    ##-------------
    
    # 文件保存路径, 默认为当前启动位置
    dir=F:/thunder
    # 日志文件
    log=D:\aria2\aria2.log
    #另一种Linux文件缓存方式, 使用前确保您使用的内核支持此选项, 需要1.15及以上版本(?)
    enable-mmap=true
    # 文件预分配方式, 能有效降低磁盘碎片, 默认:prealloc
    # 预分配所需时间: 快none < trunc < falloc < prealloc慢
    # falloc仅仅比trunc慢0.06s
    # 磁盘碎片: 无falloc = prealloc < trunc = none有
    # 推荐优先级: 高falloc --> prealloc --> trunc -->none低
    # EXT4, btrfs, xfs, NTFS等新型文件系统建议使用falloc, falloc(fallocate)在这些文件系统上可以瞬间创建完整的空文件
    # trunc(ftruncate) 同样是是瞬间创建文件, 但是与falloc的区别是创建出的空文件不占用实际磁盘空间
    # prealloc 传统的创建完整的空文件, aria2会一直等待直到分配结束, 也就是说如果是在HHD上下载10G文件,那么你的aria2将会一直等待你的硬盘持续满载工作直到10G文件创建完成后才会开始下载
    # none将不会预分配, 磁盘碎片程度受下面的disk-cache影响, trunc too
    # 请勿在传统文件系统如:EXT3, FAT32上使用falloc, 它的实际效果将与prealloc相同
    # MacOS建议使用prealloc, 因为它不支持falloc, 也不支持trunc, but可以尝试用brew安装truncate以支持trunc(ftruncate)
    # 事实上我有些不能理解trunc在aria2中的角色, 它与none几乎没有区别, 也就是说:太鸡肋了
    file-allocation=falloc
    # 启用磁盘缓存, 0为禁用缓存, 需1.16以上版本, 默认:16M
    disk-cache=64M
    

    其中:save-session/dir等选项自主选择配置,如果下载 BT 没速度,可以添加 BT Tracker 服务器,比如:

    #BT下载 tracker
    bt-tracker=udp://tracker.coppersurfer.tk:6969/announce,udp://tracker.leechers-paradise.org:6969/announce,udp://9.rarbg.to:2710/announce
    

    更多配置选项,请参考:Aria2 Manual

    到这里,我们就完成了 aria2 常用选项配置到配置文件中了,此时 aria2 就可以直接使用该配置文件进行下载了。

    # 以配置文件启动下载,此时下载路径等均由配置文件配置
    aria2c --conf-path="D:\aria2\aria2.conf" "http://pic16.nipic.com/20111006/6239936_092702973000_2.jpg" 
    

    图形界面

    因为 aria2 是命令行工具,不具备图形化界面,因此下载都是使用命令行操作。

    命令行赋予了 aria2 更强大的操作,但是大多数时候我们都只需下载文件,并不需要其他复杂操作,此时命令行就稍显复杂了。

    幸运的是,aria2 提供了 RPC模式,使我们可以远程与它进行交互(远程调用)。因此,很多的 aria2 图形界面客户端就应运而生。

    这里介绍几个好用的 Web 客户端:

    为了简单起见,我们这里直接使用在线网页 aria2c.com 进行简单介绍:

    1. 打开 aria2c.com 前,先开启 aria2 本地 RPC模式
    aria2c --enable-rpc --rpc-listen-all=true --rpc-allow-origin-all -c -D
    

    或者直接使用我们上面的配置文件启动,因此在配置文件里面我们已配置启动 RPC模式

    aria2c --conf-path=D:\aria2\aria2.conf -D
    
    1. 打开 aria2c.com,找到右上角设置,进行配置:

      JSON-RPC
    2. 添加一个下载任务,点击执行,查看是否下载成功:

    可以看到,我们已经成功下载了图片。

    相关文章

      网友评论

          本文标题:aria2 使用简介

          本文链接:https://www.haomeiwen.com/subject/tcgvuctx.html