Janitorr 如何决定删什么?磁盘空间阈值与媒体过期时间机制全解析

发布时间:2026/10/13 3:16:31

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),仅供参考
延伸阅读

更多相关文章

2026/10/13 3:14:52

三个技术栈踩坑实录:避坑指南

摘要:干了十来年后端,Python、Java、PHP 都摸过一遍,踩过的坑能装一箩筐。这篇文章不聊高大上的架构理论,就聊聊我在不同业务场景里真实踩过的坑,以及对应的避坑思路,希望能给正在选型或者已经入坑的同学一…

2026/10/13 3:14:52

AI产品经理实战指南:从需求翻译到模型验收

简介:这是一份AI产品经理入门手册(上篇)PDF文档,专门面向正在考虑从互联网产品经理转型AI领域的人群,内容基于作者系统性学习归纳而成。手册以AI通识、AI应用领域、AI技术为主线,梳理了行业AI、AI行业、基础…

2026/10/13 3:14:52

UH-60直升机非线性动力学建模与Simulink仿真实战

飞控圈里常流传一句话:固定翼建模是入门,直升机建模是劝退。这句话不是没有道理——旋翼的挥舞运动、诱导速度的分布、尾桨的反扭矩耦合,每一个环节都带着强烈的非线性和交叉耦合,想用一套简单的线性模型糊弄过去,最后…

2026/10/13 3:14:52

金蝶云星空PLM与Altium Designer集成:BOM数据高效通关

简介:金蝶云星空V7.3产品培训讲义聚焦PLM与Altium Designer的深度集成应用,适合负责电子产品研发、物料数据管理或设计制造协同的企业技术人员与实施顾问。内容涵盖集成插件安装与配置、图纸检出与检入、原理图/PCB导入、BOM自动生成与实时更新、元器件库…

2026/10/11 0:02:13

Python调用Gemini Structured Outputs实现工单路由门禁

客服工单最怕的不是模型“答错一句话”,而是它给出一段看起来合理的说明,程序却从中猜错优先级。通俗做法是:要求模型只交 JSON(JavaScript Object Notation,轻量数据格式),再让代码验证它。Gem…

2026/10/12 12:01:26

Spring Boot超市进销存系统毕设实战:从需求拆解到答辩通关

最近带的一个学生项目组里,有A同学跑来问我:选什么毕设题目最稳妥,既能让评审老师觉得工作量够,又不会在答辩时被问到语无伦次。我第一反应就是推荐基于Spring Boot的超市仓库管理系统——也就是超市进销存系统。这个题目乍一看平…

2026/10/12 12:54:07

Flutter StatefulWidget 生命周期核心解析

很多刚开始接触 Flutter 的朋友,在看完一堆“Hello World”和基础组件之后,大概率都会撞上同一堵墙:StatefulWidget 里那堆 initState、build、dispose 方法,到底什么时候被调用?为什么顺序是那样?在里面到…

2026/10/13 0:04:41

基于Triton部署YOLO目标检测:从训练脚本到线上服务

简介:这份资源面向希望将目标检测模型落地到生产环境的深度学习开发者与算法工程师,聚焦于用 Triton Inference Server 部署 YOLOv9 的完整实战方案,解决从训练权重到线上推理服务之间的工程化难题。压缩包共 16 个文件,约 886KB&…

2026/10/13 0:04:41

手把手教你云端部署Qwen-Image-2.1:从GPU选型到在线文生图服务

Qwen-Image-2.1 这个开源的图像生成模型,最近在内容创作和 AI 应用圈子里热度相当高。它属于通义 Qwen 系列里的视觉生成分支,让我眼前一亮的是它对中文长文本的理解能力——以前用那些老方案生成带中文文字的图,十个里九个是“乱码印刷体”&…

还想了解更多?直接咨询顾问

免费诊断 + 免费方案 + 透明报价。

全国咨询热线400-8866-253
免费获取方案
☎咨询二维码 ☎ ↑