UNIX/Linux:复制主引导记录(MBR)

时间:2020-01-09 10:40:07  来源:igfitidea点击:

在Debian Linux下,如何将MBR从一个硬盘复制到另一硬盘?
要复制MBR,只需使用dd命令。

dd命令也可以在所有Linux发行版和其他UNIX(如操作系统)下使用。
主启动记录(MBR)是512字节的启动扇区,它是硬盘分区数据存储设备的第一个扇区。

MBR总大小

446 + 64 + 2 = 512

其中:

  • 446字节的引导程序。
  • 64个字节的分区表。
  • 2个字节的签名。

512与446字节

  • 仅使用$mbr.backup.file的内容,使用446个字节来覆盖或还原/dev/XYZ MBR引导代码。
  • 使用512字节来覆盖或恢复/dev/XYZ完整的MBR(包含引导代码和驱动器分区表)以及$mbr.backup.file的内容。

dd命令复制MBR(仅大小相同的分区)

执行dd命令,如下所示:

dd if=/dev/sda of=/dev/sdb bs=512 count=1

上面的命令将从sda复制512字节(MBR)到sdb磁盘。
仅当两个光盘具有相同大小的分区时,这才起作用。

dd命令用于两个分区大小不同的光盘

# dd if=/dev/sda of=/tmp/mbrsda.bak bs=512 count=1

现在要将镜像还原到任何sdb:

# dd if=/tmp/mbrsda.bak of=/dev/sdb bs=446 count=1

上面的命令将保留分区架构。

Linux sfdisk命令示例

Linux sfdisk命令可以如下备份主分区表和扩展分区表。
它创建一个可以在文本编辑器中读取的文件,或者sfdisk可以使用该文件来还原主/扩展分区表。
要备份分区表/dev/sda,请执行:

# sfdisk -d /dev/sda > /tmp/sda.bak

要恢复,请执行:

# sfdisk /dev/sda < /tmp/sda.bak

上面的命令将还原扩展分区。

备份MBR和扩展分区架构

备份/dev/sda MBR,执行:

# dd if=/dev/sda of=/tmp/backup-sda.mbr bs=512 count=1

接下来,扩展分区的备份条目:

# sfdisk -d /dev/sda > /tmp/backup-sda.sfdisk

通过基于网络的nas服务器将/tmp/backup-sda.sfdisk和/tmp/backup-sda.mbr复制到U盘或其他安全的地方。

还原MBR和扩展分区架构

要还原MBR和扩展分区,请从备份媒体复制备份文件,然后执行:

# dd if=backup-sda.mbr of=/dev/sda
# sfdisk /dev/sda < backup-sda.sfdisk