簡単な作業を行ったときにファイルシステム全体を繰り返し/検索するのを見て驚きました。
find -inum 12345
背景情報がない場合は、この特定のinode 12345(単なるプレースホルダーである)を持つすべてのファイルをより簡単に知るための方法が必要です。
もっと良い方法がありますか?ファイルシステムのディレクトリ構造全体を確認する代わりに、どのファイル名が inode に関連付けられているかを確認してください。
修正する
この問題を解決するための別の質問があります。 特定のinode番号に属するファイルをすばやく検索します。 しかし、目標はより良い(より速い方法)を見つけることです。
より直接的な質問は、なぜそのような問題が発生するのかを知ることです。おそらく権限などに関連する妥当な理由があるかもしれません。これは、意図的にユーザーがinodeのすべてのファイル名を見つけるためにディレクトリ構造を参照するのを避けるのを難しくすることです。
それにもかかわらず、すべてのファイルシステムでinode(少なくとも権限を持つユーザーに)にすべてのファイル名を知らせるのに問題があることroot
は奇妙です。
この質問に最も答えたいファイルシステムは(重要であれば)ext4です。
ベストアンサー1
非常に単純な理由は、少なくともext2/ext3/ext4タイプのファイルシステムの場合、ファイル名が渡されるためです。ディレクトリエントリデータはディレクトリ形式のファイルに保存されます。
これは、型ディレクトリ内の対応するファイルが(ディレクトリ内のファイル内の)ファイル名とそのファイルに関連付けられているデータのinodeを格納するためのかなり複雑なシステムを持っていることを意味します。
やや簡素化されています(ext3/4は、ハッシュテーブル拡張を使用してディレクトリツリーのナビゲーションを高速化するなど)。次のリストのように見えます。
## filenames ## ## inode-numbers ##
filename1 0123
filename2 01242
anotherfilename 3313
yetanotherfilename 11233
デフォルトではファイル名ディレクトリファイルに関連するデータ内でのみ発生します。メタデータはどこにも保存されませんファイルシステムストレージ/のインデックスノードについて。したがって、inode番号に関連付けられたファイル名を取得する唯一の方法は、すべてのディレクトリファイルのすべてのディレクトリエントリを繰り返すことです。