快速定位磁盘中的大文件

作为系统维护人员,你肯定遇到过硬盘被占满的情况。日志文件往往是占用大量磁盘空间的”罪魁祸首”,但要找出这些”隐形”的大块头并非易事。本文介绍几个高效的命令和工具,帮助你快速定位并管理这些占用空间的大文件。

用 du 查看磁盘使用情况

du(disk usage,磁盘使用情况)命令是查找大文件和目录的基本工具。-h 参数让输出结果以易读的格式显示(如 K、M、G),-a 参数则显示所有文件和目录而不只是子目录汇总。

du -ah 要找的目录 | sort -rh | head -n 10

这条命令会把指定目录下所有文件和目录按大小从大到小排序,只显示最大的前 10 个:

  • du -ah:列出所有文件和目录的大小;
  • sort -rh:按”人类可读”的数值倒序排序;
  • head -n 10:只取前 10 行。

用 find 查找特定大小的文件

find 命令可以帮助你查找特定大小以上的文件:

find 要查找的目录 -type f -size +20M -print0 | xargs -0 du -h | sort -nr

这个命令会找出所有超过 20MB 的文件:

  • -type f:只匹配普通文件;
  • -size +20M:只匹配大于 20MB 的文件;
  • -print0 配合 xargs -0:用空字符 \0 作为分隔符传递文件名,这样即使文件名里含有空格等特殊字符也不会出错;
  • du -h | sort -nr:统计各文件大小并按数值倒序排列。

用 ncdu 进行交互式检查

一般来说,上面两个系统自带的工具就够用了。如果你想要一个更直观的界面来查看和操作大文件,可以使用 ncdu(NCurses Disk Usage),它是一个交互式的磁盘使用情况查看工具,可以像文件管理器一样上下浏览、直接在界面里删除文件。

如果未安装,请先安装它:

sudo apt-get install ncdu   # 对于基于 Debian 的系统

然后运行:

ncdu 要找的目录

小结

通过上述方法,你可以迅速定位到那些占用大量空间的文件,从而有效地管理磁盘空间。当然,找出这些日志后,你还可以编写脚本定时删除这些目录下的旧日志,以避免日志无限增长占用过多空间,这个后面再介绍如何编写脚本管理你的日志。


   转载规则


《快速定位磁盘中的大文件》 吴杭沉 采用 知识共享署名 4.0 国际许可协议 进行许可。
 上一篇
curl 命令详解与常用示例 curl 命令详解与常用示例
在 Linux 中,curl 是一个利用 URL 规则在命令行下工作的文件传输工具,可以说是一款非常强大的 HTTP 命令行工具。它支持文件的上传和下载,是综合传输工具,但按传统,习惯称 curl 为下载工具。本文先介绍 curl 的常见参
2020-12-27
下一篇 
定时删除 30 天前的文件:cron 与 find 定时删除 30 天前的文件:cron 与 find
服务器上的日志文件如果一直不清理,迟早会把磁盘占满。最省心的办法是用 Linux 的 cron job 定期执行一条 find 命令,自动删掉 30 天前的旧文件。本文以每天清理 /logs 目录为例,记录完整的配置过程。 编写清理脚本cr
2020-12-13
  目录