nas-tools 重复文件检测与批量清理指南:从模式选择到定时任务
【免费下载链接】nas-toolsNAS媒体库管理工具项目地址: https://gitcode.com/GitHub_Trending/na/nas-tools
nas-tools 是一款 NAS 媒体库管理工具,内置的重复文件检测与清理功能,专门解决"同一份内容存了好几份"的问题:它把你媒体库、下载目录、备份目录里的重复文件找出来,让你批量处理掉。这份指南面向已经跑起服务、想让"检测 → 确认 → 清理 → 定期巡检"变成固定动作的用户,读完可以直接照着做。先看这张表,对号入座选你的路线:
| 典型场景 | 推荐做法 |
|---|---|
| 媒体库堆了大量重复影视文件 | 标准检测按哈希分组,保留分辨率、码率更高的版本 |
| 下载目录积了没下完的文件 | 先加排除规则,.part 和 .torrent 一律不碰 |
| 多台设备互相同步产生重复 | 定时任务放工作时段外跑,先空跑再真删 |
| 存储规模到了十 TB 级 | 分目录扫描、加大并发,临时区挪到 SSD |
重复文件检测模式怎么选
检测流程是一个逐层收窄的漏斗:先按文件大小分组,把明显不同的文件淘汰掉;剩下的算"采样哈希",从文件的头、中、尾各取一小段数据做指纹;仍然相同的组,才跑全文件哈希下最终结论。每过一道就把计算量砍掉一截,三种模式的区别就在"中间这道工序做多严"——越严越不容易误判,但花的时间也越多。
选模式按需求来,不用凭感觉:
| 你的需求 | 推荐模式 | 预期耗时(中等体量目录参考) |
|---|---|---|
| 快速看能腾出多少空间 | 快速 | 一般几分钟内出结果 |
| 常规深度清理 | 标准 | 几十分钟量级 |
| 重要档案,要逐个确认 | 精确 | 按小时计,建议夜间跑 |
不用纠结"哪种模式误判多":全文件哈希是最后一道闸门,模式之间的差别主要是耗时和彻底程度。日常用标准模式,重要数据再上精确模式。
动手前:三步完成环境与权限自检
🧰 开始之前过一遍这份清单,三条全过再动手:
- 镜像是新版。重复文件功能迭代很快,先确认你拉的镜像是最新的,安装与更新方式见 README.md。
- 容器读得到目标目录。跑下面的读取测试,能正常列出文件说明权限够;列不出来就在容器启动时补上正确的用户映射再挂载。
- 设置页已配置存储路径。没在设置里添加过的路径,扫描时选不到。
下面这条命令在容器内做读取权限测试,预期结果是正常打印出目标目录的文件列表:
# 把 /data 换成你自己挂载的路径 docker exec -it nas-tools ls -la /dataWebUI 默认端口 3000,服务起来后直接登录就能进入控制台。
完整跑通一次重复文件检测-清理
主线在 WebUI 上走,六步:
- 登录控制台,进入 工具 → 重复文件管理,新建任务。
- 配置参数:扫描路径支持多选;检测模式按上一节的选择;文件类型过滤可限定只扫视频或图片;最小文件大小建议设 10MB,让零碎小文件和缓存文件直接跳过。
- 开始检测。进度区会实时滚动已扫描文件数、占用容量、潜在重复组数量,量大的目录中途别中断。
- 完成后进结果页:重复文件按"相似度组"展示,每组列出各文件的路径、大小、修改时间。
- 逐组处理:右键"自动选择保留",视频建议留分辨率和码率更高的,图片留最近编辑的。勾选要处理的组后选处置方式——移入回收站(带恢复期,随时可找回)、硬链接合并(省空间且原路径可继续访问)、永久删除(不可恢复,慎用)。
- 执行完核对释放空间报告,数字明显小于预期就回第 4 步看是不是被排除规则漏掉了。
同一流程的脚本化写法
SSH 远程管理或写自动化脚本时,CLI 就是同一套流程的脚本化版本:扫描 → 生成 JSON 报告 → 分析 → 清理。下面的子命令与参数请以当前版本--help输出为准,第一步只生成报告、不删任何文件:
# 1) 扫描并生成 JSON 报告 nas-tools duplicates scan --path /data/media --format json --output /tmp/report.json # 2) 用 jq 统计重复文件可释放空间(单位 GB) jq '[.groups[].files[1:][] | .size] | add / 1024 / 1024 / 1024' /tmp/report.json # 3) 人工确认报告后,先以 dry-run 空跑,验证无误再去掉 --dry-run 正式执行 nas-tools duplicates clean --path /data/media --keep newest --dry-run关键在最后一步:报告看着再放心,也先空跑一次再真删。
让规则替你做决定
逐组人工确认只适合组数少的时候,常态运营得让规则替你做"不碰什么"和"留哪份"的决定,人只处理例外。排除规则的最小配置如下,放在配置文件的 duplicate 段(Docker 环境一般在 /config/ 目录),保存后重启服务生效,被排除的路径就不会再出现在扫描结果里:
duplicate: exclude: paths: - "/data/system/*" # 系统目录 - "*/@eaDir/*" # NAS 缩略图缓存 patterns: - ".*\\.part$" # 未完成的下载 - ".*\\.torrent$" # 种子文件 sizes: min: 10485760 # 10MB 以下不扫描保留策略按文件类型固定几条,减少纠结:
- 视频:留分辨率、码率更高的版本
- 图片:留最近编辑的版本
- 文档备份:留文件名带版本号的,其余人工确认
- 多设备备份:本地优先,云端副本可用硬链接替代
NAS 重复文件定时清理
规则定好后,把检测挂上计划。WebUI 路线:系统 → 任务计划 → 新增任务,类型选重复文件检测,时间设每周日凌晨 3 点,勾选"网络空闲时执行",并开启邮件通知,跑完就能收到摘要报告。脚本党则直接在 crontab 加一行(效果:每周日凌晨 3 点自动扫描,报告落在 /tmp 供你早上查看):
0 3 * * 0 nas-tools duplicates scan --path /data/media --format json --output /tmp/weekly-dup.json大容量存储的加速方案
⚡ 数据量过 10TB、文件数上到十万级时,光加并发不够,资源和落盘位置要一起上:
| 存储规模 | CPU | 内存 | 临时区放哪 | 检测方式 |
|---|---|---|---|---|
| 5TB 以下 | 2 核 | 4GB | 系统盘 | 标准模式整目录扫 |
| 5-20TB | 4 核 | 8GB | SSD 缓存盘 | 按子目录分段 |
| 20-50TB | 8 核 | 16GB | NVMe 分区 | 分段 + 拉满并发 |
| 50TB 以上 | 16 核以上 | 32GB 以上 | 独立 SSD | 分段 + 多实例并行 |
几个通用调优点,机械盘收益尤其明显:
- 临时区挪到内存或 SSD,哈希中间结果落盘越快,总耗时越短
- 线程数不超过核心数;机械盘把并发文件数降到 2,让 I/O 喘口气
- 打开结果缓存,没变化的目录下次不必重扫
- 超大文件开"大文件快速模式",只取头、中、尾三段采样
超大规模也可以多起几个实例各扫一片区域,最后全局合并结果,思路简单,这里不展开。
出问题了怎么查
🩺 按下表先自查,大多数情况能直接定位:
| 现象 | 常见原因 | 处置 |
|---|---|---|
| 扫描慢、CPU 打满 | 并发过高、磁盘 I/O 争抢 | 开低优先级模式把 CPU 限到五成左右,并发文件数调小 |
| 超大文件耗时长 | 全文件哈希慢 | 切大文件快速模式,只采样头中尾三段 |
| 结果为空但确认有重复 | 权限不足 / 排除规则误伤 / 缓存未刷新 | 重跑上一节的权限自检,核对排除列表,清缓存后重扫 |
| 个别文件删不掉 | 被其他进程占用(如媒体服务器正在扫描) | 停掉占用进程重试,或用计划删除等系统空闲时执行 |
第三方联动也归入"现象-处置"思路,记三点:
- 媒体服务器联动:配好服务器地址和令牌后启用"媒体库优化",自动识别重复剧集和电影、保留最高质量版本;这也解释了"删不掉"的一种来源——服务器正在扫它。
- 云盘同步:跨存储重复检测支持本地加多个云盘,优先级顺序可配置(本地优先),云端副本可替换成本地硬链接,既省空间又不破坏链接。
- 留好恢复窗口:无论回收站还是硬链接,执行前先确认恢复期和备份关系,再按下执行键。
到这里,你已经完整跑通了一次重复文件检测-清理,并把排除规则和定时任务挂上了日程。下一步建议先做一次全量快速扫描,拿基线报告优先处理大文件重复组,再把定期巡检固定下来。遇到表里没覆盖的问题,带着日志和扫描参数到项目仓库的 Issues 提交,是拿到帮助最快的方式。
【免费下载链接】nas-toolsNAS媒体库管理工具项目地址: https://gitcode.com/GitHub_Trending/na/nas-tools
创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考