Filesystems

為什麼“點”文件的大小可以是“。”超過4096?

  • August 21, 2018

今天我發現了一個 4MB 大小的“空”目錄。

它沒有可見的內容,所以我嘗試了ls -lah. 這向我展示了一些隱藏文件(不是很大)。搜尋目錄這麼大的原因,我發現點文件(.)的大小為 3.9MB。

該文件中儲存了什麼?這不只是一種指向同一目錄的連結嗎?

這是外殼輸出(匿名):

-bash# more /proc/version
Linux version 2.6.18-8.1.15.el5 (mockbuild@builder6.centos.org) (gcc version 4.1.1 20070105 (Red Hat 4.1.1-52)) #1 SMP Mon Oct 22 08:32:04 EDT 2007
-bash# pwd
/data/foo/bar/tmp
-bash# ls -lah
total 4.1M
drwxrwxrwx  3 nobody nobody 3.9M Nov 21 10:02 .
drwxrwxrwx 16 nobody nobody 4.0K Aug 27 17:26 ..
-rw-------  1 root   root    20K Oct 25 14:06 .bash_history
...

與每個目錄一樣,點文件包含該目錄中文件的名稱列表及其 inode 編號。因此,如果您曾經在該目錄中有很多文件(對於“tmp”目錄來說不太可能),這會使目錄條目增長到這個大小。

文件消失後,文件系統不會再次自動收縮目錄文件。

您可以通過創建一個新的空目錄自己進行試驗,ls -la在其中查看初始大小(我的機器上為 4096)然後touching 很多文件,這將使目錄大小增加。

(是的,我知道我在這裡對很多細節進行了掩飾/不准確。但是 OP 沒有要求對 EXT* 文件系統的工作方式進行完整的解釋。)

引用自:https://unix.stackexchange.com/questions/56277