Mysql

du -sh * 顯示比 ls -lah 更多的已用空間

  • November 10, 2016

我在用完我的一台客戶端伺服器的磁碟空間時遇到問題。

ls -lah中的命令輸出/var/lib/mysql顯示:

drwx------  2 mysql mysql  16K Dec 30  2015 database_xyz

但是當我使用命令檢查同一目錄中的文件大小時du -sh *,輸出顯示:

22G     database_xyz

為什麼這些命令的輸出顯示兩個完全不同的結果?

我的驅動器上只剩下 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

編輯:

原來那database_xyz實際上是一個目錄,而不是一個文件。所以混亂是由我的大腦彌補的。

您似乎對您被告知的內容有誤解。該ls -lah命令列出目前目錄的內容。在這種特殊情況下,這是 /var/lib/mysql. 除其他外,您被告知

drwx------  2 mysql mysql  16K Dec 30  2015 database_xyz

你誤解了這告訴你什麼。

您可以將目錄視為包含目錄條目列表的平面文件。(簡單地說)目錄條目是文件名和指向該文件在磁碟上的位置的指針。此資訊佔用磁碟空間。

什麼

drwx------  2 mysql mysql  16K Dec 30  2015 database_xyz

/var/lib/mysql告訴你的是在called中有一個目錄條目database.xyz。該條目用於d指示它是目錄的文件類型,除其他外,目錄“文件”的大小為 16K。

引用自:https://serverfault.com/questions/813951