阅读超级街区

tit*_*coy 5 inode superblock

我知道在Unix(特别是Mac OS X)中,超级块存储有关磁盘上数据布局的信息,包括inode开始和结束的磁盘地址.我想扫描程序中的inode列表以查找已删除的文件.如何找到inode开始的磁盘地址?我查看了statfs命令,但它没有提供此信息.

unw*_*ind 2

既然您提到了 Mac OS X,我们假设您只想针对 HFS+ 执行此操作。维基百科页面提供了一些有关可能的启动方式的信息,例如它关于磁盘布局的说明:

卷的扇区 0 和 1 是 HFS 引导块。它们与 HFS 卷中的引导块相同。它们是 HFS 包装器的一部分。

扇区 2 包含卷标头,相当于 HFS 卷中的主目录块。卷标头存储有关卷本身的各种数据,例如分配块的大小、指示卷创建时间的时间戳或其他卷结构(例如目录文件或范围溢出文件)的位置。卷标头始终位于同一位置。

分配文件跟踪哪些分配块是空闲的以及哪些分配块正在使用。它类似于HFS中的Volume Bitmap,每个分配块由一位表示。零表示该块空闲,一表示该块正在使用。与 HFS 卷位图的主要区别在于,分配文件作为常规文件存储,它不占用卷开头附近的特殊保留空间。分配文件还可以更改大小,并且不必连续存储在卷内。

之后事情变得更加复杂。阅读B* 树例如,

我不是 Mac OS 用户,但如果还没有编写用于扫描已删除文件的工具,我会感到惊讶,也许有些工具是开源的,可以提供更具体的起点?