回答:
「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
path/to/file
すべての場合に機能しないのですか?私を混乱させてdebugfs ..... /dev/fs_blockdev
いるのは、私の理解では、これまでに考慮されたファイルシステムは1つだけであり、このシステム内のすべてのファイルは、パスまたはtino iノードのいずれかでアクセスできるということです、あなたは何を表現したいですか?
debugfs -R "stat /home/myuser/foo.txt" /dev/sda5
れている場合、エラーが発生します。しかし、呼び出しはdebugfs -R "stat /path/on/rootfs" /dev/sda3
機能します。
sudo
、さもないといくつかの役に立たないメッセージが表示されます。
「debugfs」の構文、特に「stat」コマンドを見てください。これにより、ファイルで使用されるデータブロックのリストが表示されます。「-f」引数を使用してパラメータを「debugfs」に渡し、スクリプトから呼び出すことができます。
ブロックのリストを取得する簡単な方法(debugfs
答えのようにパーティションから読み取る必要なし)は、FIBMAP
ioctl を使用することです。そうするためのコマンドは知りませんが、それを書くのはとても簡単です。Googleで簡単に検索すると、FIBMAPの使用例がわかりました。1つの利点は、bmap
ext3だけでなく、操作をサポートする任意のファイルシステムで動作することです。
新しい(より効率的な)代替手段はFIEMAP
ioctlで、エクステントに関する詳細情報を返すこともできます(ext4に有用)。
hdparm --fibmap /path/to/filename
私はzfsでは動作しませんが、ext4、btrfs、(v)fatなどでは動作します
--fibmap
使用する場合、これは指定された唯一のフラグでなければなりません。パラメーターとしてファイルパスを必要とし、ディスク上のそのファイルが占有するデバイスエクステント(セクター範囲)のリストを出力します。セクター番号は、パーティションまたはファイルシステムではなく、物理デバイスのセクター0から参照される絶対LBA番号として指定されます。この情報は、大きなファイルの断片化の程度を調べたり、障害注入テスト手順中に意図的に破損する適切なセクターを決定するなど、さまざまな目的に使用できます。
e2fsck -b 32768 / dev / hda1これを試すことができると思うか、同じuでさらにdocxを探している場合は、以下を確認できます
http://www.linux-tutorial.info/modules.php?name=MContent&pageid=97
File not found by ext2_lookup
。そのため、statの引数にiノード表記を使用することをお勧めします。ls -i
ファイルのiノード番号を取得するために使用し、/ path / to / fileの代わりに '<>'でその番号を使用してdebugfsを呼び出します。例:# debugfs -R "stat <1234567>" /dev/sda2