几天前,我的 ext4 格式闪存卡上的所有元数据都被覆盖了。
我现在要推测这是如何发生的。这纯粹是猜测。我使用另一张卡后就发生了这种情况。该卡上的卷标现在与其他卡相同。所以我怀疑当我拉动另一张卡时,我未能同步/卸载另一张卡。当卡被拔出时,读卡器无法正确通知系统,因此下一个系统生成同步,系统不知道我更换了卡,并且它覆盖了元数据。
发生这种情况时我做的第一件事是使用 dd 创建一个图像。我做的第二件事是将图像设为只读。我做的第三件事是制作图像的可写副本。
我发现了 photorec,它成功地恢复了一些东西,但不是全部。我认为原因之一是它是非破坏性的。
由于一些恢复的文件是文本,我怀疑 photorec 使用了有关文件格式的最少信息(如果有)。
要尝试从卡中恢复任何其他文件,我需要知道文件在 ext2 中的布局方式。我怀疑基本原理是文件被分成块,这些块被写入扇区,并且如何找到下一个扇区的信息以某种方式写入当前扇区。
我最需要的是有关如何写入下一个扇区的指针的信息。
PS:我正在阅读 photorec 代码,但阅读时遇到一些问题。是我的问题还是代码丑陋,我不知道。
PPS:我找到了一些有关 ext 文件系统如何布局的信息,但似乎找不到基本的文件布局信息。
答案1
PhotoRec 扫描磁盘(或磁盘映像),搜索看起来像已知文件格式的连续字节块(例如,它可以通过段标头识别 JFIF/EXIF (JPEG))。非常简单但有限。
侦探套件是一个深入研究文件系统的好工具。只要稍加小心(并为其工具编写脚本并在磁盘映像误入歧途时对其进行十六进制编辑),它就可以用于恢复。
对于更深入理解 ext 的工具,请尝试ext4magic? (我还没有需要使用这个。)
Documentation/filesystems/ext2.txt
内核源代码中有一般结构的高级概述。这Ext4 维基有很好的信息,包括Ext4 磁盘布局包含更多详细信息(主要也适用于 ext[23])。
但是,是的,文件的数据被分成块。在 ext2 中,每个文件都由一个 inode 表示,该 inode 包含直接块(指向数据块的指针)、间接块(包含指向直接块的指针)、双间接块和三重间接块。没有反向链接,因此要找到数据块的同级,您必须首先扫描所有索引节点和块指针以找到其所有者。