恢复linux镜像需先确认类型:磁盘/分区镜像(如.img)用dd/ddrescue写回整盘或分区;文件级备份(如.tar.gz)需挂载目标分区后tar/rsync解包,并chroot重装grub。

恢复备份镜像到新磁盘分区,关键看镜像是什么类型——是整盘/分区的原始字节镜像(如 .img),还是文件级备份(如 .tar.gz)。方法完全不同,选错会导致系统无法启动或数据丢失。
确认镜像类型再操作
先用 file /path/to/image.img 或 fdisk -l /path/to/image.img 查看镜像结构:
- 如果显示分区表(如 “Disk /path/... has ... sectors”)、有多个分区信息 → 是 磁盘/分区镜像,适用 dd 恢复;
- 如果显示 “gzip compressed data” 或解压后是普通目录结构 → 是 文件级备份,需挂载 + tar/rsync 恢复;
- 如果是 Clonezilla、Deepin 备份工具生成的 .zsync/.img 文件,建议优先用对应工具还原,避免手动出错。
用 dd 恢复磁盘/分区镜像
适用于 dd、ddrescue 或 Clonezilla 生成的原始镜像(含分区表、引导区)。
- 启动 Live 系统(如 Ubuntu Live USB),用
lsblk或sudo fdisk -l确认目标盘设备名(如/dev/sdb),务必核对无误; - 整盘恢复(镜像对应整个磁盘):
sudo dd if=backup.img of=/dev/sdb bs=4M status=progress conv=noerror,sync - 仅恢复到某一分区(镜像只含一个分区,如
/dev/sda2):sudo dd if=part.img of=/dev/sdb1 bs=4M status=progress(目标分区需已存在且大小 ≥ 镜像); - 写完执行
sync,再重启;若新盘无法启动,可能需重装 GRUB:
挂载后 chroot 运行grub-install /dev/sdb和update-grub。
用 tar/rsync 恢复文件级备份
适用于用 tar -cpzf 或 rsync -aAX 备份的根目录、/boot、/home 等。
- Live 环境下格式化目标分区:
sudo mkfs.ext4 /dev/sdb1; - 挂载:
sudo mount /dev/sdb1 /mnt; - 恢复根系统:
sudo tar xvpfz system.tar.gz -C /mnt; - 若备份含独立
/boot,需额外挂载并解压到/mnt/boot; - 绑定必要目录并 chroot:
sudo mount --bind /dev /mnt/dev && sudo mount --bind /proc /mnt/proc && sudo mount --bind /sys /mnt/sys
然后sudo chroot /mnt,运行grub-install /dev/sdb和update-grub。
常见问题与避坑提醒
恢复失败多数源于细节疏忽:
-
设备名写反:
of=写成已挂载目录(如/mnt)会损坏数据,必须是块设备(/dev/sdb); -
容量不匹配:镜像大于目标分区会截断,小于则留白,可用
gparted或resize2fs扩容; -
UUID 冲突:恢复后若双系统启动异常,检查
/etc/fstab和 GRUB 配置中是否仍引用旧 UUID,可用blkid查新值并更新; - 引导失效:即使文件恢复成功,MBR/GPT 和 GRUB 未正确写入就无法启动,别跳过 chroot 重装步骤。











