不小心用 dd 把硬盘/dev/sdb 的前 1MB 用零填充了 有办法补救吗

2018-02-03 08:17:16 +08:00
 a251922581
dd if=/dev/zero of=/dev/sdb bs=1M count=1
想 U 盘刻录个 ISO,结果 U 盘是 /dev/sdc,硬盘是 /dev/sdb 把硬盘的前 1MB 给弄掉了。纯数据盘,不影响系统。有办法补救吗,上面就一个分区。
3005 次点击
所在节点    问与答
12 条回复
Osk
2018-02-03 08:36:22 +08:00
用 diskgenius 找分区吧,如果第一个分区起始扇区号小于 2048 就坑大了
heyeshuang
2018-02-03 08:40:56 +08:00
试试 testdisk ?
xratzh
2018-02-03 09:40:28 +08:00
那个 1MB 是用来保护磁盘出现坏道时不会从头开始坏的吧,这样危害小点。我一直这样以为的。不知道对不对,所以我觉得无所谓啦。
shiyouming91
2018-02-03 10:00:17 +08:00
你要是那个分区是从 1MiB 开始的( 1048576 字节 /2048 扇区)你可以试试用 losetup -o 1048576 -f /dev/sdb 把你的数据盘从 1MiB 开始创建一个 loop device 然后试试能不能 mount 这个 loop device,如果能成功你可以手动创建一个分区表或者更安全地先直接把文件备份出来

不行的话试试用 r-studio 之类的全盘扫描恢复吧
shiyouming91
2018-02-03 10:03:02 +08:00
手动创建一个分区表 -> 手动在你的硬盘上创建一个分区表,以及一个从 1048576 字节 /2048 扇区开始的分区

当然先备份文件出来是最安全和推荐的
wzxlovesy
2018-02-03 10:08:31 +08:00
如果是 MBR 的分区表的话,尝试修复 MBR 吧
ryd994
2018-02-03 13:24:21 +08:00
再买一块同样容量或更大的,全盘镜像出来随便尝试
lifanxi
2018-02-03 13:30:10 +08:00
先恢复分区,然后用那个分区上的别的 Superblock 修复头上的那块,然后大部分文件应该都可以正常访问了。
ytjfmv
2018-02-03 14:01:14 +08:00
@ryd994 dd 到另外的硬盘上就行, 还可以用 gzip lzo 压缩一下
msg7086
2018-02-03 16:19:22 +08:00
现在一般分区都是从 1M 起分,你知道分区大小的话,fdisk 进去用同样参数创建分区并且不抹签名就能恢复了。

如果就一个分区的话,fdisk 进去,new 一个全盘大小的分区出来就修完了。

当然,如上面所说,安全做法是先 dd 备份。
metorm
2018-02-03 16:26:58 +08:00
dd 原名 disk destroyer 果然名不虚传呀……
Kmzl
2018-02-04 10:42:31 +08:00
@metorm 把虚拟机格过

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/428136

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX