du -sh * 显示比 ls -lah 更多的已用空间

Orp*_*ans 4 mysql database disk-space-utilization ls du

我的一台客户端服务器的磁盘空间不足时遇到问题。

的命令的输出ls -lah/var/lib/mysql所示:

drwx------  2 mysql mysql  16K Dec 30  2015 database_xyz
Run Code Online (Sandbox Code Playgroud)

但是当我使用命令检查同一目录中的文件大小时du -sh *,输出显示:

22G     database_xyz
Run Code Online (Sandbox Code Playgroud)

为什么这些命令的输出显示两个完全不同的结果?

我的驱动器上只剩下 2.2GB。

root@jon-cust-lifeincity:/var/lib/mysql# df -h
Filesystem            Size  Used Avail Use% Mounted on
/dev/mapper/vg-root    49G   44G  2.2G  96% /
tmpfs                1007M     0 1007M   0% /lib/init/rw
udev                 1002M  108K 1002M   1% /dev
tmpfs                1007M     0 1007M   0% /dev/shm
/dev/sda1             228M   16M  200M   8% /boot
Run Code Online (Sandbox Code Playgroud)

编辑:

原来那database_xyz实际上是一个目录,而不是一个文件。所以混乱是由我的大脑弥补的。

use*_*517 7

您似乎对别人告诉您的内容有误解。该ls -lah命令列出当前目录的内容。在这种特殊情况下, /var/lib/mysql. 除其他事项外,你被告知这一点

drwx------  2 mysql mysql  16K Dec 30  2015 database_xyz
Run Code Online (Sandbox Code Playgroud)

你误解了这句话的意思。

您可以将目录视为包含目录条目列表的平面文件。(简单地说)目录条目是文件名和指向该文件在磁盘上的位置的指针。此信息占用磁盘空间。

什么

drwx------  2 mysql mysql  16K Dec 30  2015 database_xyz
Run Code Online (Sandbox Code Playgroud)

告诉您的是,在/var/lib/mysql名为database.xyz. 该条目用于d指示它是一个目录的文件类型,其中目录“文件”的大小为 16K。