全部产品
Search
文档中心

云服务器 ECS:Linux实例数据恢复最佳实践

更新时间:Dec 24, 2024

在使用Linux实例的过程中,删除文件是一项非常常见的运维操作。及时清理不再使用的文件可以有效降低磁盘占用。然而,如果由于人为误操作、程序运行异常、计算机病毒攻击等原因误删除了本应保留的文件,您可能需要进行数据恢复。本文将为您介绍Linux实例中误删数据后的数据恢复整体思路及操作示例。

背景介绍

本文所介绍的数据恢复思路与工具,旨在为误删文件的用户提供尽可能全面的恢复方案。文件恢复的程度将根据用户的实际情况及操作方式有所不同。因此,在执行操作之前,建议您结合自身的实际情况,采取最合理的数据恢复措施,最大限度地保障数据的恢复。

前提条件

  • 在进行数据恢复操作之前,请您仔细阅读数据恢复的整体思路

  • 数据恢复涉及到较多专业知识,请确保您具备相应的知识与技能,以避免对待恢复的数据造成损害。

  • 在进行数据恢复操作之前,强烈建议您为待恢复数据的磁盘创建快照,以避免在恢复过程中因操作失误而对待恢复数据造成损坏。

警告
  • 本文所介绍的数据恢复工具为第三方开源软件,阿里云对文件恢复程度不作任何承诺。

  • 如您需要恢复的数据极其重要,而您在数据恢复方面并不具备相关的专业知识,建议您不要随意按照本教程进行操作。您可以考虑寻求专业的数据恢复机构进行处理。

整体思路

误删文件导致系统无法启动的数据恢复整体思路

当您以root用户的身份在Linux实例上执行了rm -rf /*命令后,您的整个根目录下的文件会被删除,此时操作系统启动后会进入grub命令行界面,如您需要恢复原系统盘上的数据,那么您可以参考如下处理思路,以完成数据恢复操作。

image

误删系统文件后的数据恢复整体思路

当您在Linux实例上执行了rm -rf <file_or_dir>命令后,您的文件或目录会被删除,如您需要恢复原系统盘上的数据,那么您可以参考如下处理思路,以完成数据恢复操作。

说明

如果您误删的文件导致您无法使用SSH协议连接Linux实例,那么您可以采用VNC的方式连接实例。

image

操作指南

上述内容介绍了两种常见的Linux实例误删数据后的数据恢复思路。接下来,将以下述3个条件为例,详细阐述数据恢复的操作步骤。

问题场景

  • 假设您执行了rm -rf /*命令,导致文件误删,从而使系统无法启动。

  • 在执行删除操作之前,未创建快照,或不希望通过快照进行数据恢复。

  • 您希望通过另一台Linux实例进行数据恢复操作。

操作概览

以上问题场景的操作流程如下所示。

image

操作步骤

  1. 为当前实例创建快照

    在执行数据恢复之前,建议您先对需要执行数据恢复操作的实例系统盘或数据盘创建快照,以实现通过快照对现有数据进行备份,防止后续恢复操作过程中误操作损坏文件。关于创建快照的操作,请参见创建快照

  2. 卸载要恢复数据的系统盘或数据盘,并挂载到新实例。

    警告

    在卸载系统盘时需要先进行关机操作,在控制台操作关机时请务必勾选强制停止选项,否则会导致关机操作失败。

    image

    通过卸载系统盘或数据盘,并将其挂载到另一台Linux实例,以便完成后续数据恢复操作,关于卸载及挂载数据盘的操作,请参见卸载或挂载系统盘

    警告

    在控制台操作将原系统盘作为数据盘挂载到新实例时,由于系统盘文件系统可能已经损坏,因此控制台会提示选择初始化方式。在此情况下,请勿选择立即操作,如选择通过控制台重新初始化该磁盘,可能会对即将恢复的数据造成损害。请选择关闭该对话框即可。

    image

  3. 恢复误删的数据

    通过使用testdisk工具,可以完成已删除数据的恢复操作。以下将以在Linux实例中恢复误删目录为例,介绍数据恢复的操作步骤。

    1. 运行以下命令,在新实例上安装testdisk工具。

      Alibaba Cloud Linux 3/2

      sudo yum install -y testdisk

      CentOS 6/7/8

      sudo yum install -y testdisk

      Ubuntu/Debian

      sudo apt install -y testdisk
    2. 运行以下命令,以确认当前磁盘分区情况。

      sudo fdisk -lu

      回显结果示例如下。

      Disk /dev/vda: 145 GiB, 155692564480 bytes, 304087040 sectors
      Units: sectors of 1 * 512 = 512 bytes
      Sector size (logical/physical): 512 bytes / 512 bytes
      I/O size (minimum/optimal): 512 bytes / 512 bytes
      Disklabel type: gpt
      Disk identifier: F51132A7-67B1-4650-806D-FD0DE6E1210C
      
      Device      Start       End   Sectors   Size Type
      /dev/vda1    2048      6143      4096     2M BIOS boot
      /dev/vda2    6144    415743    409600   200M EFI System
      /dev/vda3  415744 304087006 303671263 144.8G Linux filesystem
      
      
      Disk /dev/vdb: 40 GiB, 42949672960 bytes, 83886080 sectors
      Units: sectors of 1 * 512 = 512 bytes
      Sector size (logical/physical): 512 bytes / 512 bytes
      I/O size (minimum/optimal): 512 bytes / 512 bytes
      Disklabel type: gpt
      Disk identifier: F51132A7-67B1-4650-806D-FD0DE6E1210C
      
      Device      Start      End  Sectors  Size Type
      /dev/vdb1    2048     6143     4096    2M BIOS boot
      /dev/vdb2    6144   415743   409600  200M EFI System
      /dev/vdb3  415744 83886046 83470303 39.8G Linux filesystem

      上述示例中,/dev/vda为现有实例系统盘,/dev/vdb为原实例系统盘,作为数据盘挂载在现有实例中。

    3. 运行以下命令,使用testdisk打开指定设备。

      sudo testdisk /dev/vdb

      回显信息示例如下。选择Proceed(默认值)后按回车键确认。

      image

    4. 选择分区表类型进行扫描。一般选择Intel。如果您的数据盘采用GPT分区,选择EFI GPT。选择完成后按回车键确认。

      image

    5. 选择Analyse后按回车键,以进行磁盘分析。

      image

    6. 选择Quick Search后按回车键快速搜索。

      image

      在返回结果中会显示分区信息,如下图所示。选中需要恢复数据的分区,按回车键确认。

      image

    7. 选择Deeper Search,并按回车键确认。

      image

    8. 等待搜索完成后,会列出可恢复的文件。选择Continue并按回车键确认。

      image

      P键列出文件。

      image

      恢复指定文件、文件夹

      选中要恢复的文件,再按c键以复制文件。

      image

      恢复所有文件

      a键选中所有文件,再按C键以复制文件。

      image

    9. 选择目标目录后,按C键将选定文件复制至目标目录。在本示例中,以恢复至/home/ecs-user/data_recovery为例。

      image

      看到Copy done! 10 ok, 0 failed,表示复制成功,如下图所示。

      image

    10. 重新为现有实例打开一个新的连接,切换到/home/ecs-user/data_recovery目录查看。如果您能看到文件,说明文件恢复成功。

      image

相关文档