dd命令可实现扇区级全盘克隆,完整保留mbr/gpt、引导扇区、分区结构及所有数据,目标盘容量≥源盘即可直接启动;需精准识别设备、在live环境操作、使用bs=4m conv=noerror,sync status=progress等参数,并校验分区表与mbr一致性。

用 dd 命令克隆整个磁盘实现系统完美迁移,核心在于扇区级逐字节复制,能完整保留 MBR/GPT、引导扇区、所有分区结构、文件系统及未用空间——只要目标盘容量不小于源盘,迁移后可直接启动,无需重装系统或修复引导。
确认设备并做好安全准备
操作前必须精准识别源盘和目标盘,任何误写都会覆盖数据:
- 运行 sudo fdisk -l 或 lsblk -f,对比 SIZE 和 TYPE(确认是 disk 类型,不是 part),记下如 /dev/sda(源)和 /dev/sdb(目标)
- 确保源盘未被挂载:执行 mount | grep sda,若有输出,先 sudo umount /dev/sda*
- 目标盘所有数据将被清空,建议使用全新硬盘,或提前备份其重要数据
- 强烈推荐在 Ubuntu Live、GParted Live 等 Live USB 环境下操作,避免系统盘被占用或意外写入
执行扇区级全盘克隆
使用优化参数提升效率与容错性:
PyCharm 2026.2.0.1 Linux版提供 JetBrains 官方 2026.2.0.1 版本安装包,适合需要指定 PyCharm 版本进行 Python 项目开发、运行和调试的用户。
- 运行命令:sudo dd if=/dev/sda of=/dev/sdb bs=4M conv=notrunc,sync,noerror status=progress
- bs=4M 加快读写速度(可试 64K 或 32M,视内存和磁盘性能调整)
- conv=notrunc,sync,noerror 组合保障:防止截断、强制同步写入、遇到坏道时跳过并填零,流程不中断
- status=progress 实时显示已复制量、速率与预估剩余时间(需 GNU coreutils ≥ 8.24)
- 复制完成后务必执行 sync,确保缓冲区数据全部落盘
验证克隆是否真正一致
不能只看能否开机,要校验底层数据完整性:
- 对比分区表:sudo fdisk -l /dev/sda 和 sudo fdisk -l /dev/sdb,确认磁盘标识、分区起止扇区、类型完全一致
- 校验 MBR(前512字节):sudo dd if=/dev/sda bs=512 count=1 | sha256sum 与 sudo dd if=/dev/sdb bs=512 count=1 | sha256sum 输出应完全相同
- 如需全盘校验(耗时较长):sudo cmp -n $(blockdev --getsz /dev/sda) /dev/sda /dev/sdb,无输出即表示完全一致
进阶场景处理
应对实际迁移中的常见限制:
- 目标盘比源盘小? 先用 GParted Live 缩小源盘最后一个分区,腾出足够未分配空间,再克隆;否则 dd 会失败或损坏分区表
- 节省存储空间? 制作压缩镜像:sudo dd if=/dev/sda bs=4M status=progress | gzip > sda-backup.img.gz;恢复时:gunzip -c sda-backup.img.gz | sudo dd of=/dev/sdb bs=4M
-
源盘有坏道? conv=noerror,sync 已启用容错,但若大量错误,建议改用 ddrescue(
sudo apt install gddrescue),它能智能跳过坏块并多次尝试恢复










