Janitorr 如何决定删什么?磁盘空间阈值与媒体过期时间机制全解析
Janitorr 如何决定删什么磁盘空间阈值与媒体过期时间机制全解析【免费下载链接】janitorrCleans your Radarr, Sonarr, Jellyseerr and Jellyfin before you run out of space项目地址: https://gitcode.com/gh_mirrors/ja/janitorrJanitorr 是一款专为家庭媒体库设计的自动清理工具它会持续监控 Radarr、Sonarr、JellyfinEmby与 Seerr在你磁盘空间耗尽之前按磁盘空间阈值 媒体过期时间两条规则自动删除过期电影和剧集。本文带你完整看懂它的删除决策流程让你放心地把删片这件脏活交给它。决策核心先看磁盘再算年龄Janitorr 的删除判断由三层机制叠加而成全部由定时任务驱动清理类型触发条件删除对象媒体过期清理默认开启磁盘剩余空间低于某个阈值超过对应过期天数的电影 / 整季剧集标签清理Tag-based磁盘低于minimum-free-disk-percent带有指定标签且超龄的媒体单集清理Daily 剧集只要开启就按天检查最新季中太旧或超量的单集这三套规则的源码分别在src/main/kotlin/com/github/schaka/janitorr/cleanup/目录下的MediaCleanupSchedule.kt、TagBasedCleanupSchedule.kt和WeeklyEpisodeCleanupSchedule.kt中实现。磁盘空间阈值过期时间是怎么选出来的这是新手最容易困惑的地方。你配置的其实不是一个固定天数而是一张剩余空间 → 保留天数的阶梯表。官方配置模板见 application-template.yml其中电影默认配置大致是media-deletion: movie-expiration: 5: 15d # 只剩 5% 以下空间 → 电影只保留 15 天 10: 30d # 只剩 10% 以下 → 保留 30 天 15: 60d # 只剩 15% 以下 → 保留 60 天 20: 90d # 只剩 20% 以下 → 保留 90 天选择算法非常直白见 MediaCleanupSchedule.kt 中的阈值选择逻辑并有完整单测 ThresholdSelectionTest.kt先测量free-space-check-dir所在磁盘的剩余百分比在所有阈值 当前剩余空间的档位中取阈值最低的那一档对应的过期时间如果剩余空间高于所有阈值则返回永不删除——什么也不删。举几个例子档位为 10%→180 天、20%→365 天、50%→730 天剩余19.8%→ 选中 20% 档剧集保留 365 天剩余9.5%→ 跌破 10% 档保留期缩短到 180 天删得更狠剩余55%→ 高于全部阈值本轮不删任何东西恰好等于阈值如 20.0%→ 该档不触发因为比较用的是小于而非小于等于 这意味着磁盘越紧张Janitorr 保留媒体越短、清理越激进磁盘宽裕时它几乎不动手这就是空间感知删除disk space aware deletion的含义。⚠️ 注意如果 Janitorr 没有文件系统访问权限无法测量真实磁盘它无法判断剩余空间会固定选择配置中最长的那一档过期时间。想让阈值机制生效必须让它映射到与 *arrs 相同的媒体目录。媒体过期时间年龄从哪天开始算确定了保留 X 天之后还要回答另一个问题这件媒体多老了规则来自 LibraryItem.kt基准日期默认取Radarr/Sonarr 抓取历史中的导入日期可通过determine-age-by在oldest与most_recent之间选择如果配置了 Jellystat / Streamystats / janitorr-stats且最近观看时间晚于导入日期则改用观看时间作为基准——也就是说你 3 个月前下的片最近又看了一次它的保质期会被重置只有被 Radarr/Sonarr 下载过的媒体才会被纳入考量。Leaving Soon删除前的倒计时公示在真正删除之前Janitorr 会在 Jellyfin/Emby 首页创建一个Leaving Soon即将离开集合把进入删除倒计时的媒体展示出来给用户一个缓冲窗口。它的时间数学是这样的设删除过期时间为E天预告期为leaving-soon: 14d媒体年龄超过E - 14天时 → 进入 Leaving Soon 集合只挂链接不删除媒体年龄超过E天时 → 正式删除并从集合中移除还可以用leaving-soon-threshold-offset-percent默认 5让集合提前预填当剩余空间已经逼近下一个删除阈值 5% 以内时就开始往集合里放将来会被删的内容。删除完成后Seerr 里对应的请求会被同步清理Jellyfin 中的孤立元数据也会被清掉避免留下幽灵目录。标签清理给特定用途媒体单独定规矩在 Sonarr/Radarr 里给媒体打上自定义标签如5 - demo就可以为它单独设定过期时间配置形如tag-based-deletion: minimum-free-disk-percent: 100 # 剩余空间低于 100% 才允许删默认永不删 schedules: - tag: 5 - demo expiration: 30d - tag: 10 - demo expiration: 7d默认minimum-free-disk-percent是 100即永不触发你需要手动调低才会真正删除标签媒体。另外给媒体打上janitorr_keep标签可以把它从一切删除目标中完全豁免标签名可在exclusion-tags中自定义。单集清理Daily 剧集的专属规则像新闻、每日节目这类最新季型剧集整季删除太粗糙Janitorr 提供了单集级别策略episode-deletion只对打了janitorr_daily标签可改名的剧集生效按年龄删最新季中超过max-age默认 30 天的已播出单集直接删除按数量删最新季只保留最近max-episodes默认 10 集可选clean-older-seasons把旧整季全部清掉。内置的多重安全防护放心把删除权交给 Janitorr靠的是这些默认保护Dry-run 模式默认开启只记录我想删什么实际什么都不删确认日志行为符合预期后再关闭种传保护正在做种seed 中的媒体会被跳过无法删除的电影/剧会转入 Leaving Soon 展示收藏保护开启exclude-favorited后任何用户在 Jellyfin 里收藏的条目不会被删回收站兜底不放心可以在 *arrs 里开启 Recycle Bin删错也能找回。常见问题Q为什么磁盘已经很满了Janitorr 却不删A先确认文件系统访问已开启、free-space-check-dir指向了正确的卷再看日志里打印的Free disk space: XX%是否落在你配置的阈值区间内。QLeaving Soon 集合里的东西什么时候消失A到期被删除后自动移除该集合不受 dry-run 影响始终会被创建和更新。Q删掉的媒体还能再下回来吗A可以import-exclusions默认关闭条目删除后 Radarr/Sonarr 仍可重新请求导入。小结Janitorr 的删除哲学可以浓缩成一句话空间决定删多激进历史决定谁该被删Leaving Soon 负责删前公示。理解了磁盘空间阈值表 过期时间 观看时间重置 安全兜底这套组合拳你就能根据自家NAS的实际容量调出一套既省心又安全的自动清理策略。【免费下载链接】janitorrCleans your Radarr, Sonarr, Jellyseerr and Jellyfin before you run out of space项目地址: https://gitcode.com/gh_mirrors/ja/janitorr创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考