我使用 将 ISO 映像写入硬盘sudo dd if=image.iso of=/dev/sda
。我的意思是/dev/sdc
,现在运行sudo fdisk -l
只返回 /dev/sda 上的一个分区,而应该有 6 个。我可以恢复我的数据吗?
我还没有关闭(重新启动)我的计算机。
答案1
由于您的计算机仍处于打开状态,因此您有很大机会保存一些内容。
首先,sysfs
公开内核在内存中对分区表的视图。现在,您的内核还没有重新读取磁盘表并且它记得您的分区。在里面/sys/block/sda/
,每个分区应该有一个目录。每个这样的子目录包含一个文件start
和一个文件size
,它们表示分区的位置和大小(以扇区为单位)。运行fdisk
然后使用sysfs
目录中的信息重新创建每个分区(按顺序!)。请注意,您还必须创建一个新的分区表。确保新的分区表与之前的相同。您可以在中检查这一点/sys/block/sda
。如果您看到sda1
最多有 6 个分区,而您可能有 MBR,否则可能是 GPT。您还需要为这些分区设置标志和类型。查看并尝试收集有关您拥有的分区类型的信息,然后检查 Wikipedia 以将这些信息转换为您的分区方案的代码。sda7
/etc/fstab
由于您似乎能够使用文件系统,因此很可能您dd
没有覆盖任何内容,因为文件系统的大多数重要部分都在前面。检查/etc/fstab
哪些分区对应于系统的哪个部分,然后使用复制的数据量dd
来估计您删除了多少数据。如果您只覆盖了文件系统的一部分,那么fsck
可能能够稍微修复它(但是你丢失了大量数据)。
最有可能的是,您覆盖了/boot
。您必须重新安装内核(使用aptitude
)并重新安装 GRUB2(使用grub-install
)(其第一和第二阶段均被破坏)。GRUB2 使用 中的文件进行配置/etc
,因此您无需手动重新创建任何内容。
答案2
很遗憾听到你运气不佳
我猜你没有当前备份,我很遗憾地看到你使用
sudo dd if=image.iso of=/dev/sdx
您使用驱动器号x
= 的位置a
,以便覆盖存储了大量有价值数据的硬盘驱动器的开头部分。
您不是第一个受此问题影响的人,恐怕也不是最后一个。dd
许多网站都建议使用这种方法。这是一种强大但危险的方法,因为它会毫无疑问地按照您的指示去做。因此,它通常被称为“数据破坏者”。
@marcelm 评论说,这个昵称不公平。他说得对以 root 身份直接写入设备文件会导致风险。因此请注意,您可以通过写入相应的设备文件轻松覆盖驱动器并破坏有价值的数据/dev/sdx
。(本答案末尾列出了更安全的工具。)
恢复分区表、文件系统和/或文件内容
尽量少对驱动器进行任何操作,最重要的是不要向其中写入任何内容,因为这样可能会覆盖仍有可能恢复的数据,从而使情况变得更糟。
如果你的数据很有价值,你应该在克隆副本上工作,而不是原始(部分覆盖)驱动器。请参阅此链接,向下滚动到“分区表、文件系统的高级修复和/或文件的恢复”
如果你有 GUID 分区表 GPT,则驱动器末尾有分区表的备份
/dev/sda
,你可以使用该工具从此备份表中恢复主分区表gdisk
man gdisk
.详情请参阅手册。您可以使用以下方法恢复分区表和文件系统测试盘从
阅读 CGSecurity 网站上的说明以及@ElderGeek 提供的链接,安装时断电后分区消失
您还可以使用以下方法恢复分区表和文件系统gpart/gparted根据@CSM提供的链接,
相簿:如果您无法恢复分区表和文件系统,您仍然可以恢复一些文件数据。头端的文件(可能为 1-1.5 GB)被覆盖并丢失,但驱动器后面的文件仍然存在。PhotoRec 来自http://cgsecurity.org是一款无需文件系统即可从驱动器表面恢复数据的工具。使用常见文件类型开头的典型数据进行识别。
以下链接提供了有关 PhotoRec 的详细信息,
https://www.cgsecurity.org/wiki/PhotoRec
您应该将文件保存到单独驱动器的分区中。
无法恢复目录结构,通常也无法恢复文件名(而不是权限和所有权),当文件碎片化时会出现问题,但 PhotoRec 可以恢复许多文件(不仅是照片,还有许多其他常见文件类型)。但是,这是一个很大的但是,从大量未分类的文件中找出真正重要的文件(应该重命名为有意义的文件名)是一项艰巨的工作。
使用 Ubuntu 创建 USB 启动驱动器的更安全工具
将来,请使用可以帮助您识别和选择正确目标设备且具有最终检查点的工具,以便您可以仔细检查是否克隆从 iso 文件复制到正确的目标设备,例如
- 在 Ubuntu 中:Ubuntu 启动盘创建器(在 Ubuntu 16.04 LTS 及更新版本中),
在 Linux 中:
- 磁盘别名
gnome-disks
, - 韓國,
- 磁盘别名
在 Windows 中:磁盘映像工具。
您还可以使用提取例如,提供最终检查点的工具
答案3
通过您的dd
命令,您覆盖了 /dev/sda 的分区表和所有数据(就 image.iso 的大小而言)。
因此,您能做的最好的事情就是恢复分区表(具有精确的大小)以至少恢复 /dev/sda 末尾的分区。
答案4
如果您的驱动器被划分为单独的/
分区/home
,并且 /home
分区位于/
分区之后,那么您可以恢复数据。列出大多数分区所在位置的 MBR 已被覆盖。但是,gparted 可以恢复您的/home
分区。
Ubuntu 论坛上的这篇文章 给出了一些关于如何做到这一点的想法;我发现通过搜索“gparted 恢复分区”。
一旦找到丢失的分区(可能位于扩展分区内),您应该将其添加为分区表中的唯一分区。
完成此操作后,您必须重新安装 Linux,并告知将恢复的分区保留为/home
。