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 挂载成功了,然而里面是空的。
求助怎么处理?
1
wxg4net 2017-05-22 07:00:34 +08:00 2
根据我的经验,如无很重要的数据丢失,还是重新来过吧。折腾数据恢复是个概率活,细心活。想开点,一切都会过去的
|
2
kokutou 2017-05-22 07:55:45 +08:00 via Android
那么问题来了,你 dd 的时候,dd 了多少 g ?
|
3
gamexg 2017-05-22 08:12:35 +08:00
看操作是覆盖了 sdb 前面的数据,包括分区表。
windows 下用 DiskGenius 搜索分区可以找回未覆盖的分区。linux 下就不清楚什么软件可以搞了。 |
4
bukip 2017-05-22 08:18:19 +08:00
dd 应该是直接覆盖了
|
5
Lycnir 2017-05-22 08:58:20 +08:00
很明显,sdb 的分区表已经不是你原来的分区表了 如果在你 dd 时间很短的时候取消,恢复原来之前的分区表还是可以简单的救回大部分数据的
|
6
Charkey 2017-05-22 09:32:42 +08:00
windows 我有 diskgenius,linus 没玩过。
|
7
nanpuyue 2017-05-22 09:58:08 +08:00
建议在 windows 下用 diskhenius 恢复,linux 下的恢复工具对使用者的经验要求比较高一点。
|
8
mhycy 2017-05-22 10:08:27 +08:00
diskgenius 在这种情况不是最好选择
记忆中有一个软件可以打捞分区表丢失的数据 不知道 Linux 文件系统可用不可用 我只捞过 NTFS 文件系统的数据。。。 |
9
mhycy 2017-05-22 10:12:43 +08:00
找到了,R-Studio
|
10
QQ2171775959 2017-05-22 11:05:36 +08:00
老兄也是人才一位啊,备份数据也这么不小心,是不会弄还是失误啊,不会的话,就拿点不重要的数据练练手,要不然把重要的数据丢失了,小心领导找你谈话。
|
11
15015613 2017-05-22 11:22:33 +08:00 via Android
|
12
colorwin OP @wxg4net
@gamexg @kokutou @bukip @Lycnir @Charkey @mhycy @QQ2171775959 @15015613 谢谢各位, 我重启去 window 系统里(装的双系统),用了 window 系统的恢复软件 diskgenius (之前也搞坏过硬盘了。。。)扫描了看了一下,硬盘里没什么重要的东西,不打算要了,还是格式了重新来算了。 这个移动硬盘闲置很久了,我刚开始是想拿来备份系统。后来看到这行`$ sudo dd if=/dev/sda of=/dev/sdb`命令,想如果可以复制挂载点,那么可以全部系统直接 copy 到硬盘的话,可以直接把移动硬盘当移动系统了。 这个应该可以实现的吧,要怎么做呢? |
13
15015613 2017-05-22 14:22:26 +08:00
|
14
itfanr 2017-05-22 16:12:56 +08:00 via Android
dd 不要随便用
|
15
darkshell 2017-05-22 16:30:52 +08:00
testdisk 可以试试
|
16
wxg4net 2017-05-22 20:22:04 +08:00
其实 archlinux 是可以通过 rsync 备份、恢复系统的。我也这么做过,但这不包含引导部分。ubuntu 不确定是否可以。或许可以,也可能不可以。我发现 btrfs 太爽,不同子卷可以安装不同系统,数据按照子卷放...备份超级方便
|
17
ToughGuy 2017-05-22 20:27:10 +08:00
1. 先尝试恢复分区表
2. 尝试从恢复后的分区里面恢复文件系统(数据) Diskgenius 可以恢复分区表(你要记得你之前分区的大概位置, 他会注意搜索边界), 这真的是很 diao 的国产软件。 然后使用类似 e2fsck 之类的来修复文件系统。 记得我以前有在 V2 上面回答过类似问题。 |
19
standin000 2017-05-22 20:40:53 +08:00
@wxg4net 按子卷放跟按分区放有什么优势?
|
20
wxg4net 2017-05-22 21:21:57 +08:00
@standin000 请搜索 btrfs,查阅相关知识
|
21
okudayukiko0 2017-05-25 14:18:05 +08:00 via iPhone 1
dd 估计是直接写 LBA 而不是删除文件,被 dd 覆盖的数据估计不能找回,dd 貌似可用来销毁数据。Disk Genius 主要针对 NTFS 等分区,用 DiskGenius 转换 Linux+Windows 的 MBR 到 GPT 结果失败。数据的恢复可以用 EasyRecovery,重要数据请找数据恢复
|
22
colorwin OP @okudayukiko0 我现在已经格式化了这个硬盘,但是 MBR 损坏了,读不出来硬盘。我尝试在里面安装了一个 ubuntu 系统是可以被引导进入的。现在我只想恢复默认的 MBR,要怎么做呢?
|
23
okudayukiko0 2017-05-26 17:06:32 +08:00 via iPhone
MBR 只用于开机,你说的是分区表吧,NTFS 可以用 DiskGenius 恢复分区表。要 Rebuild 分区表,一是重新分区,二是用 Disk Genius 等找回
|
24
liuyanjun0826 2017-05-28 19:11:52 +08:00
dd 後並不會實時更新文件列表,所以你不應該 CTRL+C,而且 Linux 也不會實時更新掛載硬盤,你重啓一下就能看到硬盤了。數據丟了就在也找不會來了
|
25
redapple0204 2017-06-03 09:02:41 +08:00
我当时就被坑了,还以为 dd 会生成一个备份文件到硬盘里,结果是整个硬盘被清除了....
|