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)。
用于dd在安全位置创建 USB 驱动器的完整映像。
用于dd在安全位置创建 USB 驱动器的完整映像。
是的,请保留完整图像。数据恢复操作通常会造成比预期更多的损害。
尝试记住该 USB 驱动器上的分区布局是什么样的。写下来。如果您有 Linux 内核检测到该磁盘时(在被弄乱之前)的系统日志,这可能会有所帮助 - 通常它会打印出有关检测到的分区的一些数据。
使用 fdisk 重新创建具有相同分区表的 MBR。不要格式化和/或 fsck 任何分区。
尝试使用只读 ( -o ro)mount选项挂载您的分区。
如果成功,请尝试将所有文件复制到安全位置并观察终端和日志中是否有 I/O 错误 - 表示分区边界错误的典型方式是通过底层设备上的越界访问。
如果复制失败,请恢复映像并返回到步骤 4。
在做任何其他事情之前,我是否提到过拥有 USB 驱动器的完整图像?
PS:您可能还想看看TestDisk 之类的工具,它们尝试自动执行恢复过程。但是您仍然应该首先获得完整的图像。
PS2:如果你觉得足够舒服,你也可以尝试一下。如果您可以对第一个分区的起点做出合理的假设,那么您可以使用tune2fs -l获取第一个分区的确切大小,这将允许您寻找第二个分区的起点。
为了恢复ext4分区及其数据,我考虑创建一个磁盘范围的 ext4 分区。正如@thkala 所建议的那样,这使我能够访问数据并使用 检索有关分区的信息tune2fs -l。这些信息看起来非常可行,因此没有改变。
非常有趣的是,gparted 在某种程度上能够计算出实际分区大小,从它显示的警告中可以看出:
分区内 10.96 GiB 的未分配空间。要增大文件系统以填充分区,请选择分区并选择菜单项:
因为 11GiB 大约是 NTFS 分区的尺寸。
注意未使用的空间,IIRC,它是 ext4 仍然可用的空间。gparted 识别出的未分配空间似乎是 NTFS 分区;现在,我怎样才能恢复那个,也许通过找出第一个分区的结束位置,即它的总字节数?
最后,TestDisk毫不费力地处理了这个问题。