nas-tools 重复文件检测与批量清理指南:从模式选择到定时任务
2026/9/19 17:54:24 网站建设 项目流程

nas-tools 重复文件检测与批量清理指南:从模式选择到定时任务

【免费下载链接】nas-toolsNAS媒体库管理工具项目地址: https://gitcode.com/GitHub_Trending/na/nas-tools

nas-tools 是一款 NAS 媒体库管理工具,内置的重复文件检测与清理功能,专门解决"同一份内容存了好几份"的问题:它把你媒体库、下载目录、备份目录里的重复文件找出来,让你批量处理掉。这份指南面向已经跑起服务、想让"检测 → 确认 → 清理 → 定期巡检"变成固定动作的用户,读完可以直接照着做。先看这张表,对号入座选你的路线:

典型场景推荐做法
媒体库堆了大量重复影视文件标准检测按哈希分组,保留分辨率、码率更高的版本
下载目录积了没下完的文件先加排除规则,.part 和 .torrent 一律不碰
多台设备互相同步产生重复定时任务放工作时段外跑,先空跑再真删
存储规模到了十 TB 级分目录扫描、加大并发,临时区挪到 SSD

重复文件检测模式怎么选

检测流程是一个逐层收窄的漏斗:先按文件大小分组,把明显不同的文件淘汰掉;剩下的算"采样哈希",从文件的头、中、尾各取一小段数据做指纹;仍然相同的组,才跑全文件哈希下最终结论。每过一道就把计算量砍掉一截,三种模式的区别就在"中间这道工序做多严"——越严越不容易误判,但花的时间也越多。

选模式按需求来,不用凭感觉:

你的需求推荐模式预期耗时(中等体量目录参考)
快速看能腾出多少空间快速一般几分钟内出结果
常规深度清理标准几十分钟量级
重要档案,要逐个确认精确按小时计,建议夜间跑

不用纠结"哪种模式误判多":全文件哈希是最后一道闸门,模式之间的差别主要是耗时和彻底程度。日常用标准模式,重要数据再上精确模式。

动手前:三步完成环境与权限自检

🧰 开始之前过一遍这份清单,三条全过再动手:

  1. 镜像是新版。重复文件功能迭代很快,先确认你拉的镜像是最新的,安装与更新方式见 README.md。
  2. 容器读得到目标目录。跑下面的读取测试,能正常列出文件说明权限够;列不出来就在容器启动时补上正确的用户映射再挂载。
  3. 设置页已配置存储路径。没在设置里添加过的路径,扫描时选不到。

下面这条命令在容器内做读取权限测试,预期结果是正常打印出目标目录的文件列表:

# 把 /data 换成你自己挂载的路径 docker exec -it nas-tools ls -la /data

WebUI 默认端口 3000,服务起来后直接登录就能进入控制台。

完整跑通一次重复文件检测-清理

主线在 WebUI 上走,六步:

  1. 登录控制台,进入 工具 → 重复文件管理,新建任务。
  2. 配置参数:扫描路径支持多选;检测模式按上一节的选择;文件类型过滤可限定只扫视频或图片;最小文件大小建议设 10MB,让零碎小文件和缓存文件直接跳过。
  3. 开始检测。进度区会实时滚动已扫描文件数、占用容量、潜在重复组数量,量大的目录中途别中断。
  4. 完成后进结果页:重复文件按"相似度组"展示,每组列出各文件的路径、大小、修改时间。
  5. 逐组处理:右键"自动选择保留",视频建议留分辨率和码率更高的,图片留最近编辑的。勾选要处理的组后选处置方式——移入回收站(带恢复期,随时可找回)、硬链接合并(省空间且原路径可继续访问)、永久删除(不可恢复,慎用)。
  6. 执行完核对释放空间报告,数字明显小于预期就回第 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-20TB4 核8GBSSD 缓存盘按子目录分段
20-50TB8 核16GBNVMe 分区分段 + 拉满并发
50TB 以上16 核以上32GB 以上独立 SSD分段 + 多实例并行

几个通用调优点,机械盘收益尤其明显:

  • 临时区挪到内存或 SSD,哈希中间结果落盘越快,总耗时越短
  • 线程数不超过核心数;机械盘把并发文件数降到 2,让 I/O 喘口气
  • 打开结果缓存,没变化的目录下次不必重扫
  • 超大文件开"大文件快速模式",只取头、中、尾三段采样

超大规模也可以多起几个实例各扫一片区域,最后全局合并结果,思路简单,这里不展开。

出问题了怎么查

🩺 按下表先自查,大多数情况能直接定位:

现象常见原因处置
扫描慢、CPU 打满并发过高、磁盘 I/O 争抢开低优先级模式把 CPU 限到五成左右,并发文件数调小
超大文件耗时长全文件哈希慢切大文件快速模式,只采样头中尾三段
结果为空但确认有重复权限不足 / 排除规则误伤 / 缓存未刷新重跑上一节的权限自检,核对排除列表,清缓存后重扫
个别文件删不掉被其他进程占用(如媒体服务器正在扫描)停掉占用进程重试,或用计划删除等系统空闲时执行

第三方联动也归入"现象-处置"思路,记三点:

  1. 媒体服务器联动:配好服务器地址和令牌后启用"媒体库优化",自动识别重复剧集和电影、保留最高质量版本;这也解释了"删不掉"的一种来源——服务器正在扫它。
  2. 云盘同步:跨存储重复检测支持本地加多个云盘,优先级顺序可配置(本地优先),云端副本可替换成本地硬链接,既省空间又不破坏链接。
  3. 留好恢复窗口:无论回收站还是硬链接,执行前先确认恢复期和备份关系,再按下执行键。

到这里,你已经完整跑通了一次重复文件检测-清理,并把排除规则和定时任务挂上了日程。下一步建议先做一次全量快速扫描,拿基线报告优先处理大文件重复组,再把定期巡检固定下来。遇到表里没覆盖的问题,带着日志和扫描参数到项目仓库的 Issues 提交,是拿到帮助最快的方式。

【免费下载链接】nas-toolsNAS媒体库管理工具项目地址: https://gitcode.com/GitHub_Trending/na/nas-tools

创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考

需要专业的网站建设服务?

联系我们获取免费的网站建设咨询和方案报价,让我们帮助您实现业务目标

立即咨询