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