3

我正在监视一个500GB - 1TB 的大目录,其中包含一个填充我的数据库的文件监视服务。在初始扫描期间,启动扫描和原生观看事件(添加文件、添加目录),甚至没有任何后处理(元数据、缩略图、数据库检查)可能需要大约 2-3 小时才能完成

当观察者重新启动(例如崩溃或更新)时,它必须重做初始扫描,在此期间我有两个选择:

  1. 全面扫描- 再次处理所有内容

    • 观察者将再次查看所有文件数据并将其与数据库条目进行比较。
    • 如果发现任何不同的或新的,数据库将被更新。
    • 速度:非常慢(约 5-6 小时)
    • 丢失的数据:无,最可靠

.

  1. 不经意扫描- 忽略初始扫描的事件

    • 观察者将正确初始化观察
    • 但无法在重新启动开始和初始扫描完成之间注册任何新文件或更改
    • 速度:大约是完整扫描的一半时间(约 2-3 小时)
    • 丢失的数据:很多,不是很可靠(除非在没有变化的晚上运行)

.

此外,我考虑了第三种选择,但不确定它是否可行:

  1. 备份还原

    • 在运行期间,使用第二个进程来备份观察者的数据和任何负责观察的对象
    • 重新启动时,不要重新运行初始扫描,而是使用备份过程中存储的数据恢复观看
    • 然后继续正常工作
    • 速度:重启观察者进程需要几秒钟
    • 丢失的数据:可能没有,除非数据更改恰好在重启的几秒钟内发生(对我的情况来说已经足够了)

.

我想知道您是否曾经尝试过观察者服务的备份恢复?或者你对此有什么想法?

.

(在我的例子中,观察者使用 node.js、chokidarfs.watchFSWatcher和一些原生 C fs_event_wrap

4

0 回答 0