更新时间:2026-05-12 GMT+08:00
分享

Linux实例数据恢复

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

背景简介

在进行数据恢复时,主要会用到数据恢复工具fdisk、testdisk、partprobe,在三种工具的帮助下进行数据恢复。

数据恢复工具

默认安装

用途区别

fdisk

主要用于分区管理,负责常规管理与重建

testdisk

主要用于恢复磁盘分区或数据,负责侦查与深度修复,当完全无法识别分区情况时需要用到

partprobe

主要用于在不重启的情况下让内核重新读取磁盘分区信息,负责刷新与生效

整体流程思路是将系统盘作为普通数据盘,挂载在一台正常的Linux实例上,利用数据恢复工具进行数据恢复工作 。

操作步骤

准备工作如下。

  1. 关机原实例,参考关机

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

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

  3. 为无法正常启动的Linux系统恢复磁盘数据,必须要利用能够正常启动的Linux系统实现,主要原理是将原实例的系统启动盘作为数据盘,挂载到正常Linux实例上,然后进行数据恢复操作。在华为云上有两种方案可以选择。

    方案一:利用另一台正常的Linux实例实现
    1. 步骤2卸载的云硬盘挂载到正常Linux实例上,参考挂载非共享云硬盘,挂载成功后无需初始化。

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

    6. 登录该Linux实例。

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

数据恢复操作步骤如下。

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

    • 若磁盘分区表信息未损坏,继续步骤2
    • 若磁盘分区表信息损坏,继续步骤3

  2. 执行mount /dev/vdb1 /mnt命令将磁盘挂载到/mnt路径。

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

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

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

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

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

  5. 执行mount /dev/vdb1 /mnt命令挂载云硬盘到/mnt挂载点。

    • 若挂载成功,继续步骤6
    • 若挂载失败,继续步骤7

  6. 根据需要从对应的路径下查找恢复的数据即可。

  7. 安装testdisk。

    • CentOS系统操作命令:sudo yum -y install testdisk
    • Ubuntu系统操作命令:sudo apt install -y testdisk

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

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

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

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

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

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

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

    • 如需恢复分区,按回车键,继续步骤13
    • 如仅需恢复数据,按P键,列出文件,继续步骤14

  13. 选择[Write]后继续按回车键保存分区。

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

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

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

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

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

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

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

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

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

    若操作系统可以正常启动,仅数据盘误删数据,可以根据实际情况,只进行数据恢复的步骤。

相关文档