我正在监控500GB的大型目录 - 1TB,并且文件监视服务填满了我的数据库。在初始扫描期间,启动扫描和本机监视事件(添加文件,添加目录),甚至不进行任何后处理(元数据,缩略图,数据库检查)可能需要2-3个小时完成
当观察者重新启动(例如崩溃或更新)时,必须重做初始扫描,在此期间我有两个选择:
-
全面扫描 - 再次处理所有内容
- 观察者将再次查看所有文件数据并将其与数据库条目进行比较。
- 如果发现任何不同或新的数据库,则会更新数据库。
- 速度:非常慢(约5-6小时)
- 丢失数据:无,最强健
醇>
-
无意识扫描 - 忽略初始扫描事件
- 观察者会正确初始化观看
- 但无法在重新启动开始和初始扫描完成之间注册任何新文件或更改
- 速度:全扫描的大约一半时间(约2-3小时)
- 丢失数据:很多,不太可靠(除非夜间没有变化)
醇>
此外,我考虑了第三种选择,但不确定它是否可行:
-
备份和恢复
- 在运行期间,使用第二个进程备份观察者的数据和负责观看的任何对象
- 重新启动时,不是重新运行初始扫描,而是使用备份过程中存储的数据恢复观看
- 然后继续正常工作
- 速度:重启观察程序进程需要几秒钟
- 丢失数据:可能没有,除非在重启的几秒钟内发生数据变化(对我来说足够好)
醇>
我想知道您是否曾尝试过观察服务的备份还原?或者你有什么想法吗?
(在我的情况下,观察者使用node.js,chokidar,fs.watch,FSWatcher和一些native C fs_event_wrap)