日常运维时,经常遇到磁盘存储空间不足的告警,我们就需要找到哪个目录占用的空间最大。通常先看一下根目录下各个子目录的大小,找到占用最大的文件夹,然后再一级级的找下去。这就要用到du(disk usage)命令

du - estimate file space usage
Summarize disk usage of each FILE, recursively for directories

从上述解释,du用于估算每个文件占用的空间,如果是文件夹,那么会递归估算。

  • -s(summarize),总结性信息
  • -h(human-readable),以人类易读的单位展示,比如大文件以G为单位,中文件用MB,小文件用KB

比如查看根目录下,一级子目录的大小

du -sh /*

或者先切换到根目录下,然后

du -sh ./*

linux 查看文件 文件夹大小_linux


也可以使用du -h --max-depth=1

linux 查看文件 文件夹大小_服务器_02

我们知道,ll -h也可以查看大小,但是它只查看本级文件夹大小,而不包含子文件。也许你已经发现,文件夹的大小,基本都是4K,这4k是存储文件元数据所占有的空间。

linux 查看文件 文件夹大小_根目录_03

疑问

从上图可以看出,对大多数文件,注意指的是文件而不是文件夹,ll du展示的大小一样,但qr_code.png,在ll中占据772,在du中占用4K,这是因为ll默认展示的是文件大小,而不是占用磁盘的大小,使用-s选项,可以查看分配的大小。

linux 查看文件 文件夹大小_linux_04


从这图也可以看出,文件夹实际大小和分配大小都是4K,而小文件,大小与占用磁盘大小可能不一样。

总结

查看文件夹(包含子目录)的大小,使用du -sh path/* 或者du -h --max-depth=1 path

参考

using-ls-to-list-directories-and-their-total-sizes

how-get-size-of-file-directory-linux