在大型目录树上执行rm -rf需要数小时

Modified on: Thu, 25 Jul 2019 08:20:02 +0800

我们正在使用rsnapshot进行备份。它保留了备份文件的大量快照,但确实删除了旧文件。这很好。但是,在大型目录树上执行rm -rf需要大约7个小时。文件系统是XFS。我不确定有多少文件,但它可能数以百万计。

反正有加速吗?是否有任何与rm -rf相同的命令,并且不需要花费数小时和数小时?

作者:Rory

最佳答案

没有

rm -rf对文件系统进行递归深度优先遍历,在每个文件上调用unlink()。导致进程缓慢的两个操作是opendir() / readdir()unlink()opendir()readdir()取决于目录中的文件数。 unlink()取决于要删除的文件的大小。使这个更快的唯一方法是减少文件的大小和数量(我怀疑不太可能)或将文件系统更改为具有这些操作的更好特征的文件系统。我相信XFS适用于大文件上的unlink(),但对于大型目录结构来说并不是那么好。您可能会发现ext3 + dirindex或reiserfs更快。我不确定JFS的票价有多好,但我确信有很多不同文件系统性能的基准测试。

编辑:似乎XFS在删除树木方面很糟糕,所以肯定改变你的文件系统。


相关问答

添加新评论