删除磁盘的前512个字节;如何恢复我的数据?


12

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

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

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

Answers:


13

这取决于之前的确切位置,但是从中恢复可能很容易。

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

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

  3. 是的,请保持完整图像。数据恢复操作通常会造成比预期更多的破坏。

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

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

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

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

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

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

PS:您可能还想看看诸如TestDisk之类的工具,这些工具会尝试自动执行恢复过程。但是您仍然应该首先获得完整图像。

PS2:如果您足够舒适,也可以尝试一下。如果您可以对第一个分区的起点做出合理的假设,则可以使用tune2fs -l来获取第一个分区的确切大小,这将使您能够寻找第二个分区的起点。


#1:dd if=/dev/sdx of=backup.img对吗?
edmz 2015年

@black:是的。您可能需要添加一个bs=...选项来增加块大小并加快它的速度。
thkala 2015年

使用一个好的块大小是bs=64K。TestDisk绝对值得尝试,它可以在磁盘映像文件以及实际磁盘上工作。祝好运!
下午15年

在许多情况下,跑步cat /dev/sdx >backup.img会比dd在任何情况下都要快,并且在这种情况下当然不会慢。
roaima 2015年

6

为了还原ext4分区及其数据,我考虑过创建一个磁盘范围的ext4分区。如@thkala所建议的,这使我能够访问数据并使用检索有关分区的信息tune2fs -l。该信息看起来非常可行,因此保持不变。

非常有趣的是,gparted能够从实际的警告中得出实际分区的大小

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

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

在此处输入图片说明

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


最终,TestDisk毫不费力地进行了处理。


优秀。请您接受您自己的答案,这样很显然您可以解决问题。
roaima

@roaina是的,我将在两天的最低开放时间到期之后。
edmz 2015年
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.