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

edm*_*dmz 13 linux data-recovery

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

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

磁盘有两个分区:一个 ext4 (~4GB) 一个,剩下的 16GB 被格式化为 NTFS。

thk*_*ala 14

这取决于之前到底有什么,但从中恢复可能很容易(-ish)。

  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:您可能还想看看TestDisk 之类的工具,它们尝试自动执行恢复过程。但是您仍然应该首先获得完整的图像。

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


edm*_*dmz 7

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

非常有趣的是,gparted 在某种程度上能够计算出实际分区大小,从它显示的警告中可以看出:

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

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

在此处输入图片说明

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


最后,TestDisk毫不费力地处理了这个问题。