关键不是盲目删,而是先定位、再确认、后动作:用df、du、find逐层缩小范围定位大文件,避开被占用日志、数据库卷等风险项,通过预览清单、truncate清空、分批删除确保安全,再以logrotate和定时扫描防复发。

清理深层目录里的大文件垃圾,关键不是“盲目删”,而是“先定位、再确认、后动作”。隐藏得深,不代表找不到;数量多,也不意味着要手动翻。核心是用对工具、设好边界、留有余地。
快速定位:从分区到深目录逐层缩小范围
先看哪个分区快满了:
-
df -h 查整体使用率,重点关注
/、/var、/home等高风险分区 - 若发现
/var占用异常高,就进它里面:cd /var && du -sh * 2>/dev/null | sort -hr | head -10 - 继续向下钻,比如发现
/var/log大,再跑:find /var/log -type f -size +50M -ls 2>/dev/null | sort -k7,7nr | head -15(按大小倒序列前15个)
识别真正可删的大文件:避开陷阱和误判
很多“大文件”其实不能直接删,比如:
在无 root/sudo 权限的环境(云容器、VPS、隔离主机)中安装并配置 OpenClaw 浏览器工具的 headless Chrome。适用场景:...
-
被进程占用的日志:用
lsof +L1查看已删除但仍在写入的文件(显示为(deleted)),需重启服务或用truncate -s 0清空而非删除 -
数据库或容器数据卷中的文件:如
/var/lib/docker/overlay2下的层文件,不建议手动删,应走docker system prune -
带时间戳的归档日志:如
app.log.20260920.gz,确认是否超出保留策略(如只留7天)再批量处理
安全清理:不靠 rm -rf,靠可控执行
找到目标后,别急着删。推荐三步走:
-
预览清单:把待删文件导出检查,例如
find /path -type f -size +100M -print0 > to_delete.list,再用vim to_delete.list或grep -v "keep\|config"过滤白名单 -
清空代替删除(适合日志类):对还在被写的活跃日志,用
truncate -s 0 filename或> filename,释放空间且不中断服务 -
分批删除+加锁:用
find ... -print0 | xargs -0 -n 100 rm -f控制每次删100个,避免系统卡死;生产环境建议加flock防止并发冲突
防复发:给清理加规则和自动化
光清一次没用,深层垃圾往往周期性再生:
- 给日志服务配
logrotate,设定size 100M+rotate 5,自动轮转压缩并删除旧版 - 在业务脚本末尾加清理逻辑,例如临时生成的
/tmp/.cache_*文件,运行完立刻rm -f /tmp/.cache_$(date +%s) - 定期跑轻量扫描:每周用
find /home -maxdepth 4 -type f -size +200M -mtime +30 -ls找出长期闲置的大文件,人工复核后处理

















