GNU/Linux >> Linux の 問題 >  >> Linux

Linux および ext3/4 で raw デバイスのオフセットから i ノード/ファイルを逆引きしますか?

同様のことをしなければならなかったので、解決策を共有したいと思いました.

udisks --show-info 出力の 'offset' 要素と 'size' 要素を確認することで、ドライブ バイト オフセットが属するパーティションを確認できます。例

[email protected]:~$ sudo udisks --show-info /dev/sda1 | grep -i 'offset'
    offset:                    1048576
    alignment offset:          0

このオフセットをディスク オフセットから差し引いて、パーティションへのバイト オフセットを取得します。したがって、/dev/sda のディスク オフセット (10000000) は、/dev/sda1 のパーティション オフセット (10000000 - 1048576) =8951424 です。

次のコマンドを使用して、パーティション内のブロックの大きさを確認できます:

[email protected]:~$ sudo tune2fs -l /dev/sda1  | grep -i 'block size'
Block size:               4096

パーティション バイト オフセットをブロック サイズで割り、ブロック オフセットを決定します。この場合、8951424 / 4096 =2185

次のコマンドを実行して、そのブロックを占有している inode を確認してください:

[email protected]:~$ sudo debugfs -R "icheck 2185" /dev/sda1
debugfs 1.41.11 (14-Mar-2010)
Block   Inode number
2185    123456 

次に、次のコマンドを実行して、その inode のファイル名を確認します:

[email protected]:~$ sudo debugfs -R "ncheck 123456" /dev/sda1
debugfs 1.41.11 (14-Mar-2010)
Inode   Pathname
123456  /tmp/some-filename.txt

http://www.randomnoun.com/wp/2013/09/12/determining-the-file-at-a-specific-vmdk-offset

で、これがどのように行われるかについてのより長い説明があります。
Linux
  1. ターミナルウィンドウからLinuxでファイルを作成するには?

  2. fdiskで作成したファイルシステムとmkfsで作成したファイルシステムの違い - linux

  3. Linux から exFAT パーティションを作成してフォーマットする

  1. EXT4 / EXT3/EXT2およびスワップでLinuxパーティションラベル名を変更する方法

  2. Linux は、実際のファイルと存在しない (例:デバイス) ファイルをどのように区別しますか?

  3. Android - Androidデバイスとの間でファイルを転送するLinuxプログラム?

  1. Linuxでコマンドラインからファイルとディレクトリを削除する方法

  2. Linuxでコマンドラインからファイルを分割して結合する方法

  3. Linuxでの偶発的なファイル削除を防止および回復する方法