我知道在 Unix(特别是 Mac OS X)中,超级块存储有关磁盘上数据布局的信息,包括 inode 开始和结束的磁盘地址。我想扫描程序中的索引节点列表以查找已删除的文件。如何找到 inode 开始的磁盘地址?我查看了 statfs 命令,但它没有提供此信息。
既然您提到了 Mac OS X,我们假设您只想针对 HFS+ 执行此操作。这维基百科页面 http://en.wikipedia.org/wiki/HFS_Plus提供了一些有关可能的启动方式的信息,例如它说明了有关磁盘布局的信息:
卷的扇区 0 和 1 是 HFS 引导块。它们与 HFS 卷中的引导块相同。它们是 HFS 包装器的一部分。
扇区 2 包含卷标头,相当于 HFS 卷中的主目录块。卷标头存储有关卷本身的各种数据,例如分配块的大小、指示卷创建时间的时间戳或其他卷结构(例如目录文件或范围溢出文件)的位置。卷标头始终位于同一位置。
分配文件跟踪哪些分配块是空闲的以及哪些分配块正在使用。它类似于HFS中的Volume Bitmap,每个分配块由一位表示。零表示该块空闲,一表示该块正在使用。与 HFS 卷位图的主要区别在于,分配文件作为常规文件存储,它不占用卷开头附近的特殊保留空间。分配文件还可以更改大小,并且不必连续存储在卷内。
之后事情变得更加复杂。继续阅读B* trees http://en.wikipedia.org/wiki/B*-tree, 例如。
我不是 Mac OS 用户,但如果还没有编写用于扫描已删除文件的工具,我会感到惊讶,也许有些工具是开源的,可以提供更具体的起点?
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)