查大目录需分三步:先锁范围(用du快筛一级目录),再钻结构(限制深度排查子目录),最后看文件构成(按类型、大小、扩展名分析);结合ncdu可视化验证,并重点关注日志与缓存类目录的隐藏逻辑。

查大目录不能只看总量,得先锁范围、再钻结构、最后看文件构成——否则容易在海量小文件里迷失,或漏掉深藏的大文件。
快速定位“嫌疑”大目录
从顶层开始分层排查,避免一次性扫描全盘导致卡顿或误判:
-
一级目录快筛:用
du -sh /* 2>/dev/null | sort -hr查根下各挂载点总大小,重点关注/var、/home、/opt等常见高占用区 -
限制深度聚焦:比如发现
/var占用异常,运行du -h --max-depth=2 /var 2>/dev/null | sort -hr | head -15,看是/var/lib/docker还是/var/log/journal在撑大 -
排除干扰路径:加
--exclude跳过虚拟文件系统,例如du -sh --max-depth=1 /var --exclude=/var/run --exclude=/var/lock
进入目录后分析内部文件分布
单靠目录总大小看不出问题根源,需拆解内容构成:
-
按类型看占比:进到目标目录(如
/var/log)后,执行find . -type f -name "*.log" -printf "%s %p\n" | awk '{sum+=$1} END {print "log总大小:", sum/1024/1024 " MB"}'统计日志类文件总和 -
列出最大单个文件:用
find . -type f -size +50M -ls 2>/dev/null | sort -k7nr | head -10找出前10个超大文件,注意第7列是字节数 -
统计扩展名分布:运行
find . -type f -name "*.*" | awk -F. '{print tolower($NF)}' | sort | uniq -c | sort -nr | head -10,一眼看出是不是某类文件(如.tar.gz、.core)集中堆积
结合工具做可视化验证
命令行结果易读性有限,交互式工具能帮你确认结构是否合理:
-
用 ncdu 快速钻取:安装后运行
ncdu -x /var(-x防跨文件系统),方向键导航、回车进子目录、s按大小排序,还能直接d删除选中项 -
导出结构快照比对:首次扫描时加
ncdu -o report.ndu /var保存结果;清理后再跑一次,用diff 对比变化
特别注意日志与缓存类目录
这些目录常有隐藏逻辑,不能只看大小:
-
/var/log:先journalctl --disk-usage看 journal 占用;再ls -lhS /var/log/*.log排序查看普通日志,大文件未必是最新生成的 -
/var/cache:apt、dnf、snap 的缓存可能长期未清理,用du -sh /var/cache/* 2>/dev/null | sort -hr分别看各子目录 -
/var/lib/docker:运行docker system df查容器、镜像、卷各自占比;再du -sh /var/lib/docker/overlay2/*/diff找具体容器层膨胀源











