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

发布时间:2026/9/18 17:30:41

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/9/18 17:27:41

Windows DLL 静态与动态加载原理及 WinError 1114 排查

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/9/18 17:27:41

SAP物料主数据原始组:成本核算视图、MBEW与批量维护治理

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/9/18 17:27:41

C语言结构体packed属性:内存对齐、尾部填充与实战

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/9/18 17:27:41

Asterisk 源码安装与 PJSIP 分机配置:从依赖到排障的完整链路

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/9/18 17:22:40

基于STM32的半导体制冷片PID温控与物联网远程监控系统

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/9/18 14:13:01

拯救者Y7000黑屏故障排查与维修实战指南

1. 项目概述:一台黑屏的拯救者Y7000,到底卡在哪一步? 联想拯救者Y7000系列笔记本,从2018年第一代搭载i5-8300H开始,到后来的i7-9750H、i7-10750H、i5-11400H,再到2023年款的R7-7840HS,它始终是学…

2026/9/18 0:01:09

Google Colab 实战:运行模型、数据加载与报错排查

1. 为什么我劝你先搞懂 Colab 的运行模型1.1 Colab 到底是什么,跟本地跑代码差在哪Google Colab 简单说就是一台跑在浏览器里的 Linux 虚拟机,你打开一个 Notebook,背后就连上了一台带 GPU 的远程机器。你在单元格里敲的每一行 Python&#x…

2026/9/18 0:01:09

C语言数据类型与表达式详解

1. C语言数据与数据类型概述在C语言编程中,数据是程序处理的核心对象。理解数据的分类和特性是掌握C语言的基础。C语言中的数据主要分为四大类:常量、变量、表达式和函数。这些数据类型构成了C语言程序的基本元素,每种类型都有其独特的特性和…

2026/9/18 0:01:09

SQL时间字段指定时间段查询:区间语义、索引与时区避坑

上周排查一个线上问题&#xff0c;用户反馈"昨天的订单一条都没查到"&#xff0c;但数据库里明明躺着两千多条。最后定位下来&#xff0c;不是数据丢了&#xff0c;也不是接口挂了&#xff0c;而是那个查询条件把时间段写成了> 2024-05-20 00:00:00 AND < 2024…

2026/9/18 14:13:03

USB Type-C PCB布局分区设计:电源、高速信号与PD协议全攻略

做硬件这行&#xff0c;Type-C接口算是典型的“看着简单&#xff0c;做起来全坑”的东西。光引脚就24个&#xff0c;高低速信号、电源、控制线全部塞在一个小小的连接器里&#xff0c;如果PCB布局不做规划&#xff0c;打样回来基本就是“插上没反应”、“高速掉线”、“静电一打…

2026/9/18 14:13:02

系统编程学习原型如何补齐稳定性边界

系统编程学习原型如何补齐稳定性边界预算有限时&#xff0c;我先优化明显多余的复制&#xff0c;而不是猜测性地换容器。用借用传递只读数据通常就能减少分配&#xff1a; fn parse(line: &str) -> Result<Item, Error> { /* ... */ }用基准确认热点确实在分配&am…

2026/9/18 14:13:02

雨花区哪家财务公司代理记账比较好?

在雨花区&#xff0c;企业处理财税事务常常面临诸多挑战&#xff0c;选择一家靠谱的财务公司至关重要。湖南巨勤财务管理咨询有限公司就是本地正规实体财税服务机构&#xff0c;深耕本地工商财税行业多年&#xff0c;熟悉当地工商局、税务局最新政策与申报流程。主营公司注册、…

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

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

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