清理脚本按 find /data -name "*.tmp" -delete 跑,把 /data/backup 下正在用的快照文件也删了,共 3.7 万个,恢复花了 6 小时。日志里能对上时间点,这种反而好排。

find 会递归进所有子目录,备份目录里恰好也有 .tmp 后缀的中间文件。脚本没有排除路径,也没有先看命中列表。这一点先确认清楚,后面就不用反复试。

find /data -maxdepth 2 -name '*.tmp' -not -path '/data/backup/*' -print | wc -l
find /data -maxdepth 2 -name '*.tmp' -not -path '/data/backup/*' -delete

「find 删除误伤」排查到最后往往是很小的一处差异,前面那些复杂猜测可以先放一放。线上出问题先对时间点,跟发布、备份、任务执行的时刻排一排,能省掉一半功夫。

日志级别临时调高可以,记得改回去,长期开着既占磁盘又掩盖真问题。权限不要一口气开到最大,先加到够用再往上试,范围小才好收。

把复现步骤压到三条以内,交给同事也能跑出来,才算真的定位清楚。

处理上按这个顺序:加 -maxdepth 限制层级 别下探到备份区;用 -path 排除 backup 和 archive 目录;先跑一遍 -print 统计数量 确认后再删;删除范围按天分片 避免一次误删太多。

结果对不对很好判断,预演输出的路径里没有 backup 目录,实际删除数量与预演一致。

作者 9823189