必须使用dd命令:它以扇区级原始复制方式备份,保留mbr/gpt、分区表、文件系统及未用空间,适用于裸机灾难恢复;操作前须用lsblk或fdisk -l准确定位/dev/sda等设备节点,避免误覆写,并配合bs=4m、conv=noerror,sync、status=progress等参数确保可靠性和可观测性。

用dd命令做磁盘分区备份,本质是扇区级原始复制,不是文件拷贝。它能完整保留MBR/GPT、分区表、文件系统结构和所有数据(包括未用空间),适合灾难恢复或裸机还原。
确认要备份的设备节点
操作前必须准确定位源设备,错一个字母就可能覆写系统盘:
- 运行lsblk或sudo fdisk -l,看TYPE列标为“disk”的才是整块磁盘(如/dev/sda),标为“part”的是分区(如/dev/sda1)
- 用df -h /查根目录挂载点,但注意:若要备份整个系统盘,if=应填/dev/sda,而不是/dev/sda2
- 检查是否已挂载:mount | grep sda,有输出说明被占用,需先sudo umount /dev/sda*
分区级备份:只备份特定分区
适用于/boot、根分区等关键区域,生成镜像更小、速度更快:
- 确认目标分区设备名和文件系统类型:lsblk -f | grep sda2
- 执行备份:sudo dd if=/dev/sda2 of=~/root.img bs=4M status=progress
- 镜像大小等于该分区总容量(非已用空间),恢复时目标分区必须≥源分区容量
- 多个分区需分别备份:sudo dd if=/dev/sda1 of=boot.img、sudo dd if=/dev/sda2 of=root.img
全盘镜像备份:含引导与全部分区
生成一个可直接用于裸机恢复的完整字节流文件:
- 确保外部存储已挂载且有足够空间:mkdir -p /mnt/backup && sudo mount /dev/sdb1 /mnt/backup
- 执行备份:sudo dd if=/dev/sda of=/mnt/backup/full.img bs=4M conv=noerror,sync status=progress
- conv=noerror让dd遇到坏道时跳过并填零,sync确保写入落盘
- 备份完成后运行sync,再安全卸载:sudo umount /mnt/backup
压缩存档与恢复要点
镜像文件体积大,压缩可节省空间,但恢复流程需额外解压步骤:
- 边读边压(不占临时磁盘空间):sudo dd if=/dev/sda bs=4M status=progress | gzip > backup.img.gz
- 恢复时必须先解出原始镜像:gunzip -c backup.img.gz | sudo dd of=/dev/sda bs=4M status=progress
- .gz文件不能直接dd回写,也不能用file命令识别为磁盘镜像
- 验证镜像完整性:sudo fdisk -l backup.img应显示与原盘一致的分区结构











