dd命令可精准克隆MBR和分区表,因其直接读写硬盘首扇区512字节(含446字节引导代码、64字节分区表、2字节签名),配合sfdisk导出/恢复纯文本分区结构,实现底层灾备。

dd 命令能精准克隆 MBR 和分区表,因为它是直接读写硬盘最前端的原始扇区,不依赖文件系统,也不解析数据含义。只要复制前 512 字节(完整 MBR)和用 sfdisk 导出分区结构,就能在目标盘上重建完全一致的启动能力和磁盘布局,实现真正意义上的底层灾备。
备份完整MBR(含引导代码+分区表)
MBR 占用硬盘第一个扇区共 512 字节:前 446 字节是引导代码,中间 64 字节是主分区表,最后 2 字节是签名。一次复制全部,才能同时保留可启动性和分区信息:
-
执行命令:
sudo dd if=/dev/sda of=/backup/mbr-full.img bs=512 count=1 - 其中
/dev/sda是源硬盘设备名,/backup/mbr-full.img是备份文件路径 - 该操作不会影响硬盘当前使用,但建议在系统未挂载该盘时执行(如从 Live USB 启动后操作)
单独备份分区表(纯结构,不含引导代码)
若只需迁移分区结构(比如重装系统前保存分区方案),用 sfdisk 更安全、更可读:
-
导出分区表:
sudo sfdisk -d /dev/sda > /backup/sda-partitions.sfdisk - 生成的是纯文本文件,可用编辑器查看或校验,也便于版本管理
- 它包含所有主分区、扩展分区及逻辑分区定义,但不包含引导代码或任何数据
恢复MBR与分区表到目标盘
灾备恢复分两步,顺序不能颠倒:先恢复 MBR 确保可识别分区,再恢复分区表确保结构一致:
-
恢复完整MBR:
sudo dd if=/backup/mbr-full.img of=/dev/sdb bs=512 count=1 -
恢复分区表:
sudo sfdisk /dev/sdb - 注意目标盘
/dev/sdb必须与源盘容量相当或更大;若更小,sfdisk 会报错并中止 - 恢复后无需重启即可用
lsblk或fdisk -l /dev/sdb验证分区是否已正确重建
配套验证与安全要点
仅备份还不够,必须验证可恢复性,并规避常见误操作风险:
- 每次操作前用
lsblk和sudo fdisk -l /dev/sdX双重确认设备名,避免if和of写反 - MBR 恢复后,可用
sudo file -s /dev/sdb查看是否含 “DOS/MBR boot sector” 标识 - 不要对正在挂载的系统盘执行 dd 写入操作;优先在救援环境(如 Ubuntu Live)中完成
- 若源盘存在坏道,加
conv=noerror,sync参数让 dd 跳过错误并补零,防止中途退出


















