オープンソースプロジェクトの場合、ファイルシステムの上に抽象化レイヤーを作成しています。
このレイヤーを使用すると、メタデータと関係を各ファイルに添付できます。
ファイルの名前変更を適切に処理し、ファイルの名前変更/移動またはコピーが行われた場合にメタデータを維持するレイヤーが必要です。
これを行うには、ファイルのIDを計算するためのメカニズムが必要になります。明らかな解決策は、ファイルごとにSHA1ハッシュを計算してから、そのハッシュに対してメタデータを割り当てることです。しかし...それは特に映画にとっては本当に高価です。
ですから、100%正確ではありませんが、ほとんどの場合正しく、安価なアルゴリズムを考えていました。
そのようなアルゴリズムの1つは、ファイルサイズとそのファイルのバイトのサンプルを使用してハッシュを計算することです。
サンプルにはどのバイトを選択する必要がありますか?計算を安価で適度に正確に保つにはどうすればよいですか?ここにはトレードオフがあることは理解していますが、パフォーマンスは重要です。また、ユーザーはシステムがミスを犯した状況に対処できるようになります。
非常に大きなファイル(1GB以上および小さなファイル5K)で機能するには、このアルゴリズムが必要です。
編集
NTFSおよびすべてのSMB共有(LinuxまたはWindowsベース)で機能するには、このアルゴリズムが必要です。ファイルが1つの場所から別の場所にコピーされる状況をサポートしたいと思います(2つの物理コピーが存在する場合は1つのIDとして扱われます)。MP3が再タグ付けされている状況でこれを機能させることを検討することもできます(物理ファイルが変更されているため、ファイルタイプごとにIDプロバイダーがある場合があります)。
編集2
関連する質問:ファイルのIDを決定するためのアルゴリズム(最適化)