背景:磁盘报警,但不想买新盘
家里的 NAS 跑了几年,四块数据盘里有两块长期维持在 85%–93% 的高位。扩容是最直接的方案,但一块 4TB 企业盘要 600 元起步,且机箱位已满。
仔细一看,占用大头是 小米摄像头录像。最早的录像追溯到 2024 年 7 月,按设备 ID 分目录、按日期命名,从未清理过。只要摄像头还在录,数据只增不减。
本文记录一次「零成本回血」操作:通过分析共享配置与文件命名规律,精准删除 2025 年 8 月单月录像,释放 425GB 空间,将高位磁盘占用从 88% 降至 77%。全程只用 SSH 和基础 Linux 命令,不依赖特定 NAS 系统,通用性强。
是什么:摄像头录像的存储增长模型
存储增长的三个特征
- 只写不删:摄像头 24/7 写入,除非人工干预,否则数据单调递增
- 按设备 + 日期分目录:典型命名
设备ID_YYYYMMDD_HHMMSS_HHMMSS.mp4,便于按月批量操作 - 分配策略决定落盘分布: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 相对空闲。清理时,释放量主要体现在存旧数据的那块盘。

第二步:定位「大户」目录与命名规律
进入录像根目录,看结构:
ls /mnt/user/Media/XiaomiCamera_Archive/
# 输出示例:00_2 2024 2025 2026
避坑:
00_2看像年份目录,实为设备 ID 简写(对应完整 ID00_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% 空间