为什么这个空目录有3.5MB?

为什么这个空目录有3.5MB?

我刚刚读过这个问题:“ls -l”命令的输出中目录的大小意味着什么?

...这并不能完全回答我的问题。基本上,我将文件移动到 NAS 上。我已经移动的文件夹完全是空的,没有隐藏文件或任何东西,但仍然du报告其大小为 3.5MB。诚然,它们以前包含大量文件,且文件名很长。

这个大小仅仅是因为该目录中文件的数量和名称长度吗?既然文件夹为空(ext4 文件系统),为什么大小还没有减小?

答案1

当您删除目录中的所有文件时,对于大多数文件系统,该目录的大小保持不变。

如果目录为空,

rmdir ./directory_name; mkdir ./directory

生成的新目录会更小。但随着文件的添加,它会变得更大。不必担心目录文件大小与单个目录中的文件数量一样多。单个目录中的大量文件会对文件查找性能产生负面影响。即使有足够的 inode 缓存。

答案2

在 Solaris 中,在影响性能之前,目录中的文件数量会影响 ufs。我发现在几个系统上,一个目录将包含数百个或数千个小文件。该目录的大小不是很大,但文件的数量使得无法在该目录中执行任何操作。您不能只 rm * 文件,因为这会导致系统锁定。我发现删除它们的唯一方法是生成一个列表(ls the-directory >> file.list),然后生成一个简短的一行 for-do-done 脚本,然后将它们一一删除。这需要很长时间,但这是在不锁定系统的情况下删除它们的唯一方法。目录为空后,如果仍然需要,请删除并重新创建该目录,以便列出的块大小与其中的内容相称。稍后,如果这是某种系统管理目录(例如 /var),则有一个每日 cron 作业来修剪它并使其保持可管理数量的文件。

相关内容