データベースをいっぱいにするファイル監視サービスを使用して、500 GB から 1 TBの大きなディレクトリを監視しています。最初のスキャン中に、スキャンおよびネイティブ監視イベント (ファイルの追加、ディレクトリの追加) を開始し、後処理 (メタデータ、サムネイル、データベース チェック) さえ行わないと、完了するまでに 2 ~ 3 時間かかる場合があります。
ウォッチャーが再起動すると(クラッシュや更新など) 、最初のスキャンをやり直す必要があります。その間、次の 2 つのオプションがあります。
フルスキャン- すべてを再処理します
- ウォッチャーは再びすべてのファイル データを調べ、それをデータベース エントリと比較します。
- 異なるものや新しいものが見つかった場合は、データベースが更新されます。
- 速度 : 非常に遅い (~5-6 時間)
- 失われたデータ: なし、最も堅牢
.
気づかないスキャン- 最初のスキャンのイベントを無視する
- ウォッチャーは、ウォッチングを正しく初期化します
- ただし、再起動の開始から初期スキャンの完了までの間に新しいファイルや変更を登録することはできません
- 速度: フルスキャンの約半分の時間 (~2-3 時間)
- 失われたデータ: 多く、あまり信頼できません (変更が発生しない夜間に実行しない限り)
.
さらに、私は 3 番目のオプションを検討しましたが、それが実行可能かどうかはよくわかりません。
バックアップと復元
- 実行中に、2 番目のプロセスを使用して、ウォッチャーのデータと監視を担当するすべてのオブジェクトをバックアップします。
- 再起動時に、最初のスキャンを再実行する代わりに、バックアップ プロセスで保存されたデータを使用して監視を復元します。
- その後、通常どおり作業を続けます
- 速度: ウォッチャー プロセスの再起動に数秒
- 失われたデータ: 再起動の数秒の間に正確にデータの変更が発生しない限り、おそらくありません (私の場合は十分です)。
.
ウォッチャー サービスのバックアップと復元を試したことはありますか? それとも何か考えはありますか?
.
(私の場合、ウォッチャーは node.js、chokidar、fs.watch、FSWatcherおよびいくつかのネイティブ C fs_event_wrapを使用します)