当前位置:首页 > Linux > 正文

Linux克隆分区表怎么做?

使用 sgdisksfdisk工具可克隆分区表,操作前务必备份数据,确保目标磁盘容量≥源盘,示例: sgdisk -R=/dev/sdb /dev/sda 将sda分区表复制到sdb(GPT分区表适用)。

在Linux系统中克隆分区表是一项重要的操作,主要用于备份、磁盘迁移或灾难恢复,它能完整复制源磁盘的分区结构(包括起始/结束扇区、分区类型、GUID等),但不会复制分区内的数据,以下是两种主流方法的详细操作指南:

Linux克隆分区表怎么做?  第1张


操作前必备准备

  1. 备份数据
    分区表操作有极高风险,误操作可能导致数据丢失,务必提前备份重要数据(如用 dd 备份分区表:dd if=/dev/sdX of=partition_table_backup.bin bs=512 count=1)。
  2. 确认磁盘标识符
    通过 lsblkfdisk -l 查看磁盘名称(如源盘 /dev/sda,目标盘 /dev/sdb)。
  3. 卸载目标盘
    确保目标磁盘所有分区未挂载: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分区信息。

常见问题与注意事项

  1. 磁盘容量差异
    若目标盘小于源盘,克隆会失败,确保目标盘容量 ≥ 源盘(可用 lsblk 检查)。
  2. 分区表类型匹配
    • MBR盘 → 用 sfdisk
    • GPT盘 → 用 sgdisk
      (通过 sudo fdisk -l /dev/sda | grep Disklabel 查看类型)
  3. 克隆后刷新内核分区表
    执行 partprobe /dev/sdb 或重启系统。
  4. 数据迁移需求
    克隆分区表后,需手动复制数据(如 ddrsync 按分区复制内容)。

  • MBR分区表 → 优先选 sfdisk
  • GPT分区表 → 必须用 sgdisk --replicate + --randomize-guids
  • 风险提示
    操作前务必备份分区表及数据,误操作可能导致系统无法启动或数据丢失,建议在非生产环境测试验证。

引用说明:本文方法参考自 util-linux 官方文档(sfdisk)、GPT fdisk 手册(sgdisk)及Linux内核Wiki,具体命令可通过 man sfdiskman sgdisk 查看权威指南。

0