rsync
可以比许多其他工具更快地删除文件。几天前,我发现Serverfault上的这个精彩答案解释了为什么
rsync
在删除文件方面表现得如此出色。引自该答案:
请问如何有序地删除文件可以防止或减少btree重新平衡的次数?今天我重新审视了这个问题,因为大多数文件系统在btree格式中存储其目录结构,删除文件的顺序也很重要。你需要避免在执行unlink时重新平衡btree。因此,在删除之前我添加了一个排序步骤。
我希望答案可以展示有序删除如何提高删除速度,并详细说明在
btree
级别发生的情况。编写rsync
和其他程序的人(请参见问题中的链接)使用这些知识来创建更好的程序。我认为其他程序员理解这一点能够编写更好的软件非常重要。
rm -r
和rsync
进行了基准测试。它们在包含n个文件的目录删除中,无论是在ext4还是xfs上,都显示O(n²)的性能。来自2008年的coreutils补丁声称已经修复了这个问题,并应该具有O(n)的性能。我在这里提出了一个新的错误报告。 - nh2