dd可对整块设备做扇区级镜像备份或克隆,必须确认源/目标设备名、容量匹配且源盘未挂载;常用命令为sudo dd if=/dev/sda of=/backup/sda.img bs=4m status=progress,支持gzip压缩及conv=noerror,sync增强可靠性。

能,但必须用 dd 对整块块设备操作,不能只备份挂载点或目录;否则不是“镜像”,只是文件复制。
确认源盘和目标盘设备名,别搞反了
误写 of=/dev/sda 会直接清空系统盘,这是最常出事的环节。
- 用
lsblk -d或sudo fdisk -l查看所有磁盘,重点关注TYPE列为disk的条目(如/dev/sda、/dev/nvme0n1),忽略带数字后缀的分区(如/dev/sda1) - 检查
SIZE列:目标盘容量必须 ≥ 源盘,否则克隆中途会被截断,且无法启动 - 运行
mount | grep sda,如果有输出,说明源盘正在被使用——必须先卸载或进 Live 环境再操作 - 建议在 Ubuntu Live 或 GParted Live 下执行,避免任何分区被挂载
用 dd 做扇区级全盘镜像(生成 .img 文件)
这不是“压缩包式备份”,而是把磁盘从第一个扇区到最后一个扇区原样读出来,存成二进制文件。MBR/GPT、空闲空间、残留数据全在里面。
- 基础命令:
sudo dd if=/dev/sda of=/backup/sda.img bs=4M status=progress - 加压缩节省空间(推荐):
sudo dd if=/dev/sda bs=4M status=progress | gzip > /backup/sda.img.gz - 恢复时解压写入:
gunzip -c /backup/sda.img.gz | sudo dd of=/dev/sda bs=4M status=progress - 注意:
bs=4M是平衡速度与内存占用的常用值;status=progress要求 GNU coreutils ≥ 8.24(CentOS 7+、Ubuntu 16.04+ 默认满足)
克隆到另一块物理硬盘(设备对设备)
适用于换 SSD、迁移系统等场景。目标盘内容会被完全覆盖,且必须是裸盘(无挂载、无 LVM/RAID 卷)。
- 执行命令:
sudo dd if=/dev/sda of=/dev/sdb bs=4M conv=noerror,sync status=progress -
conv=noerror,sync表示遇到坏道时跳过并填零,避免中断;sync强制写入缓存,防止断电丢数据 - 复制完成后立刻执行
sync命令,确保内核缓冲全部刷盘 - 别依赖“进度条结束就完事”——有些 SSD 缓存策略会让
dd显示完成但实际还在后台刷写
验证镜像是否真正一致
光看能不能启动不保险,MBR 或分区表差一个字节,后续就可能引导失败或分区错位。
- 比对 MBR:
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,无输出即表示全盘字节一致 - 检查分区结构:
sudo fdisk -l /dev/sda和sudo fdisk -l /dev/sdb的扇区起止位置、类型、标识要完全匹配
真正麻烦的不是命令本身,而是设备识别错误、源盘未卸载、目标盘容量不足这三类低级失误——它们不会报错,但会导致镜像无效或数据覆灭。每次执行前花 30 秒核对 lsblk 输出,比事后重做三遍都省时间。











