简介
要清理已满的硬盘,你需要回答两个问题:
- 「哪些目录像巨型箱子一样占空间?」(占用空间大的目录)
- 「哪些文件像巨型物品一样占空间?」(大文件)
使用以下工具:
- **
find**:金属探测器(按大小查找文件)。 - **
du**:秤(统计目录大小)。 - **
sort**:整理器(按大小排序)。
在本实验中,你将执行一次专业的「春季大扫除」式磁盘审计。
这种分析方式在生产环境中很常见。当文件系统空间耗尽时,真正需要回答的问题通常不是「它是不是满了?」,而是「究竟是哪些文件或目录导致了这个问题?」。
查找大文件(find)
使用 find 捕获「大鱼」:查找大于 100 MB 的文件。
cd ~/project
find . -type f -size +100M
参数说明:
.:当前目录。-type f:只匹配文件。-size +100M:匹配大于 100 MB 的文件。
find 命令的强大之处在于,它可以根据规则搜索,而不需要手动浏览目录。因此,在大型或杂乱的文件系统中,它尤其有用。
输出示例:
./storage/backup_v1.iso
将报告保存到文件中:
find . -type f -size +100M > large_files.txt
cat large_files.txt
分析目录大小(du)
有时,问题并不是某个大文件,而是一个堆满许多小文件的「杂物抽屉」。
使用 du 统计 /var(可变数据目录)的大小:
sudo du -h --max-depth=1 /var
参数说明:
-h:以便于人类阅读的格式显示大小(MB、GB)。--max-depth=1:只显示顶层子目录(这一点非常重要)。
输出示例:
246M /var/cache
5.5G /var/lib
...
现在可以看出,/var/lib 就是占用空间最大的目录。
分析目录级别的大小很有用,因为存储问题通常有两种原因:某个文件特别大,或者文件系统的某个区域随着时间推移积累了大量数据。
按大小排列目录(sort)
杂乱无序的列表很难阅读。使用 sort 整理结果。
将 du、sort 和 head 组合起来,使用这个「黄金组合」:
sudo du -h --max-depth=1 /var | sort -hr | head -n 5 > ~/project/top_var_dirs.txt
参数说明:
du ...:获取目录大小。sort -hr:按便于人类阅读的大小格式进行逆序排序(最大的排在最前面)。head -n 5:只显示前 5 项。
查看报告:
cat ~/project/top_var_dirs.txt
这是系统管理员常用的标准工作流程。
请记住这个流程:先定位占用空间最大的区域,再对结果排序,最后优先清理最有可能产生最大效果的位置。
总结
在本实验中,你学会了像「侦探」一样分析磁盘空间。
- **
find -size**:帮助你找出具体的大文件(「大鱼」)。 - **
du -h --max-depth=1**:帮助你统计主要目录的大小(「巨型箱子」)。 - **
sort -hr**:帮助你按大小排列目录,从而确定清理优先级。
使用这些工具,你可以快速回答「我的服务器为什么满了?」并在问题扩大之前解决它。



