Filesystems
為什麼“點”文件的大小可以是“。”超過4096?
今天我發現了一個 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)然後touch
ing 很多文件,這將使目錄大小增加。(是的,我知道我在這裡對很多細節進行了掩飾/不准確。但是 OP 沒有要求對 EXT* 文件系統的工作方式進行完整的解釋。)