代码之家  ›  专栏  ›  技术社区  ›  Joey Hagedorn

如何将磁盘的物理扇区映射到Mac OS X上HFS+卷上包含这些扇区的文件?

  •  3
  • Joey Hagedorn  · 技术社区  · 15 年前

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

    我想取下这个列表,并编写一个工具来给我提供包含这些坏扇区的所有文件,以便删除它们。我不确定我能用什么API来实现这一点——本质上我想得到一个磁盘上所有文件的列表,对于每个文件,一个它在磁盘上所占扇区范围的列表。

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

    3 回复  |  直到 12 年前
        1
  •  2
  •   Don J Brady    14 年前

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

        2
  •  1
  •   user23743    15 年前

    没有为通过hfs+文件系统进行挖掘而公开的API,但是 source for the filesystem 作为XNU内核的一部分,可从Apple获得。同时查看 hfsdebug 有助于理解fs的工具。

        3
  •  1
  •   MacXperte    12 年前

    这是一个古老的问题,但由于它仍然是搜索主题时的热门话题,以下是所有搜索者:

    从Mac OS X 10.6开始 fsck_hfs(8) 可以将物理扇区映射到文件(请参见选项-b)。有关用法的说明:只有在实际执行目录检查时,匹配才会成功。所以你可能需要强制检查选项-l或-f。

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