3

我一直在使用dd_rescue恢复硬盘,它为我提供了由于硬件错误而无法复制的所有设备扇区的列表。

我想拿那个列表,写一个工具给我所有包含这些坏扇区的文件,这样我就可以删除它们。我不确定我可以使用哪些 API 来执行此操作 - 基本上我想获取磁盘上所有文件的列表以及每个文件在磁盘上占用的扇区范围的列表。

我的第一个猜测是我将遍历磁盘上的每个目录条目并检查文件是否与这些坏扇区中的一个重叠。也许有更好的方法。

4

3 回答 3

2

这是一个古老的问题,但由于在搜索该主题时它仍然是热门话题之一,因此对所有搜索过的人来说:

由于 Mac OS X 10.6 fsck_hfs(8)可以将物理扇区映射到文件(参见选项 -B)。使用注意事项:只有在实际执行了目录检查时,匹配才会成功。因此,您可能必须使用选项 -l 或 -f 强制检查。

顺便说一句,hfsdebug 作为 PPC 二进制文件依赖于 Rosetta,因此不会在 Lion 或更高版本上运行。

于 2013-06-08T12:00:30.767 回答
2

没有公开用于通过 HFS+ 文件系统进行 grubbing 的 API,但文件系统的源代码可从 Apple 作为 XNU 内核的一部分获得。另请查看可能有助于理解 fs的hfsdebug工具。

于 2009-09-09T14:55:10.797 回答
2

如果要将文件的数据位置映射到物理块(扇区),可以使用fcntl(2)调用和 F_LOG2PHYS 命令。并非所有文件系统都支持此命令,但 HFS+ 支持。只需使用 lseek 选择文件偏移量,您就可以从 F_LOG2PHYS 取回磁盘偏移量(它在 l2p_devoffset 字段的 struct log2phys 中返回)。有关详细信息,请参阅 fcntl.h。

于 2011-03-05T20:11:12.273 回答