删除目录中的数千个文件后,ls 命令变得非常慢

删除目录中的数千个文件后,ls 命令变得非常慢

我在 /home/myuser 目录下有一个目录,应用程序在其中存储和删除数百万个临时文件。当我在这个目录上执行 ls 时(现在它只有一百个文件),速度太慢了(实际上我好几分钟都没有得到任何输出)。经过一些谷歌搜索和操作:

ls -dl ~/mydir/

我明白了

drwxrwxrwx 2 myuser myuser 160108544 Oct 12 11:31 /home/myuser/mydir/

这基本上意味着我必须为该目录重新编制索引(如果我理解正确的话)。我该如何强制对该目录进行这样的重新索引?

答案1

这取决于您使用的底层文件系统类型,大多数文件系统在删除后不会压缩目录。

卸载文件系统并用于e2fsck -D优化目录。

如果该问题多次发生,则应考虑为该目录使用专用文件系统。您应该使用其他文件系统类型,我不知道哪种文件系统会动态压缩目录条目,Btrfs 的设计宣称不会出现该问题。

编辑:
e2fsck -D可能需要很长时间,psusi 答案是避免重新索引整个文件系统的一个很好的选择。

答案2

创建一个新目录,将剩余文件移动到新目录,删除旧目录,然后将新目录重命名为旧名称。

相关内容