0

特定のファイルの情報を保存するアプリケーションを作成しています。ファイルを追跡する最良の方法は何だろうと思っていました。ファイルの絶対パスを使用することを考えていましたが、ファイルの名前が変更されると変更される可能性があります。ls -i を実行すると、各ファイルの横に一意の (?) ID があることがわかりました。一意のファイル ID に使用してもよろしいですか?

4

2 に答える 2

2

inode はデバイスごとに一意ですが、使用することはお勧めしません。ボックスがクラッシュし、すべてのファイルが新しいファイル システムに移動され、すべてのファイルに新しい ID が割り当てられたと想像してください。

選択した言語によって異なりますが、ほとんどすべての言語に UUID を生成するためのライブラリが含まれています。衝突は理論的には可能ですが、それはまったく問題ではありません。UUID を生成して、ファイルの先頭に追加すれば、ビジネスは完了です。実装が拡大するにつれて、ファイルの HashTable インデックスを作成して、後ですばやく検索することもできます。

于 2012-04-29T17:53:40.227 に答える
0

問題は、「何に対してユニークか」です。

特定の時点で特定のマシンで一意のものが必要な場合、はい、inode 番号 + デバイス番号はほぼ常に一意です。これらは、C では stat() など、Python では os.stat() から取得できます。 . ただし、ファイルを削除して別のファイルを作成すると、inode 番号が再利用される場合があります。また、2 つの異なるホストは、デバイスと inodeno のペアが何であるかについて、まったく異なる考えを持っている場合があります。

ファイルの内容を説明する必要がある場合 (つまり、同じ内容の 2 つのファイルが同じ ID を持つ場合)、SHA または RIPEMD 関数のいずれかを調べることができます。これは非常にユニークです - 偶発的な衝突の可能性は天文学的に低いです.

他の形式の一意性が必要な場合は、詳しく説明してください。

于 2012-04-29T20:57:51.330 に答える