如何恢复Linux镜像
导读:Linux镜像恢复的实用步骤 一、恢复前准备 明确镜像类型:是整盘镜像(如 /dev/sda 的扇区级备份)还是分区/目录级备份(如 tar.gz、rsync 拷贝)。 准备可启动介质:建议使用 LiveCD/USB(如 Ubuntu 安...
Linux镜像恢复的实用步骤
一、恢复前准备
- 明确镜像类型:是整盘镜像(如 /dev/sda 的扇区级备份)还是分区/目录级备份(如 tar.gz、rsync 拷贝)。
- 准备可启动介质:建议使用 LiveCD/USB(如 Ubuntu 安装盘)进入救援环境,避免在原系统盘上操作。
- 确认目标磁盘与分区:用 lsblk、fdisk -l 核对设备名(如 /dev/sda、/dev/sdb),确保目标盘容量不小于原盘或镜像对应分区。
- 备份关键数据:若目标盘有重要数据,先做额外备份;恢复会覆盖目标盘/分区数据。
- 校验镜像完整性:如可能,使用 sha256sum 校验镜像一致性。
二、方法一 整盘镜像恢复(dd 或 ddrescue)
- 适用场景:从整盘镜像(如 image.img)恢复到整块磁盘(如 /dev/sda)。
- 基本步骤:
- 启动到 Live 环境,确认设备名,挂载备份盘到如 /mnt/backup。
- 执行恢复(示例):
- 使用 dd:
sudo dd if=/mnt/backup/image.img of=/dev/sda bs=1M status=progress conv=noerror,sync - 使用 ddrescue(更健壮,适合有坏扇区):
sudo ddrescue -f /mnt/backup/image.img /dev/sda /mnt/backup/recovery.log
- 使用 dd:
- 等待完成后,执行 sync 并重启。
- 重要提示:
- 目标必须是整盘设备(如 /dev/sda),不要误写到分区(如 /dev/sda1)。
- 若镜像仅覆盖系统分区而非整盘,需按分区逐个恢复,并确保分区表/引导区匹配。
- 恢复后可能需要重建 initramfs 或修复引导(见下文“常见问题”)。
三、方法二 分区表与引导修复(MBR/GPT 与 GRUB)
- 仅分区表损坏时(有备份):
- 若曾备份过 MBR 的 446 字节引导代码,可用 dd 写回:
sudo dd if=/mnt/backup/sda.mbr of=/dev/sda bs=1 count=446 - 若备份的是包含分区表的更大镜像,可按需恢复前 64 字节(跳过前 446 字节的引导代码):
sudo dd if=/mnt/backup/sda.mbr of=/dev/sda bs=1 count=64 skip=446 seek=446 - 完成后用 fdisk -l 检查分区是否恢复。
- 若曾备份过 MBR 的 446 字节引导代码,可用 dd 写回:
- 引导修复(GRUB):
- 挂载目标系统分区并 chroot:
sudo mount /dev/sda1 /mnt/root
sudo mount --bind /dev /mnt/root/dev
sudo mount --bind /proc /mnt/root/proc
sudo mount --bind /sys /mnt/root/sys
sudo chroot /mnt/root - 重建 GRUB(BIOS/MBR 场景):
grub-install /dev/sda
update-grub - UEFI 场景:挂载 ESP 分区(如 /dev/sda2) 到 /boot/efi 后执行:
grub-install --target=x86_64-efi --efi-directory=/boot/efi --bootloader-id=GRUB
update-grub - 退出并重启:exit → umount -R /mnt/root → reboot。
- 挂载目标系统分区并 chroot:
四、方法三 文件系统级备份恢复(tar、rsync)
- 适用场景:从 tar.gz 或 rsync 备份恢复系统或目录。
- 恢复步骤:
- 启动到 Live 环境,分区并格式化目标分区(如 mkfs.ext4 /dev/sda1),然后挂载到 /mnt/root。
- 使用 tar 恢复:
sudo tar xvpfz /mnt/backup/system_backup.tar.gz -C /mnt/root - 或使用 rsync 恢复:
sudo rsync -aAX --info=progress2 /mnt/backup/ /mnt/root/ - 绑定挂载并 chroot:
for d in dev proc sys run; do sudo mount --bind /$d /mnt/root/$d; done
sudo chroot /mnt/root - 关键配置修正:
- 检查并修正 /etc/fstab 中的 UUID(可用 blkid 查看实际分区 UUID)。
- 确认 /boot/grub/grub.cfg 中的 root= 参数(UUID 或 /dev/sdX)正确。
- 视网络环境调整 /etc/network/interfaces 或 systemd 网络配置。
- 退出并重启:exit → umount -R /mnt/root → reboot。
五、常见问题与排查
- 镜像过大或目标盘更大:dd 会按镜像大小写入,目标盘剩余空间仍可用;如需扩展分区,后续用 growpart、resize2fs/xfs_growfs 调整。
- 恢复后无法启动:
- 检查 root= 参数与 fstab UUID 是否匹配实际磁盘;必要时临时改为 root=/dev/sdaX 验证。
- 重新安装/更新 GRUB(见上文)。
- 若提示 initramfs 相关错误,在 chroot 中执行 update-initramfs -u -k all(Debian/Ubuntu)或 dracut -f(RHEL/CentOS)。
- 有坏扇区或读取不稳定:优先使用 ddrescue,并保留日志以便续传。
- 目标盘容量更小:不能直接恢复;需先调整镜像或分区布局,或使用支持“按比例缩小”的工具(如 Clonezilla 的高级模式)。
声明:本文内容由网友自发贡献,本站不承担相应法律责任。对本内容有异议或投诉,请联系2913721942#qq.com核实处理,我们将尽快回复您,谢谢合作!
若转载请注明出处: 如何恢复Linux镜像
本文地址: https://pptw.com/jishu/750612.html
