linux中备份mbr和dpt需用dd命令精确抓取硬盘开头512字节:前446字节为引导代码,中间64字节为分区表,末2字节55aa为有效标志;gpt系统还需额外备份esp及gdisk备份头。

Linux 系统中备份分区表(DPT)和主引导记录(MBR)是系统恢复的关键前置动作,核心在于用 dd 命令精确抓取硬盘开头的特定字节区域。操作本身不复杂,但位置、字节数和存放路径稍有差错就可能失效。
明确要备份的两个关键部分
硬盘最开头的 512 字节(即第 0 扇区)包含三段内容:
- 前 446 字节:MBR 引导代码(boot loader),负责加载 GRUB 或其他引导程序;
- 中间 64 字节(偏移 446~509):硬盘分区表(DPT),记录最多 4 个主/扩展分区的起止位置、类型、大小等;
-
最后 2 字节(510~511):固定值
55 AA,是有效 MBR 的标志,缺失会导致系统无法识别引导扇区。
注意:这里说的是传统 MBR 分区方案。若系统使用 GPT 分区表(常见于 UEFI 启动),则需额外备份 EFI 系统分区(ESP)及 gdisk 的备份头,不能仅靠 dd 备份前 512 字节。
用 dd 完整备份整个 MBR 扇区(推荐首选)
这是最稳妥的做法——一次保存全部 512 字节,含引导代码 + 分区表 + 结束标志:
- 确认目标磁盘设备名(如
/dev/sda),可用lsblk或sudo fdisk -l查看; - 执行备份命令(输出文件建议存到另一块盘或离线介质):
sudo dd if=/dev/sda of=/backup/mbr-sda.bak bs=512 count=1 - 验证备份是否完整:
ls -l /backup/mbr-sda.bak→ 应显示大小为 512 字节;hexdump -C -n 2 /backup/mbr-sda.bak | tail -1→ 最后两字节应为55 aa。
单独备份分区表(DPT)用于精准修复
当仅分区表损坏(例如误操作清空了分区信息,但引导代码仍完好),可只恢复这 64 字节,避免覆盖正常引导逻辑:
- 备份命令(跳过前 446 字节,取其后 64 字节):
sudo dd if=/dev/sda of=/backup/dpt-sda.bak bs=1 skip=446 count=64 - 恢复时也只写入对应位置:
sudo dd if=/backup/dpt-sda.bak of=/dev/sda bs=1 seek=446 count=64 - 注意:有些资料写
count=66,是把末尾 2 字节55 AA一并包含,实际只需 64 字节 DPT 内容;55 AA是结构固定值,不应单独备份再覆盖,否则可能引入错误。
存放位置与安全提醒
备份文件绝不能只存在被备份的同一块硬盘上——一旦该盘分区表损坏,很可能连备份文件所在分区都无法挂载:
- 优先存到另一块物理硬盘(如
/dev/sdb1挂载后的目录); - 次选存到网络存储、USB 设备或离线刻录光盘;
- 建议同时保留一份文本形式的分区布局记录:
sudo fdisk -l /dev/sda > /backup/partition-layout.txt,便于手动重建。
做完备份后,务必在救援环境(如 Live USB)中测试能否挂载该备份文件,并用 hexdump 或 file 命令确认内容有效性。引导类备份不是“备了就行”,而是“能用才算数”。











