Reaparr 下载队列实战:暂停、恢复、自动重试的10个实用技巧
【免费下载链接】ReaparrPlex downloader that brings content from any server to yours!项目地址: https://gitcode.com/gh_mirrors/pl/Reaparr
Reaparr 是一款开源的 Plex 下载器,能把任意 Plex 服务器上的电影和剧集直接下载到你自己的服务器。它的下载队列支持手动暂停、断点式恢复、关机自动保存进度、崩溃后自动归位,以及失败后的干净重试。本文面向新手整理了 10 个实用技巧,帮你快速掌握 Reaparr 下载队列的完整玩法。
1️⃣ 读懂下载状态:Queued、Paused 与 AutoPaused 的区别
Reaparr 中每个下载任务都有清晰的状态机,定义在 DownloadStatus.cs 中。常见状态如下:
| 状态 | 含义 | 能否直接恢复 |
|---|---|---|
| Queued(排队中) | 等待队列轮到它开跑 | 无需操作 |
| Downloading(下载中) | 正在从源服务器拉取数据 | — |
| Moving(转移中) | 下载完成,正在移动到最终目录 | — |
| Paused(已暂停) | 你手动暂停的,可无损恢复 | ✅ |
| AutoPaused(自动暂停) | 系统暂停(关机/崩溃),可恢复 | ✅ |
| Stopped(已停止) | 被显式取消,需 Restart 重来 | ❌ 需重试 |
| SourceUnavailable(源不可用) | 源服务器上的媒体已被删除 | ❌ 需检查源 |
记住一个原则:带 Paused 字样的状态都能安全恢复,带 Error/Stopped 的则需要重试或重建任务。
2️⃣ 手动暂停单个下载任务:随时可以安全叫停
在下载队列页面对任意任务点暂停即可。实现见 PauseDownloadTaskCommand.cs,它的行为比想象中更细致:
- 任务正在下载中 → 立即停止底层下载作业,状态置为
Paused - 任务正在移动文件→ 先停掉移动作业,再置为
MovePaused - 任务已下载完但还没开始移动 → 直接标记暂停,不会被误当成可执行任务
⚠️ 已移动到一半的文件进度会被保留,暂停不会把已完成的移动重置掉。
3️⃣ 恢复下载任务:Resume 只会续上"可恢复"的进度
点恢复时,StartDownloadTaskCommand.cs 会按以下逻辑找"下一个要跑的任务":
- 优先找处于
Paused / AutoPaused / MovePaused / AutoMovePaused的子任务——无损续传 - 找不到就找第一个未完成的任务
- 如果该服务器被你整体暂停了,恢复请求会被直接拒绝(防误触)
也就是说,恢复操作对电影、剧集、整季任务都能正确续上,且剧集任务会把后面排队的兄弟任务一并标记为 Queued,保持顺序不乱。
4️⃣ 一键暂停整台 Plex 服务器的所有下载
换设备、省流量或源服务器维护时,不必逐个暂停。服务器级暂停命令见 PausePlexServerDownloadsCommand.cs:
- 立即暂停该服务器上所有正在下载/移动的任务
- 给服务器打上
IsDownloadsPausedByUser标记,排队中的任务也不会开跑 - 想恢复时,使用 ServerResume 下的对应命令一键恢复整服
5️⃣ 关机自动保存:AutoPause 帮你留住进度
正常关闭 Reaparr 前,AutoPauseActiveDownloadsCommand.cs 会扫描所有服务器,把正在下载和移动的任务全部自动暂停(标记为AutoPaused / AutoMovePaused),而且会扫两轮,防止第一轮暂停过程中新启动的任务漏网。下次启动后,这些任务可以直接续传,而不是从头下。
6️⃣ 崩溃恢复:重启后"僵尸任务"自动归位
如果 Reaparr 被强制杀死、断电或崩溃,数据库里可能残留状态还停留在Downloading / Moving的"僵尸任务"。启动时 RecoverInterruptedDownloadsCommand.cs 会自动把它们重置为AutoPaused / AutoMovePaused:
- 下载中的任务 →
AutoPaused(保留已下载进度,可续传) - 移动中的任务 →
AutoMovePaused(保留已移动进度)

你不需要手动修复数据库,重启后到队列里点恢复即可。
7️⃣ 下载失败怎么重试:Restart 干净地从头再来
遇到IntegrityError(校验失败)、ServerUnreachable(源服务器离线)、DownloadClientError等状态时,用Restart重试。RestartDownloadTaskCommand.cs 的流程是:
- 停止该任务组下所有子任务
- 从源服务器重新拉取媒体元数据(文件名、质量、路径)
- 进度清零、状态回到
Queued,重新入队 - 如果源媒体已不存在,会明确标记
SourceUnavailable,避免无限空转
💡 小提示:Stopped状态的任务不能直接 Resume,必须走 Restart 重新入队。
8️⃣ 队列排队规则:同一服务器上的任务如何依次开跑
队列调度由 DownloadTaskScheduler.cs 基于定时任务框架实现,每个任务对应一个独立的下载作业。关键规则:
- 新任务启动后,同一服务器上的其他活动下载会被自动暂停,保证带宽和任务顺序可控
- 每次启动/停止/重启操作后都会发布
CheckDownloadQueueEvent,队列监听器随即检查并拉起下一个Queued任务 - 已完成的任务可以通过 Clear Completed 按任务或按服务器一键清理,保持队列清爽
9️⃣ 移动大文件也能暂停:文件转移阶段的断点恢复
下载完成后还有一段"文件转移"(Moving)阶段:把文件从临时下载目录搬到最终媒体库目录。这个阶段同样支持暂停/恢复:
- 暂停时置为
MovePaused,恢复时置为Queued继续移动 - 断点恢复的移动逻辑见 MoveFileWithResumeCommand.cs
- 如果移动失败会标记
MoveError,此时建议 Restart 或直接重试恢复
对于几十 GB 的大文件跨磁盘移动,这个特性能避免中断后整个文件重新搬运。
🔟 善用下载日志:排查失败原因的第一现场
每个任务都带完整日志流(由CreateDownloadClientLog写入,可通过 GetDownloadTaskLogsByDownloadTaskIdEndpoint.cs 查询),记录从排队、开始、暂停到重启的每一步:
- 看状态变化时间线,判断卡在哪一步
- 搜索
Restart workflow关键字,确认重试流程是否完整跑完 SourceUnavailable的日志会直接告诉你"找不到源媒体",省去猜测
📌新手最佳实践总结:平时多用"暂停/恢复"保护进度;关机交给 AutoPause 自动处理;失败别慌,先看日志再 Restart;大批量操作前先用服务器级暂停兜底。掌握这 10 个技巧,Reaparr 的下载队列就再也不会让你措手不及。
想进一步了解代码结构,可以看看整体架构说明 AGENTS.md 与项目文档 plans/。
【免费下载链接】ReaparrPlex downloader that brings content from any server to yours!项目地址: https://gitcode.com/gh_mirrors/pl/Reaparr
创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考