Linuxにファイル インデックス データベースがあります。現在、ファイルパスを識別子として使用しています。しかし、ファイルが移動/名前変更された場合、そのパスが変更され、DB レコードを新しいファイルに一致させることができず、レコードを削除/再作成する必要があります。さらに悪いことに、ディレクトリが移動/名前変更された場合、すべてのファイルとネストされたディレクトリのレコードを削除/再作成する必要があります。
一意のファイル識別子としてinode番号を使用したいのですが、ファイルを削除して別のファイルを作成すると、inode 番号を再利用できます。
{inode,crtime}
では、一意のファイル識別子として のペアを使用できるかどうか疑問に思っています。ext4 では i_crtime を、NTFS では creation_time を使用したいと考えています。私の限定的なテスト (ext4 を使用) では、同じファイル システム内でファイルやディレクトリの名前を変更したり移動したりしても、inode と crtime は変更されません。
したがって、問題は、ファイルの inode または crtime が変更される場合があるかどうかです。たとえば、fsck、最適化、またはパーティションのサイズ変更によって、inode、crtime、またはファイルが変更される可能性がありますか?
http://msdn.microsoft.com/en-us/library/aa363788%28VS.85%29.aspxが言う興味深い :
- " NTFS ファイル システムでは、ファイルは削除されるまで同じファイル ID を保持します。 "
さらに: - "場合によっては、ファイルのファイル ID が時間の経過とともに変化することがあります。 "
それで、彼らが言及したそれらのケースは何ですか?
私は同様の質問を研究したことに注意してください:
しかし、彼らは私の質問に答えません。