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

gue*_*tli 1 filesystems rsync synchronization

我看到很多无用的递归目录遍历:

  • 同步
  • 齐声
  • 自己的云

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

Inotify 存在,但 AFAIK 不能扩展到几千个目录。

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

例如拿这个文件:

a/b/c/d.txt
Run Code Online (Sandbox Code Playgroud)

以及两台服务器 A 和 B。

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

没有更快的方法吗?

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

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

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

Cel*_*ada 6

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

Inotify 存在,但 AFAIK 不能扩展到几千个目录。

不仅如此,您还必须持续聆听(例如,作为守护进程),如果您错过了一次更新,则必须重新检查所有内容。

没有更快的方法吗?

不,对不起。

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