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

Linux でファイルのデータ ブロックを一覧表示するにはどうすればよいですか?

解決策 1:

「debugfs」ツールを使用して、コマンド ラインまたはインタラクティブにファイル情報を表示できます。次のいずれかを使用します:

# debugfs /dev/<spartition>
# stat /path/to/file

または

# debugfs -R "stat /path/to/file" /dev/<partition>

例:

# debugfs -R "stat /etc/passwd"  /dev/sda5
Inode: 435914   Type: regular    Mode:  0644   Flags: 0x0
Generation: 979004472    Version: 0x00000000
User:     0   Group:     0   Size: 1577
File ACL: 0    Directory ACL: 0
Links: 1   Blockcount: 8
Fragment:  Address: 0    Number: 0    Size: 0
ctime: 0x4a2d6f78 -- Mon Jun  8 23:07:20 2009
atime: 0x4a2d6f79 -- Mon Jun  8 23:07:21 2009
mtime: 0x4a2d6f78 -- Mon Jun  8 23:07:20 2009
Size of extra inode fields: 4
BLOCKS:
(0):1767438
TOTAL: 1

解決策 2:

「debugfs」の構文、特に「stat」コマンドを見てください。これにより、ファイルで使用されるデータ ブロックのリストが表示されます。 「-f」引数を使用して「debugfs」にパラメーターを渡して、スクリプトから呼び出すことができます。

解決策 3:

ブロックのリストを取得する簡単な方法 (debugfs のようにパーティションから読み取る必要はありません) 回答) は FIBMAP を使用することです ioctl。そのためのコマンドは知りませんが、書くのはとても簡単です。 Google で簡単に検索すると、FIBMAP の使用例が見つかりました。 1 つの利点は、bmap をサポートするすべてのファイルシステムで動作することです。 ext3 だけでなく、操作。

より新しい (そしてより効率的な) 代替手段は FIEMAP です エクステントに関する詳細情報も返すことができる ioctl (ext4 に役立ちます)。

解決策 4:

hdparm --fibmap /path/to/filename

zfs には取り組みませんが、ext4、btrfs、(v)fat などには取り組みます

man 8 hdparm :

<ブロック引用>

--fibmap 使用する場合、これは指定された唯一のフラグでなければなりません。パラメータとしてファイル パスが必要であり、ディスク上でそのファイルが占めるデバイス エクステント (セクタ範囲) のリストを出力します。セクター番号は、物理デバイスのセクター 0 から参照される絶対 LBA 番号として与えられます (not パーティションまたはファイルシステム)。この情報は、大きなファイルの断片化の程度を調べたり、障害挿入テスト手順中に意図的に破損する適切なセクターを決定したりするなど、さまざまな目的に使用できます。


Linux
  1. Linuxでファイルのパーミッションと所有権を別のファイルにコピーする方法

  2. Linuxファイル機能を管理する方法

  3. Linuxでファイルを見つける方法

  1. Linuxでファイルを移動する方法

  2. Linuxでファイルの名前を変更するにはどうすればよいですか?

  3. Linux のシリアル ポートでデータを監視するにはどうすればよいですか?

  1. LinuxSSコマンドの使用方法

  2. Linuxでユーザーを一覧表示する方法

  3. Linuxでファイルを作成する方法