使用 testdisk 恢复 ext4 文件系统残余

使用 testdisk 恢复 ext4 文件系统残余

重点来了:testdisk 能够浏览文件系统和层次结构(显然就像它是完整的一样),并且单独地恢复文件。有没有办法让它自动完成所有恢复工作?


故事:

我正在使用不可变 gddrescue 克隆(扇区到扇区复制)的 dd 克隆,该克隆来自一个不稳定的外部 USB 3TB 驱动器,该驱动器在 ~2016 rPI 上使用到 2017 年 10 月。我相信它包含 2 个分区:6GB 和 ~3TB(??)。6GB 已恢复并安装。在克隆过程中,ddrescue 无法在驱动器的 25 个区域中抓取 ~1MB(总计)。

我的目标是尽可能多地挽救大分区文件组织、文件和修改时间。最重要的部分已被使用,但失去了组织(大部分价值)。

我现在正在使用 Ubuntu 16.04.03LTS,不可变克隆分区表的边界错误,我使用 testdisk 将一个合理的分区表写入恢复驱动器 - 并恢复了第一个小分区的文件系统。有趣的是,fdisk 报告驱动器标签类型和 DOS 一样,并提到了限制(2^32 个扇区?),testdisk 写入的大分区显示只有 2TB。使用 parted,我将其更改为 GPT,现在它有完整的 ~3TB,有 ~5.86G 扇区。

第二个分区文件系统可以使用 testdesk 导航,我可以单独保存文件。但文件数量可能超过一百万。


问题:这告诉我一些文件系统存在且部分完好无损 - 但我不知道如何使用 testdisk自动地捕获现有的文件结构和文件。

testdisk 能做到这一点吗?或者是否有其他工具可以利用文件系统中的优点?可能将代码添加到 testdisk 以自动执行此操作是一种合理的方法吗?


另一种方法:使用 testdisk '修复' 分区表后,分区 2 (~3TB) 上的 e2fsck 报告:

“文件系统大小(根据超级块)为 730993525 块 设备的物理大小为 536870911 块 超级块或分区表可能已损坏!””

运行 mke2fs -S 然后运行 ​​e2fsck 会导致到处都是错误,并且没有留下任何有价值的东西。

很可能在 2017 年 10 月,mke2fs -S 在第二个分区上运行,但使用原始损坏的分区表。


第三种方法:Testdisk 对我来说相当不透明,所以我编写了一个程序来查找超级块,并验证了它们的最后一个挂载点等。因此,我确信驱动器确实包含来自大分区的完整超级块。如果我有一个超级块,我可以以某种方式使用它,以便 e2fsck 可以完成其余工作吗?然而,我想象超级块将仅具有相对于分区开头的块地址。由于超级块必须位于多个位置之一(并且具有已知的跳过模式),​​也许我可以使用该信息来分配正确的分区开头位置?

短暂性失眠!

答案1

e2fsck你在用 testdisk-discovered 超级块寻找什么?在>[ Advanced ] Filesystem Utils命令下>[Superblock]应该“找到 ext2/ext3/ext4 备份超级块”类似如下:

TestDisk 7.0, Data Recovery Utility, April 2015
Christophe GRENIER <[email protected]>
http://www.cgsecurity.org

Disk 1 - 104 MB / 100 MiB - CHS 13 255 63

     Partition                  Start        End    Size in sectors

  ext2                     0   0  1    12 190 50     204800
superblock 0, blocksize=1024 []
superblock 8193, blocksize=1024 []
superblock 24577, blocksize=1024 []
superblock 40961, blocksize=1024 []
superblock 57345, blocksize=1024 []
superblock 73729, blocksize=1024 []

To repair the filesystem using alternate superblock, run
fsck.ext2 -p -b superblock -B blocksize device


>[  Quit  ]
                            Return to Advanced menu

然后尝试使用不同的超级块执行建议的 fsck.ext2 / e2fsck 命令,直到找到一个“好的”超级块。


此外,Testdisk 似乎能够复制整个文件夹,因此如果大部分文件系统仍然存在,那么可能只需要手动复制根目录中的文件夹,并且所有子文件夹和文件也将被复制。

希望根目录中只有几个,而不是数百万个,尽管:选择稍后复制的文件会移动到下一个文件,并a选择所有文件(在该文件夹中)

这是从根目录复制“下载”文件夹后的“屏幕截图”(它包含 2 个文件,并且消息Copy done! 2 ok, 0 failed为绿色):

TestDisk 7.0, Data Recovery Utility, April 2015
Christophe GRENIER <[email protected]>
http://www.cgsecurity.org
   P ext2                     0   0  1    12 190 50     204800
Directory /
Copy done! 2 ok, 0 failed
 drwxr-xr-x     0     0      1024 17-Jan-2018 07:50 .
 drwxr-xr-x     0     0      1024 17-Jan-2018 07:50 ..
 drwx------     0     0     12288 17-Jan-2018 07:49 lost+found
 drwxr-xr-x     0     0      1024 17-Jan-2018 07:50 Documents
>drwxr-xr-x     0     0      1024 17-Jan-2018 07:50 Downloads



                                                   Next
Use Right to change directory, h to hide deleted files
    q to quit, : to select the current file, a to select all files
    C to copy the selected files, c to copy the current file

相关内容