删除了磁盘的前 512 字节;我怎样才能恢复我的数据?

删除了磁盘的前 512 字节;我怎样才能恢复我的数据?

我不小心将 512 字节的二进制文件写入了错误的 USB 磁盘,dd并且设备不再显示任何分区fdisk

我以为所有数据都消失了,但dd if=/dev/sdx | strings显示数据似乎仍然存在,因为dd幸运的是,数据仅限于前 512 个字节。有什么办法可以恢复吗

该磁盘有两个分区:一个是 ext4 (~4GB),其余 16GB 被格式化为 NTFS。

答案1

这取决于之前到底发生了什么,但从中恢复可能很容易。

  1. 用于dd在安全位置创建 USB 驱动器的完整映像。

  2. 用于dd在安全位置创建 USB 驱动器的完整映像。

  3. 是的,请保留完整图像。数据恢复操作通常会造成比预期更大的损害。

  4. 尝试记住该 USB 驱动器上的分区布局是什么样的。写下来。如果您拥有 Linux 内核检测到该磁盘(在被搞乱之前)时的系统日志,这可能会有所帮助 - 通常它会打印出有关检测到的分区的一些数据。

  5. 使用 fdisk 重新创建具有相同分区表的 MBR。不要格式化和/或 fsck 任何分区

  6. 尝试使用只读 ( -o ro)mount选项挂载分区。

  7. 如果成功,请尝试将所有文​​件复制到安全位置,并观察终端并记录 I/O 错误 - 表达分区边界错误的典型方式是通过底层设备上的越界访问。

  8. 如果复制失败,请恢复映像并返回到步骤 4。

  9. 我是否提到过在执行其他操作之前要有 USB 驱动器的完整映像?

PS:您可能还想看看类似的工具测试盘,尝试自动化恢复过程。但您仍然应该先获得完整的图像。

PS2:如果你觉得舒服的话,你也可以尝试一下。如果您可以对第一个分区的起点做出合理的假设,那么您可以用来tune2fs -l获取第一个分区的确切大小,这将允许您寻找第二个分区的起点。

答案2

为了恢复ext4分区及其数据,我考虑创建一个磁盘范围的 ext4 分区。这让我得到了访问数据并按照 @thkala 的建议,使用 检索有关分区的信息tune2fs -l。这些信息看起来非常可行,因此没有改变。

非常有趣的是,gparted 在某种程度上能够弄清楚实际分区大小从这个警告可以看出:

分区内有 10.96 GiB 未分配空间。要扩展文件系统以填充分区,请选择分区并选择菜单项:

因为 11GiB 大约是 NTFS 分区的大小。

在此输入图像描述

请注意未使用的空间,IIRC,它是 ext4 仍然可用的空间。这未分配的空间gparted识别出的似乎是NTFS分区;现在,我怎样才能恢复那个呢,也许可以通过找出第一个分区的结束位置(即它的总字节数)来实现?


最后测试盘毫不费力地处理了这件事。

相关内容