sfdisk克隆分区表核心是“导出+导入”,仅迁移纯文本分区定义,不复制数据或引导代码;执行sudo sfdisk -d /dev/sda > file.sfdisk导出,再sudo sfdisk /dev/sdb < file.sfdisk导入,并需partprobe重读分区表。

用 sfdisk 克隆分区表结构,核心是“导出 + 导入”,不复制数据、不碰引导代码,只迁移纯分区定义,安全、轻量、可审计。
导出源盘分区表为文本文件
执行命令将当前磁盘的完整分区结构(含主分区、扩展分区、逻辑分区及起始/结束扇区、类型、标志等)转为人类可读的文本:
- sudo sfdisk -d /dev/sda > /backup/sda-partitions.sfdisk
- 确保设备名准确(如
/dev/sda),可用lsblk或fdisk -l确认 - 生成的
.sfdisk文件是纯文本,可用cat查看、git版本管理、甚至手动微调(比如调整分区大小或类型)
导入分区表到目标盘
目标盘必须物理容量 ≥ 源盘(否则 sfdisk 会拒绝写入并报错),且未挂载任何分区:
- sudo sfdisk /dev/sdb < /backup/sda-partitions.sfdisk
- 命令成功后不会自动通知内核重读分区表,需手动触发:
sudo partprobe /dev/sdb或sudo blockdev --rereadpt /dev/sdb - 验证是否生效:
lsblk /dev/sdb或sfdisk -l /dev/sdb,应看到与源盘一致的分区布局
常见注意事项
避免操作失误导致数据丢失或分区识别失败:
- 目标盘原有分区表会被完全覆盖——操作前确认该盘无重要数据,或已备份
- 若目标盘比源盘大,
sfdisk默认按原扇区位置写入,剩余空间保持未分配;如需自动扩展最后一分区,需额外用growpart或手动编辑.sfdisk文件 - 遇到
unexpected output in sfdisk --version报错,多因系统 locale 非en_US.UTF-8,临时设置:LANG=C sudo sfdisk /dev/sdb < ... - GPT 和 MBR 分区表均支持,但
sfdisk -d输出格式略有差异,导入时无需额外指定格式
对比 dd 克隆 MBR 的适用场景
sfdisk 只管分区结构,不管启动能力;若还需保留可启动性,必须配合 dd 单独恢复 MBR(512 字节):
- 仅迁移分区方案(如重装系统前保存布局)→ 用
sfdisk就够了 - 整机底层灾备(含引导+分区)→ 先
dd if=/dev/sda of=mbr.img bs=512 count=1,再sfdisk导入分区表,最后dd of=/dev/sdb写回 MBR - 两者组合,才能实现“结构一致 + 启动可用”的完整克隆

















