いくつかの解決策はおそらく Windows に適用できる可能性がありますが、私は Windows OS に詳しくないため、これは Linux に焦点を当てたものになります。
私の知る限り、Unix ファイル システムにはすべて、ファイル システムのメタデータと「ファイル」が格納される inode の概念があります。したがって、名前が変更されたり移動されたりしたファイルを追跡するために、iノード番号と追加情報を使用できるかどうか疑問に思っていますか?
私が提案していたのは、ファイル名/パスのデータベース、それが配置されているディスク/ドライブ、i ノード番号、そして最後にある種のチェックサム (sha-1) を作成する初期スキャンを行うことでした。
これにより、システムは inode 番号を使用して、ファイルが移動または名前変更されたかどうかをすばやく検出できるようになり、チェックサムを追跡して、実際に同じファイルであるかどうかを確認できます。
このスキームにはいくつかの問題がある可能性があります。
- ファイルが変更されてから移動/名前変更される可能性がありますが、チェックサムが一致しないため、ファイルを検出できませんでした。
- 一部の (ほとんどの?) アプリケーションは、ファイルを変更するときに新しい一時ファイルを作成し、それを現在のファイルに切り替えるため、ファイルが最後に変更されていない場合でも inode は一致しません。
- 各ファイル システムの inode はそのファイル システムに固有であるため、どのデバイス/ファイル システム上にあるかを保存する必要があります。
- ハードリンクに対処する必要がある
ここで忘れている他の問題があるかどうか疑問に思っていますか? iノードを使用して、移動または名前変更されたファイルをすばやく追跡し、チェックサムを追跡して、実際に同じファイルであることを確認できるようにしたいと考えていました。