更新时间:2025-08-06 GMT+08:00

Linux实例数据恢复

当误删文件导致实例无法启动,即系统盘数据丢失时,您可以选择利用另一台可以正常启动的Linux实例进行数据恢复,或利用快照进行数据恢复。详细步骤如下。

  1. 关机原实例。

  2. 卸载需要恢复数据的系统盘,参考卸载云硬盘

    单击“确定”后等待片刻观察到卸载的硬盘已经不在原实例后,进行下一步。

  3. 为无法正常启动的Linux系统恢复磁盘数据,必须要利用能够正常启动的Linux系统实现,主要原理是将原实例的系统启动盘作为数据盘,挂载到正常Linux实例上,然后进行数据恢复操作。在华为云上有两种方案可以选择。
    1. 利用另一台正常的Linux实例实现。
      1. 将步骤2卸载的云硬盘挂载到正常Linux实例上,参考挂载非共享云硬盘,挂载成功后无需初始化。

      2. 登录该Linux实例。
    2. 利用快照技术实现。
      1. 为需要恢复数据的系统盘创建快照,参考创建云硬盘快照
      2. 将原Linux实例重装操作系统,参考重装操作系统
      3. 使用快照创建云硬盘,参考使用快照创建云硬盘
      4. 2.b2.c都执行成功后,将2.c创建的云硬盘挂载到原Linux实例,参考挂载非共享云硬盘

      5. 登录该Linux实例。

    为确保数据安全,请务必在进行数据恢复前为原硬盘创建快照。若无法通过现有方式恢复数据,可以利用快照恢复硬盘后,使用专业的数据恢复软件进行数据恢复工作。

  4. 执行lsblkfdisk -lu命令查看磁盘信息,图中/dev/vdb为需要恢复数据的云硬盘,可以观察到/dev/vdb1说明磁盘分区信息正常,以实际需要恢复的云硬盘设备名为准。

    • 若磁盘分区表信息未损坏,继续步骤5
    • 若磁盘分区表信息损坏,继续步骤6
  5. 执行mount /dev/vdb1 /mnt命令将磁盘挂载到/mnt路径。

    执行cd /mnt命令查看原实例系统盘的数据,根据需要从对应路径下查找恢复数据即可。

  6. 再次执行lsblkfdisk -lu命令查看磁盘信息,图中/dev/vdb是需要恢复的磁盘,但由于分区信息损坏或丢失,无法显示/dev/vdb1。

  7. 执行fdisk /dev/vdb命令进行磁盘分区。

    在用fdisk进行磁盘分区的过程中出现咨询“Do you want to remove the signature? [Y]es/[N]o”时,说明fdisk识别到存在旧的分区表。

    • 选择“No”会保留旧的分区表,然后输入w保存旧分区表。
    • 若选择“Yes”会清除原分区表,创建新的分区,虽然数据不会被立刻覆盖,但可能无法直接访问原有文件。

  8. 执行mount /dev/vdb1 /mnt命令挂载云硬盘到/mnt挂载点。
    • 若挂载成功,继续步骤9
    • 若挂载失败,继续步骤10
  9. 根据需要从对应的路径下查找恢复的数据即可。

  10. 安装testdisk。
    • CentOS系统操作命令:sudo yum -y install testdisk
    • Ubuntu系统操作命令:sudo apt install -y testdisk

  11. 进入testdisk的修复界面,执行testdisk /dev/vdb,请按需更换设备名。

    testdisk界面中,以方向键进行选择,回车键进行确认,其余功能键位会在屏幕下方进行提示展示。

  12. 选择[Proceed],按下回车键。

  13. 选择待扫描的分区表类型,一般为[Intel],若为GPT分区则选择[EFI GPT],按下回车键。

  14. 选择[Analyse],按回车键。

  15. 若未看到分区信息,提示“No partition is bootable”,选择[Quick Search],按回车键。

    待搜索完成后可以看到分区信息,如下图所示,一般会默认选中该分区。

    • 如需恢复分区,按回车键,继续步骤16
    • 如仅需恢复数据,按P键,列出文件,继续步骤17
  16. 选择[Write]后继续按回车键保存分区。

    根据提示保存分区按Y键。

    按照默认选择的[OK],按回车键。

    退出testdisk后执行partprobe /dev/vdb手动刷新分区表。

    重新挂载分区,查看磁盘数据情况,根据路径查到文件。

  17. 使用方向键到需要恢复的文件或文件夹,按C键进行复制。

    使用方向键选择目标目录,可以看到Directory后显示的当前路径,本次以恢复到/root为例,在/root目录按C键。

    复制成功后可以看到提示“Copy done!”并且会提示复制成功和失败的文件数。如果复制的是文件夹,会需要等待复制完成。

    多次按Q键直到退出testdisk界面,进入目标路径/root的目录下查看,数据已恢复。

    在粘贴时会将待恢复数据的文件结构一起复制到目标路径中。如本次将原磁盘文件系统中root/fake.py文件复制到/root目录成功后,实际fake.py的路径会变成/root/root/fake.py。

    若操作系统可以正常启动,仅数据盘误删数据,数据恢复从步骤4开始到后面根据实际情况进行操作。