为什么“点”文件的大小可以“.”超过4096?

为什么“点”文件的大小可以“.”超过4096?

今天我发现一个“空”目录,大小为4MB。

它没有可见的内容,所以我尝试了ls -lah。这向我展示了一些隐藏文件(不是很大)。搜索目录如此大的原因,我发现点文件(.)的大小为3.9MB。

该文件中存储了什么?这不就是一种指向同一目录的链接吗?

这是 shell 输出(匿名):

-bash# more /proc/version
Linux version 2.6.18-8.1.15.el5 ([email protected]) (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
...

答案1

与每个目录一样,点文件包含该目录中文件的名称列表及其索引节点号。因此,如果您曾经在该目录中有很多文件(对于“tmp”目录来说不太可能),那么目录条目就会增长到这个大小。

文件消失后,文件系统不会再次自动收缩目录文件。

您可以自己尝试一下,创建一个新的空目录,ls -la在其中查看初始大小(我的机器上为 4096),然后touch加载大量文件,这将使目录大小增长。

(是的,我知道我在这里掩盖/不准确地描述了很多细节。但是OP没有要求对 EXT* 文件系统如何工作的完整解释。)

相关内容