dd克隆磁盘前必须确认:①目标盘容量≥源盘已用空间;②源盘无写入活动(建议用live系统);③目标盘所有分区已卸载或未挂载。

dd命令克隆磁盘前必须确认的三件事
直接用 dd 克隆整盘,出错就是数据全丢,不是警告是事实。动手前必须盯住:目标盘容量 ≥ 源盘已用空间(不是总容量)、源盘无写入活动(最好从Live系统操作)、目标盘所有分区已被卸载或未挂载。常见翻车点是误把 /dev/sdb 当成目标却没清空它上面的旧系统,结果克隆完无法启动——dd 不管目标内容,只管覆盖。
dd if=/dev/sda of=/dev/sdb bs=4M conv=noerror,sync 的参数含义和取舍
bs=4M 是关键性能变量,太小(如默认 512B)慢十倍以上,太大(如 64M)可能触发某些USB转接卡缓存异常;实测 4M 在 SATA 和多数 USB 3.0 盘上最稳。conv=noerror,sync 看似保险,但实际会让坏块处填零并继续,导致克隆体启动失败——除非你明确要跳过坏道抢救数据,否则不要加 noerror。正常克隆建议用:dd if=/dev/sda of=/dev/sdb bs=4M status=progress,status=progress 能实时看进度,比盲等强太多。
克隆后无法启动?MBR/GPT 和 /boot 都得对齐
即使 dd 完全成功,新盘也可能不启动,原因就两个:
- 源盘是 GPT 分区但 BIOS 启动模式下没写入正确的 Protective MBR
-
/boot分区在源盘是单独挂载的,而目标盘虽复制了数据,但grub没重装到新盘的硬盘首扇区
sudo grub-install --target=i386-pc /dev/sdb<br>sudo update-grub注意
/dev/sdb 是目标盘设备名,不是分区名;如果源是 UEFI 系统,则需挂载 /boot/efi 并用 --target=x86_64-efi 参数。
更安全的替代方案:用 dd 做基础镜像,再用 rsync 增量同步
频繁克隆?别每次都 dd 整盘。先用 dd 备一份基础镜像文件(如 dd if=/dev/sda of=image.img bs=4M),之后日常同步改用:
rsync -aAXH --delete /mnt/src/ /mnt/dst/其中
/mnt/src 是原系统挂载点,/mnt/dst 是目标盘挂载点。这样既避开 dd 对 SSD 寿命的无谓消耗,又能保留权限、ACL、硬链接等细节。唯一代价是得手动同步 /boot 和重装 GRUB。
真正麻烦的从来不是命令敲错,而是克隆完忘了检查新盘的 UUID 是否和 /etc/fstab 冲突,或者没更新 initramfs 里的磁盘标识——这些不会报错,但下次重启就卡在 initramfs shell 里。










