服务器任务因为空间不足中断后,再去找大文件,处理起来很被动。平时把占用情况看清楚,再让脚本按周检查一次,能提前发现哪个目录正在持续增长。
Summary
用
dust查看目录占用,再用定时任务每周比较变化并发送邮件报告。
查看空间被谁占用
df -h 适合查看整个文件系统还剩多少空间。要继续定位到具体目录,可以用 du:
du -h --max-depth=1 /path/to/data-h 把结果显示成容易阅读的单位,--max-depth 设置显示的路径级别。
目录不多时,这条命令已经够用。数据量很大、文件数量很多时,du 可能要等一会儿,而且输出只是逐行列出,仍要自己寻找占用最大的目录。

我现在更推荐试试 dust。它是用 Rust 编写的 du 替代工具,会把目录层级和占用大小放在同一个视图里,速度还很快。

这条命令很适合日常排查。哪个项目目录最大、空间主要落在哪一层,打开结果就能看到。dust 也支持限制显示条目和输出 JSON,不过手动查看时没有必要把参数加得很复杂。
把检查变成每周自动报告
手动检查很容易被忘掉,所以我把扫描、记录和邮件放进同一个定时流程。脚本每周在固定时间运行,读取需要监控的路径,记录总占用和一级目录大小,再和上一次成功结果比较。

邮件里只保留几项直接有用的信息:
- 当前使用量和使用比例
- 各一级目录的占用排行
- 相比上周增加或减少了多少
- 超过阈值的分区和目录
如果某个项目本周增加很多,报告会直接把它标出来;扫描失败的目录则显示为缺失,不能当成零写进历史。每个分区应单独设置容量和警告阈值。
最后把定时的自动化交给 cron 即可。