我知道目录本身的大小与其中文件的大小不同。
我认为目录是其中的目录和文件的列表,因此目录的大小应该与其中的文件/目录的数量相关,并且由于块大小的限制,最小为 4096 字节。
但在我的系统中,有许多目录大小为 4096 字节,还有一些目录大小较少,约为 10 兆字节。您能解释一下为什么会发生这种情况吗?
答案1
所使用的文件系统以及该目录中任何时间点的最大实体数决定了大小。一旦为目录保留的默认大小用尽,就会为目录分配更多空间。但是,当实体数量减少时,分配的空间不会自动释放。因此,如果某个目录有 1000 万个实体,即使删除其中的 9,999,999 个,其大小仍保持不变。这会导致一些有趣的情况,例如这篇 Unix 和 Linux 文章。
$ mkdir foo; touch foo/{1..100000}; stat -c %s foo
2179072
$ rm foo/*; stat -c %s foo
2179072
这对于其他文件系统来说不一定成立。ext{2,3,4}
文件系统会受到影响。NTFS 受影响程度较小。而 btrfs 则不会。ZFS 相当保守,我得到了第二个命令tmpfs
的输出。2
stat
有关的:
- 如何压缩目录在 Unix 和 Linux 上