【发布时间】:2013-07-31 02:20:49
【问题描述】:
前段时间我了解到rsync deletes files much faster that many other tools。
几天前我遇到了this wonderful answer on Serverfault,这解释了为什么rsync 如此擅长删除文件。
引用该答案:
我今天重新访问了这个,因为大多数文件系统都存储它们的目录 btree 格式的结构,删除文件的顺序是 也很重要。需要避免重新平衡 btree 时 执行取消链接。因此,我在删除发生之前添加了一个排序。
您能否解释按顺序删除文件如何防止或减少 btree 重新平衡的次数?
我希望答案能显示删除顺序如何提高删除速度,并详细说明在btree 级别发生的情况。编写rsync 和其他程序(请参阅问题中的链接)的人使用这些知识来创建更好的程序。我认为对于其他程序员来说,拥有这种理解才能编写出更好的软件是很重要的。
【问题讨论】:
-
您的 rsync 链接不再有效。 This archive link 工作;我在this related question找到它。
-
我现在已经对
rm -r和rsync进行了基准测试。它们都显示了在 ext4 和 xfs 上删除包含 n 个文件的目录的 O(n²) 性能。 coreutils patch from 2008 声称这是固定的并且应该具有 O(n) 性能。我提交了一个关于 here 的新错误
标签: algorithm filesystems b-tree delete-file