sgdisk
或sfdisk
工具可克隆分区表,操作前务必备份数据,确保目标磁盘容量≥源盘,示例:sgdisk -R=/dev/sdb /dev/sda
将sda分区表复制到sdb(GPT分区表适用)。在Linux系统中克隆分区表是一项重要的操作,主要用于备份、磁盘迁移或灾难恢复,它能完整复制源磁盘的分区结构(包括起始/结束扇区、分区类型、GUID等),但不会复制分区内的数据,以下是两种主流方法的详细操作指南:
操作前必备准备
- 备份数据:
分区表操作有极高风险,误操作可能导致数据丢失,务必提前备份重要数据(如用dd
备份分区表:dd if=/dev/sdX of=partition_table_backup.bin bs=512 count=1
)。 - 确认磁盘标识符:
通过lsblk
或fdisk -l
查看磁盘名称(如源盘/dev/sda
,目标盘/dev/sdb
)。 - 卸载目标盘:
确保目标磁盘所有分区未挂载:umount /dev/sdb*
。
方法1:使用 sfdisk
(适用于MBR/MSDOS分区表)
sfdisk
是操作MBR分区表的标准化工具,兼容性高。
操作步骤:
# 1. 备份源磁盘分区表到文件(可选但推荐) sudo sfdisk -d /dev/sda > sda_partition_table.bak # 2. 克隆分区表到目标磁盘 sudo sfdisk /dev/sdb < sda_partition_table.bak # 或直接管道操作(无需中间文件) sudo sfdisk -d /dev/sda | sudo sfdisk /dev/sdb
关键参数说明:
-d
:导出分区表为可读脚本格式。<
:将备份文件重定向到sfdisk
以写入目标盘。- 验证命令:
sudo fdisk -l /dev/sdb
检查分区是否一致。
方法2:使用 sgdisk
(适用于GPT分区表)
GPT分区表需使用 gdisk
工具包中的 sgdisk
,支持GUID、分区名称等高级属性。
操作步骤:
# 1. 克隆分区表(自动复制GUID和分区属性) sudo sgdisk --replicate=/dev/sdb /dev/sda # 2. 随机化目标磁盘GUID(避免冲突) sudo sgdisk --randomize-guids /dev/sdb
参数解析:
--replicate
:精确复制源盘分区结构到目标盘。--randomize-guids
:为目标盘生成新GUID,避免多盘共存时的标识冲突(关键步骤!)。- 验证命令:
sudo gdisk -l /dev/sdb
检查GPT分区信息。
常见问题与注意事项
- 磁盘容量差异:
若目标盘小于源盘,克隆会失败,确保目标盘容量 ≥ 源盘(可用lsblk
检查)。 - 分区表类型匹配:
- MBR盘 → 用
sfdisk
- GPT盘 → 用
sgdisk
(通过sudo fdisk -l /dev/sda | grep Disklabel
查看类型)
- MBR盘 → 用
- 克隆后刷新内核分区表:
执行partprobe /dev/sdb
或重启系统。 - 数据迁移需求:
克隆分区表后,需手动复制数据(如dd
或rsync
按分区复制内容)。
- MBR分区表 → 优先选
sfdisk
- GPT分区表 → 必须用
sgdisk --replicate
+--randomize-guids
- 风险提示:
操作前务必备份分区表及数据,误操作可能导致系统无法启动或数据丢失,建议在非生产环境测试验证。
引用说明:本文方法参考自
util-linux
官方文档(sfdisk)、GPT fdisk 手册(sgdisk)及Linux内核Wiki,具体命令可通过man sfdisk
或man sgdisk
查看权威指南。
原创文章,发布者:酷盾叔,转转请注明出处:https://www.kd.cn/ask/39759.html