inode番号でファイルを開く

inode番号でファイルを開く

inodeに割り当てられたブロックを正確に見つけてファイルを見る方法はありますか?ライブ CD に入れる必要はありませんが、次の作業を行う必要があります。

cat verylongsentice > a
ls -i a
101010 a
ln a /some/random/path
rm a
inode_find 101010
verylongsentice

これを行う方法はありますか?ルートですか、それともライブCDですか?ファイル名には興味がありません。削除されたファイルでも同じことができますか?

答え1

削除されたファイルにはinode番号がありません。さらに、inode番号が不変であるか、すぐに再利用されないという保証はありません。

あなたの質問の下のコメントで、あなたはあなたが望むことがうまくいくべきであると非常に断固として言いました。次のような行為はしてはいけません。

ファイル名ではなく、inode nrで直接ファイルを開くと、POSIXファイルの動作と直接競合します。また、ファイルパスによってそのファイルにアクセスできるかどうかが決定されるPOSIX権限モデルと互換性がありません。

したがって、Linuxカーネルはinodeを介してファイルを開くAPIを提供できません。

ファイルがまだ存在し、ファイルシステムが実際にinodeを保存している場合(ほとんどのファイルシステムは実際のinode番号を保存しないようです。これは大規模なファイルシステムを構成する恐ろしい方法ですが、おそらく1970年代の残りの部分です)ドライバはディレクトリツリー構造(おそらく他のもの)の適切な場所からinode nrを計算し、ファイルシステム全体に入り、find /mountpoint -i {number}そのinode番号を持つファイルを見つけることができます。削除された場合、そのファイルはもう存在しません。存在します。見つかりません。

関連情報