NAS 磁盘清理实战:删除陈旧摄像头录像释放 425GB 空间

2026-07-02

背景:磁盘报警,但不想买新盘

家里的 NAS 跑了几年,四块数据盘里有两块长期维持在 85%–93% 的高位。扩容是最直接的方案,但一块 4TB 企业盘要 600 元起步,且机箱位已满。

仔细一看,占用大头是 小米摄像头录像。最早的录像追溯到 2024 年 7 月,按设备 ID 分目录、按日期命名,从未清理过。只要摄像头还在录,数据只增不减。

本文记录一次「零成本回血」操作:通过分析共享配置与文件命名规律,精准删除 2025 年 8 月单月录像,释放 425GB 空间,将高位磁盘占用从 88% 降至 77%。全程只用 SSH 和基础 Linux 命令,不依赖特定 NAS 系统,通用性强。


是什么:摄像头录像的存储增长模型

存储增长的三个特征

  1. 只写不删:摄像头 24/7 写入,除非人工干预,否则数据单调递增
  2. 按设备 + 日期分目录:典型命名 设备ID_YYYYMMDD_HHMMSS_HHMMSS.mp4,便于按月批量操作
  3. 分配策略决定落盘分布:NAS 共享若配置多块盘 + highwater(高水位)分配策略,新文件优先填满空闲最多的那块盘,导致磁盘占用极度不均

为什么选「删旧录像」而不是「买新盘」?

方案 成本 耗时 风险 适用场景
买大盘扩容 高(600–1000元/TB) 小时级 数据迁移风险 预算充足、机位足够
视频转码压缩 天级(CPU 跑满) 画质损失、原文件仍在 追求长期留存、不差空间
按策略删旧录像 分钟级 误删风险可控 短期回血、有明确保留周期

我的场景:摄像头录像保留 6–12 个月足矣,最旧数据已超 1 年。删旧录像是性价比最高的选择。


怎么用:四步清理法

第一步:摸清磁盘分布与共享配置

先看哪块盘最满,数据落在哪个共享。

# 查看所有数据盘占用(适配大多数 Linux/NAS 系统)
df -h | grep -E '^/dev/(md|sd|vd)'

# 查看共享/存储池配置(以 unRAID 为例,其他系统找对应配置文件)
cat /boot/config/shares/media.cfg
# 关键字段:
# includeDisks: "disk2, disk3"   # 数据只写这两块盘
# allocator: "highwater"         # 高水位策略:优先写空闲最多的盘

通用化提示:群晖/威联通/TrueNAS 等系统,共享配置在 Web UI 的「共享文件夹/存储池」设置中,分配策略对应「先填满/均衡/高水位」等选项。Docker 部署的应用(如 Frigate、Scrypted)通常把录像挂载到宿主机目录,直接在宿主机操作即可。

关键判断highwater 策略下,新数据会优先写入空闲更大的盘。如果早期数据集中在 disk3,后期新增数据也会优先去 disk3,导致 disk3 长期高位、disk2 相对空闲。清理时,释放量主要体现在存旧数据的那块盘

NAS 磁盘分配策略对比:highwater vs fill-up


第二步:定位「大户」目录与命名规律

进入录像根目录,看结构:

ls /mnt/user/Media/XiaomiCamera_Archive/
# 输出示例:00_2  2024  2025  2026

避坑00_2 看像年份目录,实为设备 ID 简写(对应完整 ID 00_78DF728C7940)。ls 确认层级,别凭名字猜。

进入设备目录,按月份统计大小:

# 统计 2025 年 8 月单月大小(通配符匹配 YYYYMM)
ls -la /mnt/user/Media/XiaomiCamera_00_78DF728C7940/00_202508*.mp4 \
  | awk '{sum+=$5} END {printf "%.2f GB, %d files\n", sum/1073741824, NR}'

# 结果:425.25 GB, 3402 files

命名规律总结设备ID_YYYYMMDD_HHMMSS_HHMMSS.mp4
→ 按 YYYYMM 通配即可精准选中某月所有文件。

摄像头录像目录结构与命名规律


第三步:执行清理(先干运行,再真删)

干运行确认文件列表

# 只列文件名,不删除
ls /mnt/user/Media/XiaomiCamera_00_78DF728C7940/00_202508*.mp4 | head -20

批量删除

# 删除 2025 年 8 月所有录像
rm -f /mnt/user/Media/XiaomiCamera_00_78DF728C7940/00_202508*.mp4

为什么不用 find
大目录下 find ... -name "*.mp4" -delete 易超时、内存暴涨。ls + 通配符 + rm -f 是 Shell 原生展开,无额外进程开销,几万文件秒级完成。


第四步:验证释放效果

# 1. 看目录剩余最早日期
ls /mnt/user/Media/XiaomiCamera_00_78DF728C7940/ | sort | head -3
# 输出:00_202509... → 最早已变为 2025 年 9 月

# 2. 看目录实际大小
du -sh /mnt/user/Media/XiaomiCamera_00_78DF728C7940/
# 清理前 3.7 TB → 清理后 3.2 TB

# 3. 看磁盘占用率变化
df -h | grep -E 'disk2|disk3'
# disk3: 88% → 77%(腾出 ~400GB)
# disk2: 93% → 无显著变化(印证 highwater 策略下旧数据主要在 disk3)

踩坑与避坑指南

坑点 现象 根因 解决方案
大目录 find 超时 find /path -name "*.mp4" 跑几分钟无输出 目录项过多,遍历开销大 ls 通配符 代替,或分层级 ls 逐级确认
目录名误判 00_2 以为是 2002 年目录 实际是设备 ID 简写 ls 父目录对比完整设备 ID 确认
df 看不出目录大小 df -h 显示整盘 88%,不知目录占多少 df 统计文件系统级,不细分目录 du -sh /path/to/dir 看目录实际占用
误删非目标月份 通配符匹配过宽(如 202508* 匹配到 2025080 命名不规范或手抖 ls 确认列表,再 rm;重要数据先打快照/备份
权限不足报错 rm: Permission denied 目录属主 root,SSH 用非 root 用户 sudo rm 或切 root;Docker 卷需在宿主机操作

可复用经验:建立「存量回血」SOP

1. 磁盘分配策略决定清理效果

  • highwater(高水位):新数据优先写空闲最多的盘 → 旧数据集中在早期写满的盘,清理旧数据主要释放那块盘
  • fill-up(填满):先写满第一块盘再写下一块 → 清理效果更均匀
  • 建议:新建共享时按业务选策略;摄像头录像这类「只增不减」业务,fill-up 反而让磁盘磨损更均衡

2. 命名规范是自动化清理的前提

规范程度 清理方式 维护成本
设备ID_YYYYMMDD_*.mp4 通配符按月删,秒级
YYYY-MM-DD/设备ID_*.mp4 按天删,需遍历子目录
无规律/随机文件名 需脚本解析元数据/修改时间

最佳实践:在摄像头/NVR/录像软件(Frigate、Scrypted、Home Assistant)端配置录像命名模板,强制包含 YYYYMMDD

3. 自动化清理脚本雏形

#!/bin/bash
# cleanup-camera.sh — 按保留天数清理录像
# 用法: ./cleanup-camera.sh /mnt/user/Media/Camera 180

TARGET_DIR="${1:?目录必填}"
RETENTION_DAYS="${2:-180}"  # 默认保留 180 天

find "$TARGET_DIR" -type f -name "*.mp4" -mtime +"$RETENTION_DAYS" \
  -exec echo "Deleting: {}" \; -delete

# 可选:清理空目录
find "$TARGET_DIR" -type d -empty -delete

部署建议:放入系统定时任务(cron/systemd timer/NAS 计划任务),每周跑一次。首次跑前务必 find ... -mtime +180 只打印不删,核对列表无误后再加 -delete

4. 监控告警闭环

  • 磁盘占用 > 85%:推送微信/钉钉/Telegram
  • 清理释放量 < 预期 50%:人工介入排查(可能命名变了、新增设备没纳入)
  • 最早录像日期 < 保留周期:自动触发清理或报警

磁盘清理四步工作流


总结:删数据说易,立方,省真金白银

指标 清理前 清理后 变化
目录总大小 3.7 TB 3.2 TB −425 GB
文件总数 29,521 26,119 −3,402
最早录像 2025-08-01 2025-09-01 +1 个月
Disk 3 占用 88% 77% −11 个百分点
成本 省 600+ 元(避免买 1 块 4TB 盘)

核心心法
1. 先懂分布df + 共享配置),再动手
2. 懂命名规律,用通配符替代 find
3. 干运行验证,再真删
4. 建 SOP + 自动化 + 告警,把一次性动作变成常态能力

下一步计划:继续清理 2025 年 9–10 月数据压低 disk2,随后将保留策略固化为「6 个月滚动」,彻底告别磁盘报警。


延伸阅读
- 共享分配策略对比:highwater vs fill-up vs round-robin
- Frigate/Scrypted 录像命名模板配置指南
- 视频无损压缩(H.264→H.265)再省 30–50% 空间