转移做种 1.0 预览版
「下载 → 转移做种」把下载器里已经下完的种子搬到另一台下载器继续做种,数据文件不动。例如把做种很久的种子从 SSD 上的 qBittorrent 交给 NAS 上的 Transmission。
怎么转
在「下载器 Web UI」里勾选种子(可以来自不同的下载器),或在「任务列表」里勾选已经推送到下载器的记录,点「转移到…」,选好目标下载器后点「预览」。预览逐个写明:
- 能不能转。不能转的写明原因:未下载完、目标下载器里已经有这个种子、已经有进行中的转移任务、拿不到种子文件等。
- 源路径和换算后的目标路径(见下文路径映射)。
- 种子文件从哪来:qBittorrent 4.5 起直接从下载器导出;更早的 qBittorrent 和 Transmission 按 pt-tools 的推送记录从站点重新下载,下载后核对 info hash。没有推送记录的种子只能从 qBittorrent 4.5 及以上转出。
点「建 N 个转移任务」后,后台逐个处理:
- 拿到种子文件。
- 把种子暂停加入目标下载器,保存路径用换算后的目标路径,原有分类和标签之外再加
pt-tools-transfer和这个任务独有的pt-tools-transfer-<任务编号>两个标签。这一步和推送种子走同一个入口:站点做种容量上限照常检查;数据已经在盘上,不占磁盘空间的预留。 - 让目标下载器校验数据。
- 校验到 100% 后,在目标下载器开始做种,再从源下载器移除这个种子,数据文件保留。开始做种前会再确认一次目标还是 100%。pt-tools 在源下载器上的种子记录改到目标下载器。
校验没到 100%(目标路径下没有这份数据,多半是路径映射不对),或者超过时限(30 分钟,加上按 20 MiB/s 读完全部数据的时间),就从目标下载器移除这个种子(数据文件保留),源下载器里的种子不动,任务记为「已回滚」。
每台目标下载器同一时间只校验一个转移的种子,其余的排队,以免同时校验很多种子占满硬盘。pt-tools 重启后,任务从中断的那一步接着做。
pt-tools-transfer-<任务编号> 标签用来认出这个任务加的种子:目标下载器里有同一个种子、却没有这个标签(例如你自己加的,即使带着 pt-tools-transfer)时,任务记为失败,两边的种子都不动。任务结束后 qBittorrent 里的这个标签会被删掉(标签列表里不留下),pt-tools-transfer 保留;Transmission 里的留在种子上。
任务
「转移做种 → 任务」列出最近 200 个任务,写明状态、校验进度和说明。尚未加入目标下载器的任务可以取消;「清除已结束」只删任务记录,不动下载器。
| 状态 | 含义 |
|---|---|
| 等待导出 | 刚建好,尚未拿到种子文件 |
| 等待加入 | 种子文件已拿到,等目标下载器空出来 |
| 正在加入 | 正在把种子暂停加入目标下载器 |
| 校验中 | 已暂停加入目标,正在校验 |
| 校验完成 | 接下来在目标开始做种、从源移除 |
| 已完成 | 目标在做种,源里的种子已移除 |
| 已回滚 | 校验不到 100% 或超时,已从目标移除,源下载器里的种子没动 |
| 失败 | 加入目标之前就失败了(如站点做种容量已满),源下载器没动 |
| 已取消 | 加入目标之前被取消 |
路径映射
两台下载器看到同一份数据的路径不一样时(例如两个容器把同一块盘挂在不同目录),在「路径映射」里选好源和目标下载器,逐行填写「源下载器里的路径前缀 → 目标下载器里的路径前缀」,再点「保存」。
- 转移时取最长的匹配前缀换算保存路径,按整段目录匹配:
/data不会匹配/database。 - Windows 路径(盘符或
\\开头)不区分大小写,/和\都认;Linux 路径区分大小写。 - 一边是 Windows 路径、一边是 Linux 路径时,余下部分的分隔符换成目标的写法。
- 没有匹配时,目标用同一个路径。
定时规则
「定时规则」按间隔把源下载器里符合条件的种子自动建成转移任务,默认关闭。条件都不填时,是全部已下完的种子:
- 分类等于、标签含有(不区分大小写);
- 站点:pt-tools 推送记录里的站点,没有记录时按 tracker 认出的站点,填站点 ID,如
hdsky; - 做种时长至少多少小时。
每一轮按添加时间从早到晚,最多建「每轮最多」个任务(默认 10,最多 100);间隔默认 60 分钟,至少 10 分钟。目标下载器里已经有的、已有进行中任务的、刷流任务的种子(带 pt-tools-brush 标签)不参与。「立即运行」马上跑一轮,结果写在「上次运行」里。
接口
| 方法与路径 | 说明 |
|---|---|
POST /api/transfer/preview | 预览 {target_id, items: [{source_id, hash}]} |
GET /api/transfer/jobs?status=active|finished | 任务列表(最近 200 个) |
POST /api/transfer/jobs | 建任务,请求与预览相同,返回 {created, skipped} |
POST /api/transfer/jobs/{id}/cancel | 取消尚未加入目标的任务 |
DELETE /api/transfer/jobs | 清除已结束的任务记录 |
GET、PUT /api/transfer/path-maps | 读取或整体替换一对下载器之间的路径映射 |
GET、POST /api/transfer/rules;GET、PUT、DELETE /api/transfer/rules/{id};POST …/{id}/run | 定时规则的增删改查与立即运行 |
都要求登录。一次预览或建任务最多 500 个种子。