本文中含有需要您注意的重要提示信息,忽略该信息可能对您的业务造成影响,请务必仔细阅读。
在使用Linux实例的过程中,删除文件是一项非常常见的运维操作。及时清理不再使用的文件可以有效降低磁盘占用。然而,如果由于人为误操作、程序运行异常、计算机病毒攻击等原因误删除了本应保留的文件,您可能需要进行数据恢复。本文将为您介绍Linux实例中误删数据后的数据恢复整体思路及操作示例。
背景介绍
本文所介绍的数据恢复思路与工具,旨在为误删文件的用户提供尽可能全面的恢复方案。文件恢复的程度将根据用户的实际情况及操作方式有所不同。因此,在执行操作之前,建议您结合自身的实际情况,采取最合理的数据恢复措施,最大限度地保障数据的恢复。
前提条件
在进行数据恢复操作之前,请您仔细阅读数据恢复的整体思路。
数据恢复涉及到较多专业知识,请确保您具备相应的知识与技能,以避免对待恢复的数据造成损害。
在进行数据恢复操作之前,强烈建议您为待恢复数据的磁盘创建快照,以避免在恢复过程中因操作失误而对待恢复数据造成损坏。
本文所介绍的数据恢复工具为第三方开源软件,阿里云对文件恢复程度不作任何承诺。
如您需要恢复的数据极其重要,而您在数据恢复方面并不具备相关的专业知识,建议您不要随意按照本教程进行操作。您可以考虑寻求专业的数据恢复机构进行处理。
整体思路
误删文件导致系统无法启动的数据恢复整体思路
当您以root
用户的身份在Linux
实例上执行了rm -rf /*
命令后,您的整个根目录下的文件会被删除,此时操作系统启动后会进入grub
命令行界面,如您需要恢复原系统盘上的数据,那么您可以参考如下处理思路,以完成数据恢复操作。
误删系统文件后的数据恢复整体思路
当您在Linux实例上执行了rm -rf <file_or_dir>
命令后,您的文件或目录会被删除,如您需要恢复原系统盘上的数据,那么您可以参考如下处理思路,以完成数据恢复操作。
如果您误删的文件导致您无法使用SSH
协议连接Linux实例,那么您可以采用VNC
的方式连接实例。
操作指南
上述内容介绍了两种常见的Linux实例误删数据后的数据恢复思路。接下来,将以下述3个条件为例,详细阐述数据恢复的操作步骤。
问题场景
假设您执行了
rm -rf /*
命令,导致文件误删,从而使系统无法启动。在执行删除操作之前,未创建快照,或不希望通过快照进行数据恢复。
您希望通过另一台Linux实例进行数据恢复操作。
操作概览
以上问题场景的操作流程如下所示。
操作步骤
为当前实例创建快照
在执行数据恢复之前,建议您先对需要执行数据恢复操作的实例系统盘或数据盘创建快照,以实现通过快照对现有数据进行备份,防止后续恢复操作过程中误操作损坏文件。关于创建快照的操作,请参见创建快照。
卸载要恢复数据的系统盘或数据盘,并挂载到新实例。
警告在卸载系统盘时需要先进行关机操作,在控制台操作关机时请务必勾选强制停止选项,否则会导致关机操作失败。
通过卸载系统盘或数据盘,并将其挂载到另一台Linux实例,以便完成后续数据恢复操作,关于卸载及挂载数据盘的操作,请参见卸载或挂载系统盘。
警告在控制台操作将原系统盘作为数据盘挂载到新实例时,由于系统盘文件系统可能已经损坏,因此控制台会提示选择初始化方式。在此情况下,请勿选择立即操作,如选择通过控制台重新初始化该磁盘,可能会对即将恢复的数据造成损害。请选择关闭该对话框即可。
恢复误删的数据
通过使用testdisk工具,可以完成已删除数据的恢复操作。以下将以在Linux实例中恢复误删目录为例,介绍数据恢复的操作步骤。
运行以下命令,在新实例上安装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
运行以下命令,以确认当前磁盘分区情况。
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
为原实例系统盘,作为数据盘挂载在现有实例中。运行以下命令,使用
testdisk
打开指定设备。sudo testdisk /dev/vdb
回显信息示例如下。选择
Proceed
(默认值)后按回车键确认。选择分区表类型进行扫描。一般选择Intel。如果您的数据盘采用
GPT
分区,选择EFI GPT。选择完成后按回车键确认。选择Analyse后按回车键,以进行磁盘分析。
选择Quick Search后按回车键快速搜索。
在返回结果中会显示分区信息,如下图所示。选中需要恢复数据的分区,按回车键确认。
选择Deeper Search,并按回车键确认。
等待搜索完成后,会列出可恢复的文件。选择Continue并按回车键确认。
按P键列出文件。
恢复指定文件、文件夹
选中要恢复的文件,再按c键以复制文件。
恢复所有文件
按a键选中所有文件,再按C键以复制文件。
选择目标目录后,按C键将选定文件复制至目标目录。在本示例中,以恢复至/home/ecs-user/data_recovery为例。
看到
Copy done! 10 ok, 0 failed
,表示复制成功,如下图所示。重新为现有实例打开一个新的连接,切换到/home/ecs-user/data_recovery目录查看。如果您能看到文件,说明文件恢复成功。
相关文档
关于创建快照的操作,请参见创建快照。
关于卸载及挂载数据盘的操作,请参见卸载或挂载系统盘。
关于重新初始化系统盘的操作,请参见重新初始化系统盘。
关于使用快照创建云盘的操作,请参见使用快照创建云盘。
关于使用VNC登录实例的操作,请参见使用VNC登录实例。
关于使用SSH协议登录Linux实例的操作,请参见使用Workbench工具以SSH协议登录Linux实例。
关于Linux实例中的数据恢复工具的介绍,请参见Linux实例中数据恢复。