如何定位使用所有磁盘空间的目录

Vin*_*oft 4 command-line disk-usage 14.04

我使用 Ubuntu 14.04 作为服务器来托管我的公司网站和邮件系统。在我无法发送或接收电子邮件之前,系统在线 3 周。几分钟的调试显示了原因:没有更多的磁盘空间。

Filesystem      Size  Used Avail Use% Mounted on
udev            3.9G     0  3.9G   0% /dev
tmpfs           799M  8.7M  790M   2% /run
/dev/xvda1      7.8G  7.4G     0 100% /
tmpfs           3.9G     0  3.9G   0% /dev/shm
tmpfs           5.0M     0  5.0M   0% /run/lock
tmpfs           3.9G     0  3.9G   0% /sys/fs/cgroup
tmpfs           100K     0  100K   0% /run/lxcfs/controllers
tmpfs           799M     0  799M   0% /run/user/1000
Run Code Online (Sandbox Code Playgroud)

问题:如何定位占用所有磁盘空间的目录?

我试过df -hs /path/to/directory在所有根目录上使用都没有运气。有 4GB 的空间未考虑在内。

Rin*_*ind 9

前 10 名最大的目录:

du -a / | sort -n -r | head -n 10
Run Code Online (Sandbox Code Playgroud)

以更易读的格式:

du -hsx / | sort -rh | head -10
Run Code Online (Sandbox Code Playgroud)

最大的 10 个文件:

find / -printf '%s %p\n'| sort -nr | head -10
Run Code Online (Sandbox Code Playgroud)

有 4GB 的空间未考虑在内。

许多小文件加起来也有 4Gb...


我建议看看最明显的罪魁祸首:

/var/log/
Run Code Online (Sandbox Code Playgroud)

如果您的系统有错误,它会将它们记录在那里。并且 3 周的错误可以迅速增加到 4Gb。除此之外:在该系统上使用数据库?如果是这样...检查数据库存储文件的目录;/var/lib/mysql例如。