是否有可能在尚未重启的机器上恢复已擦除的 MBR 分区表?

是否有可能在尚未重启的机器上恢复已擦除的 MBR 分区表?

在尝试如何修复这个问题,我遇到了擦除 MBR 的建议,所以我就这么做了。

dd if=/dev/zero of=/dev/sdb bsize=512 count=1

哎呀。没有分区表。

是的,我有备份,但我仍然想恢复这些分区。我该怎么办?有一些专有产品声称可以神奇地修复分区并恢复数据,但我不相信它们。我可以用普通的 Linux/Windows 命令恢复分区吗?

编辑:假设第一个分区正好是 4MB(特殊启动分区),我能否安全地确定下一个分区至少从哪里开始,并从那里开始工作?

答案1

有一个名为 TestDisk 的免费、开源、跨平台实用程序似乎可以做到这一点。http://www.cgsecurity.org/wiki/TestDisk是开发者的网站,在这里:https://en.wikipedia.org/wiki/TestDisk这是一篇关于它的 WP 文章,这里是:http://www.geekyprojects.com/storage/how-to-repair-a-damaged-partition-table-or-mbr/是一份评论/使用指南。

我个人还没有尝试过,但既然你现在没有什么可失去的......

更新:哦,看这里:Vista - 擦除磁盘的 MBR 和 HEAD - 如何恢复? 是超级用户问答,包括成功使用 TestDisk。

答案2

如果你还没有重新启动,内核仍然知道旧的布局,可以从中检索/sys

#!/usr/bin/env bash
dev=${1:-sda}
dev=${dev#/dev/}
for part in /sys/class/block/${dev}[0-9]*; do
    num=$(<$part/partition)
    start=$(<$part/start)
    size=$(<$part/size)
    end=$((start+size-1))
    echo "# partition $num: start $start, size $size, end $end"
    echo "sgdisk /dev/$dev --new=$num:$start:$end"
    #echo "parted /dev/$dev mkpart primary $start $end"
done

相关内容