2014
04/21
LBAからNTFSのファイルを特定する1
Windows7でデータ用に使っていたHDDでC6が出ました。
バックアップから全復元は容量的に時間がかかりすぎるのと、
あと技術的興味もあって、問題のセクタの直上にあるファイルを
ピンポイントで探す方法を模索してみました。
まず問題のLBAです。
smartctl -l selftest /dev/sdc

ツールはlinuxで使い慣れているsmartmontoolsを使っています。
今回はselftestが途中で止まるような状況だったのですぐわかりました。
2191318632と出ていますね。
物理セクタからファイル名を調べるには、
マイクロソフトがOEM向けに提供してるツールがあります。
少し古そうな感じですがWindows7(64bit)でも動きました。
OEM Support Tools
解凍するといろいろ出てきますが、使うのはnfiフォルダに入ってるnfi.exeだけです。
構文はこんな感じです。詳細は画像で確認して下さい。
nfi <ドライブレター> <物理セクタ番号>
nfi <NTドライブパス> <物理セクタ番号>
nfi /?

デバイスの指定にはドライブレター(C:とかD:とか)も可能ですが
セクタ指定の基準点がパーティションの先頭になってしまうので、
今回はNTドライブパスというのを指定してみます。
NTドライブパスは「\Device\Harddisk0\DR0」のような形式です。
目的のHDDのパスを確認するにはWinObjというツールが便利です。

私の環境だとこうなります。
nfi \device\harddisk2\dr2 2191318632

ここでファイル名がわかる場合もあるようですが、
今回は残念ながら親フォルダまでしかわかりませんでした。
(実行結果の「D.\Users\*****\Videos\」という所です)
なのでちょっと別の方法をとりました。
続きは別記事です。
バックアップから全復元は容量的に時間がかかりすぎるのと、
あと技術的興味もあって、問題のセクタの直上にあるファイルを
ピンポイントで探す方法を模索してみました。
まず問題のLBAです。
smartctl -l selftest /dev/sdc

ツールはlinuxで使い慣れているsmartmontoolsを使っています。
今回はselftestが途中で止まるような状況だったのですぐわかりました。
2191318632と出ていますね。
物理セクタからファイル名を調べるには、
マイクロソフトがOEM向けに提供してるツールがあります。
少し古そうな感じですがWindows7(64bit)でも動きました。
OEM Support Tools
解凍するといろいろ出てきますが、使うのはnfiフォルダに入ってるnfi.exeだけです。
構文はこんな感じです。詳細は画像で確認して下さい。
nfi <ドライブレター> <物理セクタ番号>
nfi <NTドライブパス> <物理セクタ番号>
nfi /?

デバイスの指定にはドライブレター(C:とかD:とか)も可能ですが
セクタ指定の基準点がパーティションの先頭になってしまうので、
今回はNTドライブパスというのを指定してみます。
NTドライブパスは「\Device\Harddisk0\DR0」のような形式です。
目的のHDDのパスを確認するにはWinObjというツールが便利です。

私の環境だとこうなります。
nfi \device\harddisk2\dr2 2191318632

ここでファイル名がわかる場合もあるようですが、
今回は残念ながら親フォルダまでしかわかりませんでした。
(実行結果の「D.\Users\*****\Videos\」という所です)
なのでちょっと別の方法をとりました。
続きは別記事です。