技术解析

又作大死了,求助重新恢复硬盘
0
2021-06-30 12:57:24
idczone

OS: Ubuntu 16.04

我打算备份系统到我的硬盘里,也是第一次。 然后选择了 dd, 然后看到一条命令:

$ sudo  dd if=/dev/sda of=/dev/sdb

sdb 就是我的硬盘啊,然后我作死地想,如果我直接 dd 到 /dev/sdb 会怎么样呢。 然后我就直接试了。。。。

我有点担心,就 ls 了一下当前目录也就是我的硬盘的根目录,悲催的事情发生了,空了!!!! 赶紧 cancel 掉。然后发现硬盘没有被挂载了。。。。

重启一下看有没有奇迹,什么也没发生。

$ sudo fdisk -l
Disk /dev/sda: 465.8 GiB, 500107862016 bytes, 976773168 sectors
Units: sectors of 1 * 512 = 512 bytes
Sector size (logical/physical): 512 bytes / 4096 bytes
I/O size (minimum/optimal): 4096 bytes / 4096 bytes
Disklabel type: dos
Disk identifier: 0x0004cba2

Device     Boot     Start       End   Sectors   Size Id Type
/dev/sda1  *         4096 104857599 104853504    50G  7 HPFS/NTFS/exFAT
/dev/sda2       104861694 976771071 871909378 415.8G  f W95 Ext'd (LBA)
/dev/sda5       104861696 396363775 291502080   139G  7 HPFS/NTFS/exFAT
/dev/sda6       687867904 699584511  11716608   5.6G 82 Linux swap / Solari
/dev/sda7       699586560 700364799    778240   380M 83 Linux
/dev/sda8       700366848 798021144  97654297  46.6G 83 Linux
/dev/sda9       798023680 976771071 178747392  85.2G 83 Linux

Partition 2 does not start on physical sector boundary.




Ignoring extra data in partition table 5.
Ignoring extra data in partition table 5.
Ignoring extra data in partition table 5.
Invalid flag 0x0eeb of EBR (for partition 5) will be corrected by w(rite).
Disk /dev/sdb: 1.4 TiB, 1500267937792 bytes, 2930210816 sectors
Units: sectors of 1 * 512 = 512 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes
Disklabel type: dos
Disk identifier: 0x0004cba2

Device     Boot     Start        End    Sectors   Size Id Type
/dev/sdb1  *         4096  104857599  104853504    50G  7 HPFS/NTFS/exFAT
/dev/sdb2       104861694  976771071  871909378 415.8G  f W95 Ext'd (LBA)
/dev/sdb5       770403513 3291724251 2521320739   1.2T f4 SpeedStor

貌似我的数据还在。

然后试着手动挂载 sdb, sdb1, sdb2, sdb5。报错

$ sudo mount /dev/sdb test
mount: wrong fs type, bad option, bad superblock on /dev/sdb1,
       missing codepage or helper program, or other error

       In some cases useful info is found in syslog - try
       dmesg | tail or so.

在装了” nfs-common “之后 sdb 挂载成功了,然而里面是空的。

求助怎么处理?


根据我的经验,如无很重要的数据丢失,还是重新来过吧。折腾数据恢复是个概率活,细心活。想开点,一切都会过去的

那么问题来了,你 dd 的时候,dd 了多少 g ?

看操作是覆盖了 sdb 前面的数据,包括分区表。
windows 下用 DiskGenius 搜索分区可以找回未覆盖的分区。linux 下就不清楚什么软件可以搞了。

dd 应该是直接覆盖了

很明显,sdb 的分区表已经不是你原来的分区表了 如果在你 dd 时间很短的时候取消,恢复原来之前的分区表还是可以简单的救回大部分数据的

windows 我有 diskgenius,linus 没玩过。

建议在 windows 下用 diskhenius 恢复,linux 下的恢复工具对使用者的经验要求比较高一点。

diskgenius 在这种情况不是最好选择
记忆中有一个软件可以打捞分区表丢失的数据
不知道 Linux 文件系统可用不可用
我只捞过 NTFS 文件系统的数据。。。

找到了,R-Studio

老兄也是人才一位啊,备份数据也这么不小心,是不会弄还是失误啊,不会的话,就拿点不重要的数据练练手,要不然把重要的数据丢失了,小心领导找你谈话。

@colorwin
sdb 是 MBR 还是 GPT。
如果是 GPT 的话,分区表可以根据尾部的备份恢复回来。










谢谢各位,
我重启去 window 系统里(装的双系统),用了 window 系统的恢复软件 diskgenius (之前也搞坏过硬盘了。。。)扫描了看了一下,硬盘里没什么重要的东西,不打算要了,还是格式了重新来算了。
这个移动硬盘闲置很久了,我刚开始是想拿来备份系统。后来看到这行`$ sudo dd if=/dev/sda of=/dev/sdb`命令,想如果可以复制挂载点,那么可以全部系统直接 copy 到硬盘的话,可以直接把移动硬盘当移动系统了。
这个应该可以实现的吧,要怎么做呢?


https://wiki.archlinux.org/index.php/Full_system_backup_with_rsync

dd 不要随便用

testdisk 可以试试

其实 archlinux 是可以通过 rsync 备份、恢复系统的。我也这么做过,但这不包含引导部分。ubuntu 不确定是否可以。或许可以,也可能不可以。我发现 btrfs 太爽,不同子卷可以安装不同系统,数据按照子卷放...备份超级方便

1. 先尝试恢复分区表
2. 尝试从恢复后的分区里面恢复文件系统(数据)
Diskgenius 可以恢复分区表(你要记得你之前分区的大概位置, 他会注意搜索边界), 这真的是很 diao 的国产软件。
然后使用类似 e2fsck 之类的来修复文件系统。
记得我以前有在 V2 上面回答过类似问题。

找到原来的主题了, 你的难兄难弟在这里。
/t/269369

按子卷放跟按分区放有什么优势?

请搜索 btrfs,查阅相关知识

dd 估计是直接写 LBA 而不是删除文件,被 dd 覆盖的数据估计不能找回,dd 貌似可用来销毁数据。Disk Genius 主要针对 NTFS 等分区,用 DiskGenius 转换 Linux+Windows 的 MBR 到 GPT 结果失败。数据的恢复可以用 EasyRecovery,重要数据请找数据恢复

我现在已经格式化了这个硬盘,但是 MBR 损坏了,读不出来硬盘。我尝试在里面安装了一个 ubuntu 系统是可以被引导进入的。现在我只想恢复默认的 MBR,要怎么做呢?

MBR 只用于开机,你说的是分区表吧,NTFS 可以用 DiskGenius 恢复分区表。要 Rebuild 分区表,一是重新分区,二是用 Disk Genius 等找回

dd 後並不會實時更新文件列表,所以你不應該 CTRL+C,而且 Linux 也不會實時更新掛載硬盤,你重啓一下就能看到硬盤了。數據丟了就在也找不會來了

我当时就被坑了,还以为 dd 会生成一个备份文件到硬盘里,结果是整个硬盘被清除了....

数据地带为您的网站提供全球顶级IDC资源
在线咨询
专属客服