如何避免同步两个目录时的递归目录遍历?

如何避免同步两个目录时的递归目录遍历?

我在以下位置看到很多无用的递归目录遍历:

  • 同步
  • 一致
  • 自己的云

所有上述应用程序(以及更多应用程序)一遍又一遍地进行递归目录遍历。由于应用程序不知道文件(目录结构深处)是否已更改。

Inotify 存在,但 AFAIK 无法扩展到数千个目录。

我想没有解决办法。但也许我错过了一些东西。

以这个文件为例:

a/b/c/d.txt

还有两台服务器A和B。

如果您有一百万(或更多)文件和目录,上述所有应用程序都需要检查文件的 mtime 是否已更改。

难道就没有更快的办法了吗?

如果文件的 mtime 更改会上升到父目录,则检查两台服务器上上层目录的 mtime 就足够了。这样应用程序就可以跳过无用的更改搜索。

问题:如何避免同步两个目录的递归目录遍历?

如果您有疑问或需要更多详细信息,请发表评论。谢谢。

答案1

所有这些实用程序都使用递归目录遍历来发现已更改的文件是有原因的。没有更好的办法了。

Inotify 存在,但 AFAIK 无法扩展到数千个目录。

不仅如此,你还必须不断地监听(例如,作为守护进程),如果你错过了一个更新,那么你必须重新检查所有内容。

难道就没有更快的办法了吗?

不,抱歉。

如果您有一个好主意,请发布它(但问答网站不是合适的地方)!

相关内容