我意外地格式化了我的一个驱动器,我希望能够恢复文件系统的主要部分,因为我“仅”进行了快速格式化。
在安装了第二块相同的硬盘后,我意外地通过 Ubuntu (14.04) 的磁盘应用程序快速格式化了错误的驱动器。该驱动器之前是 ext4 格式,我又将其快速格式化为 ext4。驱动器上只有一个分区。损坏发生几秒钟后,我卸载了驱动器以避免意外写入。
我想要的文件是二进制格式(据我所知没有扩展名,例如.npy
.t7
.mat
),有些是.txt
文件。
通过阅读论坛和博客,我了解到 Testdisk+Photorec 可能能够帮助恢复丢失的分区。我快速尝试了 Photorec,但由于大多数重要文件都是二进制文件且没有文件签名,最终我得到了数千个无用.txt
文件和不可读.mat
文件。另一方面,据我所知,Testdisk 显示不确定的提示。我还没有尝试进行深度扫描,因为我预计信息应该位于驱动器的最开头(驱动器为 8TB)。有关更多信息,请参阅以下 Testdisk 快照:
分区选择屏幕
选择“无”作为分区类型后的高级菜单
- 选择 EFI-GPT 或 Intel 作为分区类型会导致 Testdisk 告诉我没有可用的分区。
分析驱动器(选择 None 类型后)会发现分区为空(除了一个空的 lost+found)。相比之下,选择 GPT 类型后分析驱动器会发现许多相同的此类条目:ext4 0 0 1 972801 80 63 156280533168
超级街区:
superblock 0, blocksize=4096
superblock 32768, blocksize=4096
superblock 98304, blocksize=4096
superblock 163840, blocksize=4096
superblock 229376, blocksize=4096
superblock 294912, blocksize=4096
superblock 819200, blocksize=4096
superblock 884736, blocksize=4096
superblock 1605632, blocksize=4096
superblock 2654208, blocksize=4096
问题
当选择快速格式化时,Ubuntu 具体对驱动器做了什么?我们能否由此推断是否有可能恢复文件系统?
我可以使用超级块恢复结构的部分内容吗?我读到过在位置 1024 处写入了备份超级块。该超级块可以恢复吗?还是也已通过快速格式化将其清除?
除了 Photorec 或 Scalpel 等文件恢复之外,我还有哪些选项可以恢复我的文件系统?我知道一些我想恢复的最重要的文件的完整路径。
答案1
我成功地使用备份 Superblock 恢复了所有文件!在 TestDisk 无法帮助我之后,我尝试了相关方法问题。为了清楚起见,下面是我恢复文件结构所采取的步骤:
- 确保您的驱动器已卸载。
通过以下方式查找您的备份超级块
dumpe2fs /dev/<drive-id> | grep -i superblock
例如
dumpe2fs /dev/sdb | grep -i superblock
根据其中一个超级块检查文件系统,但不要应用任何更改,以查看此特定超级块在结构上是否完整。
fsck.ext4 -v -n -C 0 -b <Superblock> /dev/<drive-id>
例如
fsck.ext4 -v -n -C 0 -b 2654208 /dev/sdb
-v
使命令详细显示更多细节,-n
通过对每个提示始终回答“否”来确保不会尝试修复文件系统,-C 0
显示进度条并-b
定义上一步给出的超级块的起始位置。如果找到了合适的超级块,则
fsck.ext4
通过替换 来修复您的文件系统,-n
以-y
自动接受所有修复。fsck.ext4 -v -y -C 0 -b <Superblock> /dev/<drive-id>
重新启动并安装驱动器。
在我的例子中,第一级目录名称无法恢复。因此,它们都只能根据其在隐藏目录inode
中的名称找到。lost+found