ディスクの物理セクターを、Mac OS X 上の HFS+ ボリューム上に含まれるファイルにどのようにマッピングするのでしょうか。

StackOverflow https://stackoverflow.com/questions/1384436

質問

を使用してハードディスクを回復しています dd_レスキュー, 、ハードウェア エラーによりコピーできなかったすべてのデバイス セクターのリストが表示されます。

そのリストを取得して、これらの不良セクタを含むすべてのファイルを提供して削除できるようにするツールを作成したいと考えています。これを行うためにどの API を使用できるかわかりません。基本的に、ディスク上のすべてのファイルのリストと、ファイルごとに、ディスク上で占有されているセクターの範囲のリストを取得したいのです。

私の最初の推測は、ディスク上の各ディレクトリ エントリを反復処理して、ファイルがこれらの不良セクタの 1 つと重なっているかどうかを確認することです。もしかしたらもっと良い方法があるかもしれません。

役に立ちましたか?

解決

ファイルのデータの場所を物理ブロック (セクター) にマップする場合は、 fcntl(2) F_LOG2PHYS コマンドで呼び出します。すべてのファイル システムがこのコマンドをサポートしているわけではありませんが、HFS+ はサポートしています。lseek を使用してファイル オフセットを選択するだけで、F_LOG2PHYS からディスク オフセットを取得できます (l2p_devoffset フィールドの struct log2phys で返されます)。詳細については、fcntl.h を参照してください。

他のヒント

HFS+ ファイルシステムを介した Grubbing 用に公開されている API はありませんが、 ファイルシステムのソース XNU カーネルの一部として Apple から入手できます。こちらもチェックしてください hfsデバッグ fs を理解するのに役立つツール。

これは、古い質問ですが、トピックを検索するとき、それはまだトップヒットの間であることから、ここで検索すべての人にです。

はMac OS X 10.6以降 fsck_hfs (8)のファイル(-Bオプションを参照)に物理セクタをマッピングすることができます。取り扱い上の注意:カタログのチェックが実際に行われた場合、マッチングは唯一の成功となります。 -lまたは-fオプションでチェックを強制する必要がある場合がありますので、あなたは。

ところで、PPCバイナリとしてhfsdebugはロゼッタに依存しているため、ライオンに以降実行されません。

ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top