温馨提示×

Linux镜像怎么恢复

小樊
36
2025-11-16 13:57:12
栏目: 智能运维

Linux镜像恢复的实用步骤

一、先确认镜像类型与恢复方式

  • 镜像类型通常分为两类:
    1. 磁盘/分区镜像(由 ddddrescue 生成,包含分区表、引导区与数据);
    2. 文件系统/目录级备份(由 tarrsync 生成,仅包含文件与目录)。
  • 选择恢复方式:
    • 磁盘/分区镜像 → 用 dd/ddrescue 写回整盘或分区;
    • 文件系统/目录备份 → 挂载目标分区后 tar/rsync 解包或同步;
    • 需要省心的图形化整机还原 → 使用 Clonezilla 等工具进行分区/磁盘克隆或镜像恢复。

二、方法一 使用 dd 或 ddrescue 恢复整盘或分区镜像

  • 适用:恢复由 dd/ddrescue 制作的 .img/.dd 镜像到目标磁盘/分区。
  • 步骤:
    1. 启动到 LiveCD/救援系统(如 Ubuntu 安装介质“Try Ubuntu”),确认设备名:
      • 查看磁盘:lsblksudo fdisk -l;目标盘常见为 /dev/sda/dev/vda
    2. 备份重要数据(若目标盘有在用数据,先全盘备份)。
    3. 写回镜像(示例):
      • 整盘恢复(覆盖目标盘所有内容):
        • 精确容量镜像:
          • sudo dd if=/path/image.img of=/dev/sda bs=1M status=progress conv=noerror,sync
        • 镜像小于目标盘(自动填充):
          • sudo dd if=/path/image.img of=/dev/sda bs=1M status=progress; sudo parted /dev/sda mklabel gpt; sudo partprobe
      • 分区镜像恢复到某分区(如镜像只包含单个分区):
        • sudo dd if=/path/part.img of=/dev/sda2 bs=1M status=progress
      • 有坏扇区/读取不稳时优先用 ddrescue
        • 安装:sudo apt-get install gddrescue
        • 恢复:sudo ddrescue -d -f /path/image.img /dev/sda /path/logfile.log
    4. 同步缓存并关机:sync && sudo poweroff
    5. 启动目标机器,检查分区与引导是否正常。
  • 注意:
    • of= 必须是目标磁盘/分区设备,切勿写成已挂载目录;
    • 目标盘容量小于镜像会失败;大于镜像时可用后续分区扩容工具调整;
    • 写盘会破坏目标盘原有数据,务必核对设备名与镜像来源。

三、方法二 使用文件系统/目录级备份恢复(tar 或 rsync)

  • 适用:恢复由 tar/rsync 备份的系统或数据目录。
  • 步骤:
    1. 启动到 LiveCD/救援系统,分区并格式化目标根分区(如 /dev/sda2),然后挂载:
      • sudo mkfs.ext4 /dev/sda2
      • sudo mount /dev/sda2 /mnt
    2. 若是 tar 包:
      • sudo tar xvpfz /path/system_backup.tar.gz -C /mnt
    3. 若是 rsync 备份:
      • sudo rsync -aAX --info=progress2 /path/backup_2025XXXX/ /mnt/
    4. 绑定挂载必要目录并 chroot
      • sudo mount --bind /dev /mnt/dev && sudo mount --bind /proc /mnt/proc && sudo mount --bind /sys /mnt/sys
      • sudo chroot /mnt
    5. 修复 /etc/fstab:将根分区 UUID 改为当前实际分区(可用 blkid 查看),文件系统类型保持一致;
    6. 安装/修复引导(以 GRUB 为例):
      • BIOS:grub-install /dev/sda && update-grub
      • UEFI:grub-install --target=x86_64-efi --efi-directory=/boot/efi --bootloader-id=GRUB && update-grub
    7. 退出并卸载:
      • exit
      • sudo umount /mnt/{dev,proc,sys,}; sudo umount /mnt
    8. 重启:sudo reboot
  • 提示:
    • 若镜像来自不同机器,网络配置(如 /etc/netplan//etc/sysconfig/network-scripts/)需按新环境调整;
    • 使用 rsync 时建议排除 /dev、/proc、/sys、/run、/mnt、/media 等虚拟或临时文件系统目录。

四、方法三 使用 Clonezilla 进行整机镜像恢复

  • 适用:无需命令行,图形化选择镜像与目标磁盘/分区进行克隆或还原。
  • 步骤:
    1. 下载 Clonezilla 稳定版 ISO,制作 U 盘启动
    2. 启动选择 device-device(设备到设备)或 device-image(镜像到设备)模式;
    3. 选择源镜像或源磁盘,再选择目标磁盘/分区,确认写入;
    4. 等待完成后重启,进入系统检查分区与引导。

五、常见问题与排错要点

  • 启动失败提示 GRUB Error 15 / file not found:检查 /boot 分区是否挂载、内核与 initramfs 是否存在、/etc/fstabUUID 是否正确。
  • 出现 dracut: don’t know how to handle root=UUID=…:临时改用 root=/dev/sdaX 启动,进入系统后修正 /etc/fstab 与 GRUB 配置。
  • 文件系统报错(如 GConf 检查失败):检查 /tmp 权限,必要时执行 chmod 1777 /tmp
  • 镜像容量与目标盘不匹配:镜像大于目标盘会失败;小于目标盘可恢复后在系统内扩容分区与文件系统。
  • 恢复后网络异常:核对 /etc/network/interfaces/etc/netplan/NetworkManager 配置,确保网卡名称与 UUID 一致。

0