Windows Aria2 配置与后台常驻:多线程下载、RPC 与浏览器接管
Windows 上折腾 Aria2 这件事我前后装过七八次从最早的绿色包解压即用到后来认真做目录规划、写配置文件、挂后台常驻、配浏览器接管踩过的坑基本能凑成一本小册子。Aria2 是一款轻量级的命令行多协议下载工具支持 HTTP/HTTPS、FTP、SFTP 以及 BitTorrent 协议天生就是多线程分片下载的架构配合 JSON-RPC 接口还能被浏览器扩展和自建面板远程调度。它最大的价值在于把下载这件事从图形界面点一下变成一个常驻后台的服务你丢链接进去就行剩下的分片、重试、断点续传、限速它自己扛。这篇内容适合两类人看——一类是刚从迅雷、IDM 这类工具转过来想让下载彻底自动化的人另一类是已经在用 Aria2但每次升级换机都得重新翻文档、配置文件照着抄还老报错的人。下面我把安装、目录规划、配置逐项拆解、后台常驻、前端联动和排查思路完整走一遍参数为什么这么填我也会讲清楚。1. 先想清楚为什么要在 Windows 上单独跑 Aria21.1 Aria2 真正解决的是什么问题很多人第一次接触 Aria2 是被多线程满速这四个字吸引的但用久了会发现速度只是表面收益真正的价值在于它把下载变成了一个有状态的服务。传统的图形化下载器你关掉窗口任务就停了而 Aria2 跑在后台进程活着就一直在干活你今天丢进去一个 20G 的包明天早上打开电脑它已经躺在硬盘里了。这个差异听起来小实际体验差别很大尤其是下载大文件、批量文件、或者你在做别的事情不希望下载器抢带宽的时候。第二个价值是接口化。Aria2 暴露的是标准的 JSON-RPC 2.0 接口这意味着任何能发 HTTP 请求的东西都能控制它——浏览器扩展、自己写的脚本、手机上的面板、甚至一条 curl 命令。你可以在 PowerShell 里写个循环把一批链接依次丢进去也可以做个快捷指令手机上一按家里的电脑就开始下载。这种可编程性是图形化工具很难给你的。第三个价值是可控。连接数、单服务器并发、分片阈值、磁盘缓存、全局限速、上传限速全部可以通过配置项精确控制。你在写代码或者开会的时候把max-overall-download-limit设成 2M它就不会偷偷占满你的带宽晚上再放开一晚上跑完。这种细粒度的控制只有配置文件能给你。注意Aria2 支持 BitTorrent 协议但请务必确认你所下载内容的版权与来源合规工具本身中立使用方式才是关键。1.2 和常见下载方式的横向对比我在不同场景下会切换不同工具没必要强行统一。下面这张表是我自己用下来比较真实的感受你可以对照自己的需求选。方案多线程分片后台常驻可编程接口资源占用适合场景Aria2支持参数可调支持进程级JSON-RPC 完整开放极低几十 MB大文件、批量、自动化浏览器自带下载基本单线程不支持无随浏览器几十 MB 的小文件传统图形下载器支持部分支持基本没有中等到偏高临时下载、不想配置命令行 curl/wget单线程为主支持脚本调用极低单文件、脚本内嵌从这张表能看出来Aria2 的定位非常明确它是给愿意花二十分钟配置一次、然后长期省心的人准备的。如果你一年下载不了几次大文件那确实没必要折腾但如果你每天都要和几十 G 的镜像、数据集、素材包打交道那这套配置一次性投入的回报率非常高。还有一个细节值得说Aria2 的安装包只有几 MB解压出来就是一个aria2c.exe加几个证书文件没有注册表污染没有后台服务安装卸载就是删文件夹。这种绿色特性对系统洁癖患者非常友好也方便你把它放进 U 盘随身携带。1.3 常见的错误预期先给你打个预防针新手最容易踩的认知坑有三个我先说清楚省得你后面怀疑人生。第一个是装上就能跑满带宽。实际上 Aria2 能不能跑满取决于源站是否支持多连接、源站有没有单 IP 限速、你的磁盘写入速度、以及路由器的转发能力。有些站点就给你 1M 的速度你用 Aria2 也还是 1M多线程不是魔法。第二个是配置项越多越好。网上流传的配置文件经常有几十上百行很多参数是从 Linux 环境抄过来的在 Windows 上要么不生效要么反而添乱。我的建议是先用一份最小可用配置跑通再按需往上加每加一项都知道它干什么。第三个是装完就不管了。Aria2 是常驻进程它会写日志、写会话文件、占磁盘缓存。你不规划目录、不设置日志轮转跑几个月之后可能发现日志文件几个 G。这部分后面我会专门讲目录规划。2. 下载、落地与目录规划:安装这一步就要做对2.1 选哪个包:官方构建包与整合包的区别Aria2 的官方发布在开源仓库里Windows 对应的产物是一个 zip 压缩包解压后核心文件就是aria2c.exe通常还会附带ca-certificates.crt这样的证书文件用来校验 HTTPS 站点的证书链。我强烈建议从官方渠道获取理由是版本可控、没有夹带、哈希可校验。第三方 GUI 整合包虽然双击就能用但你很难知道它把配置写到哪、改了哪些默认值出问题时排查成本反而更高。下载完之后养成校验的习惯。Windows 自带的certutil就能算哈希certutil -hashfile aria2-1.37.0-win-64bit-build1.zip SHA256算出来的值和发布页上标注的一致再解压。这一步看着多余但下载工具本身如果来源不可信那可太讽刺了。版本选择上Windows 平台拿win-64bit的构建就行32 位系统现在基本绝迹了。解压之后先别急着配置打开命令行验证一下aria2c -v能打印出版本号、编译时间和启用的特性列表说明可执行文件本身没问题。如果提示不是内部或外部命令那是路径没配好不是文件坏了。2.2 目录结构:别把东西全堆在解压目录里这是我最想强调的一点。很多人解压到D:\aria2就直接开始跑结果配置文件、会话文件、日志、下载产物全挤在一个文件夹里时间一长自己都分不清哪个能删。我现在固定用这样的结构D:\aria2\ ├── bin\ # 程序本体 │ ├── aria2c.exe │ └── ca-certificates.crt ├── conf\ │ └── aria2.conf # 主配置 ├── session\ │ └── aria2.session # 会话文件断点续传靠它 ├── log\ │ └── aria2.log # 运行日志 └── download\ # 下载产物落地区 ├── temp\ # 未完成的临时文件 └── done\ # 完成后的归档这么分的好处很实际备份的时候只要拷conf和session两个目录程序本体随时可以从官方重新拉清理的时候直接删log和temp不会误删正在下的东西session文件单独放路径短、没有中文、没有空格减少解析出错的可能。提示:整个 Aria2 的工作路径我建议全部使用英文和数字不要出现中文、空格和特殊符号。这不是玄学命令行程序在处理带空格路径时配置文件的解析、任务计划程序的参数传递都容易出岔子能避就避。2.3 环境变量:让命令行随处可用把D:\aria2\bin加进系统 PATH后续在任何目录下都能直接敲aria2c。操作路径是此电脑右键属性、高级系统设置、环境变量、在系统变量里找到 Path、编辑、新建一行填D:\aria2\bin、一路确定。改完要重新开一个命令行窗口才生效这点很多人会忘然后在旧窗口里反复敲命令怀疑人生。验证方式是新开一个 PowerShell 或者 CMD敲where aria2c返回路径就说明配置成功了。这一步和配置 Git、Python、JDK 环境变量是一个套路Windows 上的环境变量配置逻辑是通用的学会了这一个其他工具的 PATH 配置你也能照做。顺便说一句不要把aria2c.exe直接丢进C:\Windows\System32。有些人图省事这么干短期能用但升级版本的时候你会忘了自己扔过东西进去最后机器上有两个版本互相打架排查起来非常痛苦。2.4 第一次裸奔运行:确认程序本身健康在写配置之前先用手动参数跑一次最简单的下载确认网络和程序都是好的aria2c -d D:\aria2\download\done -x 4 -s 4 https://example.com/somefile.zip-d指定下载目录-x是单服务器最大连接数-s是分片数。能看到进度条滚动、文件正常落地说明基础链路通了。这一步的意义在于把程序问题和配置问题分开——如果裸跑就失败那你后面配得再漂亮也没用。裸跑成功之后再开始写配置文件这样出问题时你就知道大概是配置的问题排查范围直接缩小一半。3. aria2.conf 逐项拆解:每一行都要知道为什么3.1 基础路径与会话持久化配置文件我习惯分成几个逻辑块加上注释隔半年回头看也能秒懂。先看路径和会话这块# 基础路径 dirD:\aria2\download\done input-file save-sessionD:\aria2\session\aria2.session save-session-interval60 force-savetrue # 日志 logD:\aria2\log\aria2.log log-levelwarndir是默认落盘目录任务里带了-d参数时会覆盖它。save-session指向会话文件Aria2 靠它记住哪些任务下了一半、分片进度到哪了重启后能接着下。save-session-interval60表示每 60 秒落一次盘默认值偏保守设成 60 秒能在异常断电时少丢一点进度。force-savetrue是个容易被忽略但很有用的项。默认情况下如果所有任务都完成了会话文件会被清空开启这个之后即使任务完成也会保留会话记录配合一些前端面板就能看到历史任务的完整性。代价是会话文件会慢慢变大但相对于硬盘容量来说可以忽略。log-level我建议长期用warn只在排查问题时临时改成info或debug。原因很直白debug 级别的日志在大文件下载时体量惊人一个晚上能写到几百 MBSSD 的写入寿命不是无限的。3.2 并发与分片:多线程到底怎么起作用这块参数最多人关心也最多人抄错。先给一份我实际在用的# 并发与分片 continuetrue max-concurrent-downloads5 max-connection-per-server16 split16 min-split-size1M max-tries5 retry-wait10 connect-timeout10 timeout60逐个解释。continuetrue开启断点续传这个是必开项没有理由关掉。max-concurrent-downloads5是同时进行的任务数注意这是任务数不是连接数设太大反而会因为磁盘随机写变多而拖慢整体速度。max-connection-per-server16是单个服务器允许的最大连接数Aria2 的上限就是 16。split16是分片数上限也受 16 这个上限约束。这两个参数配合min-split-size一起决定实际并发。这里的计算逻辑值得展开讲。假设你下载一个 100MB 的文件min-split-size1Msplit16那么理论上 100MB 除以 1MB 等于 100 个分片但split上限是 16所以实际切成 16 片每片约 6.25MB并发 16 个连接。如果你下载一个 10MB 的文件10MB 除以 1MB 是 10 个分片小于 16那就切 10 片。但如果你把min-split-size设成 20M10MB 的文件连一个分片都凑不齐就变成单连接下载了。所以调参的核心逻辑是min-split-size不能太大否则小文件享受不到多线程但也不能太小否则分片碎片化严重磁盘上到处是零散写入反而慢。1M 到 4M 是我测下来比较均衡的区间。如果你下载的普遍是几 GB 的大包可以设到 4M 甚至 8M。max-tries5和retry-wait10是重试策略失败后等 10 秒再试最多 5 次。对于不太稳定的源站可以把max-tries提到 10。connect-timeout和timeout分别控制连接超时和整体超时默认值在跨境访问时经常偏短timeout60是我比较常用的值。注意:split不是越大越好。我实测过一个场景把split拉到 16 但min-split-size只有 1M下载大量 5MB 左右的小文件时反而比单线程慢了两成原因就是分片开销和磁盘随机写抵消了收益。3.3 RPC 服务:远程控制的入口RPC 是 Aria2 的灵魂浏览器接管、面板管理全靠它# RPC enable-rpctrue rpc-listen-allfalse rpc-listen-port6800 rpc-secret换成你自己的长随机串 rpc-allow-origin-allfalseenable-rpctrue打开接口。rpc-listen-port6800是默认端口如果被占用可以换成 6801 之类但换完记得同步改前端配置。rpc-secret相当于密码所有 RPC 调用都要在参数里带上token:你的密码这是唯一一道防线请务必设成足够长的随机串不要用123456这种。rpc-listen-all和rpc-allow-origin-all这两个我特意都设成false这里要重点说一下原因。rpc-listen-alltrue会让 Aria2 监听所有网卡局域网内其他设备都能访问你的 RPC 端口。如果你的机器在公共网络环境或者局域网里有不可信的设备这就等于把下载器的控制权交出去了。设成false只监听本地回环本机的前端照常能用。rpc-allow-origin-all控制跨域访问。设成true的时候任何网页只要知道你的端口和密钥就能从浏览器里调用你的 RPC。更麻烦的是如果你没设rpc-secret那么任何网页都能无认证调用理论上一个恶意页面就能让你下载任意文件到任意目录。我的做法是本地自用的前端页面放到127.0.0.1的本地静态服务上然后把rpc-allow-origin-all开着但密钥设复杂用完就关。安全性和便利性之间自己权衡。调试 RPC 通不通用 PowerShell 一条命令就能测$body {jsonrpc:2.0,id:1,method:aria2.getVersion,params:[token:你的密码]} Invoke-RestMethod -Uri http://127.0.0.1:6800/jsonrpc -Method Post -Body $body -ContentType application/json正常会返回版本号、启用的特性列表。如果报连接被拒绝那是进程没起来或者端口不对如果返回错误码说未授权那是 token 写错了。这两类错误的排查方向完全不同先分清再动手。3.4 磁盘与文件处理:容易被忽略的性能开关# 磁盘与文件 file-allocationprealloc disk-cache64M auto-file-renamingtrue allow-overwritefalse content-disposition-default-utf8truefile-allocation有三个常用值none、prealloc、falloc。falloc在 Linux 上是零成本预分配但在 Windows 上通常需要提升权限涉及卷管理相关的系统权限普通权限下往往退化成prealloc甚至报错。所以我直接在 Windows 上用prealloc它会预先分配磁盘空间好处是能提前发现磁盘空间不足也减少文件碎片。如果你在下载超多小文件可以临时改成none速度会快一点代价是碎片多。disk-cache64M是内存写缓存把多个分片的写入聚合成更大的块再落盘能明显减少小文件随机写。内存充足的机器可以提到128M。这个值的收益在 SSD 上没那么明显在机械盘上效果显著。content-disposition-default-utf8true这一项我要单独拎出来说它是解决中文文件名乱码的关键。很多服务器在 HTTP 头里返回文件名时用的是非 UTF-8 编码Aria2 默认可能按 Latin-1 解析结果中文名全变成乱码。打开这个选项后它会优先按 UTF-8 处理能解决绝大部分乱码问题。注意是绝大部分不是全部具体原理和剩余情况的处理我在第 6 节讲。auto-file-renamingtrue让重名文件自动加序号allow-overwritefalse禁止覆盖已有文件。这两个搭配起来能避免你手滑把辛苦下了一晚上的文件覆盖掉。3.5 上传限速与其他补充项# 限速 max-overall-download-limit0 max-download-limit0 max-overall-upload-limit1K max-upload-limit00在 Aria2 里表示不限制。max-overall-download-limit是全局下载限速工作时段我会设成2M晚上设回0。注意单位写法2M表示 2MB/s写2m也可以但不要写成2MB会被解析失败。max-overall-upload-limit1K这个设置是有背景的如果你使用 BitTorrent 相关功能上传是协议要求的一部分完全禁止上传在某些场景下会影响可用性。设一个很小的值比如 1K是一个折中做法。如果你完全不使用这类功能这项设多少都无所谓。到这里一份完整可用的配置就有了。完整的配置大约四十行每一行你都能说出来它为什么在那里这比抄一份两百行的配置然后出事完全不知道从哪查要强得多。4. 让它开机就在后台跑:两种常驻方案实测4.1 方案一:任务计划程序做静默启动配置文件写好了但你不可能每次都手动开个命令行窗口跑起来。Windows 上最稳妥的常驻方案是任务计划程序。具体步骤打开任务计划程序创建任务不是基本任务要完整版。常规选项卡里填个名字勾选不管用户是否登录都要运行这一项是静默的关键。触发器选登录时或者启动时。操作选项卡里程序或脚本填D:\aria2\bin\aria2c.exe添加参数填--conf-pathD:\aria2\conf\aria2.conf最关键的是起始于这一栏填D:\aria2\bin。很多人漏掉它然后在配置文件里写了相对路径结果任务跑起来就报找不到文件。我的建议是配置文件里全部用绝对路径同时起始于也填上双保险。条件选项卡里把只有在计算机使用交流电源时才启动此任务取消勾选否则笔记本拔了电源任务就停了。设置选项卡里可以勾上如果任务失败按以下频率重新启动间隔 1 分钟最多 3 次这样偶发的启动失败能自愈。提示勾选不管用户是否登录都要运行时系统会要求你输入账户密码这是正常的。相比只在用户登录时运行这种方式不会有黑框闪出来是真正的后台进程。4.2 方案二:VBS 脚本隐藏窗口启动如果你不想动任务计划程序或者需要手动控制启停可以用一个 VBS 脚本包一层 start_aria2.vbs Set ws CreateObject(WScript.Shell) ws.Run D:\aria2\bin\aria2c.exe --conf-pathD:\aria2\conf\aria2.conf, 0, FalseRun的第二个参数0表示窗口隐藏第三个参数False表示不等待返回。双击这个 vbs 文件Aria2 就在后台跑起来了任务管理器里能看到进程但看不到窗口。缺点是双击脚本这个动作本身没法自动化所以通常还是配合启动文件夹或者任务计划来用。再配一个停止脚本方便维护 stop_aria2.vbs Set ws CreateObject(WScript.Shell) ws.Run cmd /c taskkill /f /im aria2c.exe, 0, False改配置之后必须先停再启因为 Aria2 是在启动时读一次配置运行期间改文件不会生效。这是新手常见困惑我明明改了配置怎么没效果答案就是没重启。4.3 怎么确认它真的在后台健康运行进程起来了不代表工作正常。三层验证一层比一层深入。第一层看进程任务管理器里应该有aria2c.exe或者命令行敲tasklist | findstr aria2c第二层看端口netstat -ano | findstr 6800应该能看到状态是LISTENING的记录。如果什么都没有说明 RPC 没起来回去检查enable-rpc和端口冲突。第三层看接口用 3.3 节那条 PowerShell 命令调getVersion能返回结果说明整条链路通了。再调一下aria2.getGlobalStat能看到当前下载速度、活动任务数这些运行时指标$body {jsonrpc:2.0,id:1,method:aria2.getGlobalStat,params:[token:你的密码]} Invoke-RestMethod -Uri http://127.0.0.1:6800/jsonrpc -Method Post -Body $body -ContentType application/json三层都过你就可以放心关掉窗口去干别的了。5. 前端联动:浏览器接管与自建控制台5.1 浏览器扩展的配置要点Aria2 本体没有图形界面日常使用需要配一个前端。浏览器扩展是最省事的方式市面上有若干开源扩展可以调用 Aria2 的 RPC 接口。配置时通常需要填三项RPC 地址http://127.0.0.1:6800/jsonrpc、密钥token:你的密码注意有些扩展要求带token:前缀有些不带试一下就知道、下载目录留空则用配置文件里的dir。配好之后右键链接选择用扩展下载任务就会直接进 Aria2。这里有个常见的配置误区扩展填的地址如果用了引号包裹或者多了斜杠会导致连接失败。地址就写http://127.0.0.1:6800/jsonrpc干干净净。还有一个细节如果你的浏览器开了某些隐私保护设置可能会拦截对本地地址的请求遇到连接超时先检查是不是被拦了把127.0.0.1加进例外列表。5.2 自己撸一个极简控制台不想装扩展的话自己写一个页面其实很快而且能完全按自己的习惯来。下面这个 HTML 文件直接扔到本地静态服务上就能用!DOCTYPE html html langzh-CN head meta charsetutf-8 title简易下载控制台/title /head body h3添加任务/h3 input iduri placeholder粘贴下载链接 stylewidth:520px button onclickadd()提交/button pre idout stylebackground:#f5f5f5;padding:12px/pre script const RPC http://127.0.0.1:6800/jsonrpc; const SECRET token:你的密码; async function call(method, params) { const body { jsonrpc: 2.0, id: Date.now().toString(), method: method, params: [SECRET].concat(params || []) }; const res await fetch(RPC, { method: POST, headers: {Content-Type: application/json}, body: JSON.stringify(body) }); return await res.json(); } async function add() { const uri document.getElementById(uri).value.trim(); if (!uri) return; const r await call(aria2.addUri, [[uri]]); document.getElementById(out).textContent JSON.stringify(r, null, 2); } (async () { const stat await call(aria2.getGlobalStat); document.getElementById(out).textContent 当前下载速度: stat.result.downloadSpeed B/s\n 活动任务数: stat.result.numActive; })(); /script /body /html这里必然遇到跨域问题。直接双击这个 HTML 文件打开页面的 Origin 是null请求会被 CORS 拦下控制台会报跨域错误。解决办法是把页面放到本地静态服务上比如用 Python 起一个cd D:\aria2\webui python -m http.server 8080然后访问http://127.0.0.1:8080。这样做还有个附带好处Origin 变成了明确的127.0.0.1:8080配合rpc-allow-origin-alltrue就能正常通信。用完记得把这一项关掉或者给rpc-secret设一个足够复杂的值。如果你愿意花点时间这个页面还能加任务列表、暂停、删除、限速切换aria2.tellActive、aria2.pause、aria2.remove、aria2.changeGlobalOption这些方法都是现成的。我自己的控制台上就加了几个常用按钮改限速不用去改配置文件了。6. 常见问题排查:我踩过的坑和对应解法6.1 启动类问题:窗口一闪而过、进程秒退现象双击aria2c.exe黑框一闪就没了。很多人以为程序坏了其实这是正常行为——它是个命令行程序没有参数没有配置时不知道干什么完成任务就退出了。真正的报错信息你看不到因为窗口关得太快。排查方法是在已有的命令行窗口里运行不要双击D:\aria2\bin\aria2c.exe --conf-pathD:\aria2\conf\aria2.conf这样错误信息会留在屏幕上。最常见的几条报错我整理成了表报错信息原因解决方式Failed to load configuration file路径不对或文件不存在检查 conf 路径用绝对路径确认文件编码Unrecognized option配置项拼写错误或不被此版本支持逐行注释排查对照版本对应的文档Failed to bind to port6800 端口被占用netstat -ano | findstr 6800找到占用进程换端口Unrecognized URI or unsupported protocol配置文件里有非法字符检查是否有多余的引号、分号、BOM 头提示:配置文件请存成 UTF-8 无 BOM 格式。用 Windows 记事本保存时它可能偷偷加上 BOMAria2 读到 BOM 会把第一行当成乱码注释进而导致第一条配置失效。用 VS Code 或者 Notepad 存编码选 UTF-8 而不是带 BOM 的 UTF-8。6.2 RPC 相关:接口连不上的三条排查线RPC 连不上先确认是哪一类。按顺序查这三条线基本能覆盖九成情况。第一条线进程在不在。tasklist里没有aria2c说明进程根本没起来去看 6.1 的启动排查。第二条线端口通不通。netstat -ano | findstr 6800没有LISTENING记录说明 RPC 没监听成功。这时候检查配置里enable-rpctrue有没有写对以及是不是被防火墙拦了。Windows 防火墙第一次运行程序时会弹窗询问如果你当时点了取消规则就被记成阻止了需要去防火墙的允许应用通过里手动勾上。第三条线密钥对不对。接口能通但返回未授权说明token:后面跟的字符串和配置里的rpc-secret不一致。这里有个容易错的地方有些前端工具要求密钥栏里必须自己带上token:前缀有些会自动帮你加重复加上就变成了token:token:xxx自然认证失败。两种都试一下。另外还有一个隐蔽问题rpc-listen-allfalse的情况下只有127.0.0.1能访问。如果你从局域网另一台机器去连会一直超时而你会以为是自己配错了。先确认访问来源再决定要不要放开监听。6.3 速度类问题:跑不满带宽怎么办速度慢的原因很多按可能性从高到低排源站限制是第一嫌疑。很多站点对单个 IP 有带宽限制你连接数开到 16 也没用因为服务器侧就给你那么多。验证方法是换个源站测同一个文件如果换源就快了那就是源的问题无解。连接数配置不当是第二嫌疑。检查max-connection-per-server和split是不是还是默认值 1 和 5默认值比较保守。把它们提到 8 到 16 之间试试。同时确认min-split-size没有设得过大。磁盘 IO 是第三嫌疑而且很容易被忽略。如果你用的是机械硬盘split开到 16 时会有 16 个位置同时写入磁头来回寻道速度反而掉下来。判断方法很简单看任务管理器里磁盘的活动时间是不是长时间 100%而网络占用却上不去。如果是把split降到 4 到 8同时把disk-cache提高一点让写入先在内存里聚合。还有一个可能系统层面的网络限速。有些网络管理软件或者节能设置会给网卡限速这种情况在其他下载工具上也会慢可以横向对比一下确认。6.4 文件名乱码的完整处理思路前面提到content-disposition-default-utf8true能解决大部分乱码但有两类情况它搞不定。一类是服务器压根没在响应头里给文件名Aria2 只能从 URL 里推导。如果 URL 本身经过了百分号编码而且是 GBK 编码的解出来就是乱码。这种基本只能手动改名没有通用解。另一类是文件系统层面的问题。Windows 的 NTFS 对某些字符有保留要求文件名里带了?*:|这些字符Aria2 会做替换处理替换后的名字可能就不太好认了。这个是正常的保护行为不要试图关掉。我的处理习惯是批量下载时统一用-o指定一个规范化的文件名或者在下载完成后用一个 PowerShell 脚本批量重命名靠 URL 里的关键字段来命名比依赖服务器的响应头靠谱。6.5 会话丢失与磁盘相关的坑有一次我下了一个 30G 的包下到 80% 的时候机器强制重启回来发现任务从头开始了。原因是save-session-interval设得太大而且没开force-save。这个坑我后来是这样填的save-session-interval30force-savetrue同时在任务计划里加一个事件触发——系统启动时自动拉起 Aria2 并加载会话文件。这样即使断电重启后也能接着下。另一个坑是磁盘写满。prealloc模式会提前占满空间如果配置的落地分区剩余空间不够任务会直接失败。好处是失败得早不会下到一半才发现。我习惯把落地目录放在空间充足的分区并且定期清理temp目录里的残留文件——有些任务被取消后临时分片文件不会自动删掉时间长了很占地方。磁盘缓存那块也有个细节disk-cache设太大配合大量并发任务内存占用会上升得很快。64M 到 128M 是安全的区间不建议超过 256M除非你的内存非常充裕且确实在跑大量任务。7. 长期维护:配置备份、升级与调优经验7.1 一份可以直接抄走的完整配置把前面所有内容整合成一份可以直接用的配置你只需要改路径和密钥# 路径 dirD:\aria2\download\done save-sessionD:\aria2\session\aria2.session save-session-interval30 force-savetrue logD:\aria2\log\aria2.log log-levelwarn # 下载行为 continuetrue max-concurrent-downloads5 max-connection-per-server16 split16 min-split-size1M max-tries5 retry-wait10 connect-timeout10 timeout60 # 磁盘 file-allocationprealloc disk-cache64M auto-file-renamingtrue allow-overwritefalse content-disposition-default-utf8true # RPC enable-rpctrue rpc-listen-allfalse rpc-listen-port6800 rpc-secret请替换成随机长串 rpc-allow-origin-allfalse # 限速 max-overall-download-limit0 max-download-limit0 max-overall-upload-limit1K这份配置我一台机器上跑了两年多除了偶尔调整限速基本没动过。核心逻辑就是并发别拉满、路径全绝对、日志留 warn、密钥要够复杂。7.2 升级时要注意的三件事Aria2 的升级很轻量替换aria2c.exe就完事但有三件事容易翻车。升级前先停进程。Windows 上正在运行的 exe 文件是被锁定的直接覆盖会提示文件被占用。用前面那个停止脚本先杀掉再替换。升级后先别立刻挂后台用命令行前台跑一次把log-level临时改成info观察有没有配置项废弃警告。新版本偶尔会调整默认值或者标记某些选项为废弃前台跑一次就能看到。确认没问题再改回warn交回给任务计划。配置文件单独备份。我习惯每次改配置之前先把aria2.conf复制一份成aria2.conf.bak因为 Aria2 不会帮你回滚。有一次我为了测试一个参数改乱了配置导致进程起不来还好有备份两分钟就恢复了。7.3 一些值得分享的小经验关于限速切换我后来在自建控制台上加了一个按钮直接调aria2.changeGlobalOption改max-overall-download-limit不用再重启进程。这个改法是运行时生效的比改配置文件方便太多适合白天限速、晚上放开这种场景。关于批量任务与其一个个往界面里贴链接不如把链接写进一个文本文件然后用input-file或者命令行-i参数一次性喂进去。链接多的时候这个方式效率高得多。关于目录定期归档我写了个简单的 PowerShell 脚本挂在任务计划里每周把done目录里超过 7 天的文件按月份归档到别的盘顺便清一下log里超过 30 天的日志。这类维护动作自动化之后Aria2 这套东西基本可以做到配一次忘掉它。关于多机器同步我把自己那份aria2.conf放到网盘同步目录里换机器的时候直接拉下来改两处路径就能用。配置这东西整理一次之后复用率其实很高。最后说一个我个人比较在意的点不要因为工具能跑满带宽就无节制地开任务。五个并发任务和二十个并发任务对同一块硬盘的写入压力完全是两个量级。我现在的习惯是机械盘上最多同时跑 3 个任务SSD 上放到 5 个超过这个数就明显能感觉到系统响应变慢。工具是拿来省心的不是拿来把机器拖垮的参数调优的终点永远是够用就好。另外还有一个实测下来的小技巧如果你经常下载同一批站点的大文件可以在配置文件里针对性地设user-agent有些站点对不同 UA 的策略不一样这个我遇到过一次换了 UA 之后速度从 500K 直接到了 8M。这个不是通用解但值得在速度异常时试一试。
上一篇/下一篇内容由系统自动关联
返回资讯列表 →