特定のiノード番号に属するファイルをすばやく見つける


44

私はこのコマンドを知っています:

find /path/to/mountpoint -inum <inode number>

しかし、それは非常に遅い検索です、私はこれをするより速い方法がなければならないと感じます。誰もがより速い方法を知っていますか?


iノードを使用して検索するのはこれが初めてです。iノードで検索する必要があるのはいつですか?
コーレン

@Coren-たとえば、ファイルの前に「-」が付いている場合によく使用されます。ls -liを実行して、そのiノードを見つけてから、findを実行できます。-inum <inode> -exec rm -i {} \; これは、ファイルを削除できるようにするためのベルトアンドブレーサーアプローチです。もちろん、「rm--filename」、またはrm ./-filename、またはrm "-filename"を使用することもできます。
スイス

2
seCoreの@Corenでは、ログメッセージにはiノードが含まれますが、フルパスは含まれません。したがって、参照されているファイルを見つけるには、iノードを検索する必要があります。(とにかく私のユースケース)
パトリック

1
@Corenたとえば、ファイルに複数のハードリンクがある場合、コンテンツが廃止されてファイルを削除したいが、ファイル名の1つだけを見つけて、他のファイルを削除したいことがわかりました。
ジル 'SO-悪であるのをやめる

2
使用するだけfind / -inum <inode>です。それははるかにポータブルでdebugfsあり、はるかに確実に動作します(たとえば、デバイスのようなハードドライブ上のファイルに属さないパスを見つけることができます)。
7heo.tk

回答:


33

ext4ファイルシステムの場合debugfs、次の例のように使用できます。

$ sudo debugfs -R 'ncheck 393094' /dev/sda2 2>/dev/null
Inode   Pathname
393094  /home/enzotib/examples.desktop

答えはすぐに得られるものではありませんが、より良いようですfind
取得した出力は、ファイル名を取得するために簡単に解析できます。


おそらくファイルシステムのタイプを指定する必要がありました。これらのことを行う方法がファイルシステムごとに異なることは私には思いもしませんでした。私はXFSを使用しているので、あなたの答えは正しいと確信していますが、具体的には役に立ちません。
アレックス

6

btrfs

man btrfs-inspect-internal 言う:

   inode-resolve [-v] <ino> <path>
       (needs root privileges)

       resolve paths to all files with given inode number ino in a given
       subvolume at path, ie. all hardlinks

       Options

       -v
           verbose mode, print count of returned paths and ioctl()
           return value

例:

  • sudo btrfs inspect-internal inode-resolve 15380 /home

0

ほとんどのUnicesにあるfsdbコマンドを見ることができ、Linuxのどこかで入手できます。これは、ファイルのインコアiノード構造にアクセスできる強力なコマンドなので、注意してください。構文も非常に簡潔です。

AIXのfsdb

Solarisのfsdb再リンクファイル

fsdbでは実際にiノードのファイル名を検出することできませんが、指定するとiノードに直接アクセスできます。つまり、本質的にはファイル自体(または少なくともデータブロックポインター)に「移植」します。その点では、検索よりも速く;-)。
あなたの質問は、あなたがファイルで何をしたいかを指定しません。NFSファイルハンドルをデコードしている可能性はありますか?

sc。


まあ、私は私が情報で何をしようとしていたかが私の質問に関連しているとは思わなかったので、私はそれを省いた。私の場合、それは単なる好奇心の質問でした。私のxfs_fsrデフラグは、どのiノードがデフラグするかを吐き出し、1つは極端に断片化されていて(5000エクステント以上)、どのファイルなのか興味がありました。find動作しますが、とても遅いです。
アレックス

私はrhel vmがブートごとにフル(20分!)fsckを実行するという問題を修正しようとしています。(それを言って、-inumは実際にそれを見つけることができませんでした見つける。)
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.