新闻中心

浏览量:0
2019-09-03 21:24
华为云计算
大数据
RedHat
修改系统密码
Cisco
修复文件系统
修改密码
VMware
修改系统密码
Cisco
大数据
修复文件系统
华为云计算
修改密码
RedHat
VMware

热门关键词

这里有最新的公司动态,这里有最新的网站设计、移动端设计、网页相关内容与你分享

[红帽] Linux下恢复误删数据的最佳实践 (RH60002)

收藏

Extundelete工具简介

Extundelete 是基于 linux 的开源数据恢复软件。在使用阿里云的云服务器时,如果您不小心误删除数据,并且 Linux 系统也没有与 Windows 系统下回收站类似的功能,您可以方便快速安装此工具。

在利用 extundelete 恢复文件时并不依赖特定文件格式,首先extundelete会通过文件系统的inode信息(根目录的inode一般为2)来获得当前文件系统下所有文件的信息,包括存在的和已经删除的文件,这些信息包括文件名和inode。然后利用inode信息结合日志去查询该inode所在的block位置,包括直接块,间接块等信息。最后利用dd命令将这些信息备份出来,从而恢复数据文件。该工具最给力的一点就是支持ext3/ext4双格式分区恢复,基于整个磁盘的恢复功能较为强大。

注意:在实际线上恢复过程中,切勿将extundelete安装到你误删的文件所在硬盘,这样会有一定几率将需要恢复的数据彻底覆盖

 

适用对象

适用于网站访问量小、有少量 ECS 实例或服务器的用户。

本实验使用的软件及版本:

 

  • e2fsprogs-devel  e2fsprogs (相关的依赖库) gcc-c++  make(编译器等)
  • Extundelete-0.2.4

 

说明:extundelete需要libext2fs版本1.39或更高版本来运行,但是对于ext4支持,请确保您有e2fsprogs版本1.41或更新版本(可以通过运行命令“dumpe2fs”并记录其输出的版本)。

说明:以上版本是写文档时的软件版本。您下载的版本可能与此不同。

 本小节的主要内容:在Linux环境中,安装部署extundelete工具。

 

 

1. 远程登录到本实验提供的Linux操作实验环境。登录时,请使用 我的实验资源 提供的 extundelete数据恢复(Linux)ECS实例的 外网地址用户 以及 密码

说明:用户通过本地远程访问Linux操作系统的详细操作步骤,请参考 帮助文档 中 Mac用户 远程访问Linux系统 或 Windows用户 远程访问Linux系统

 

2. 执行如下命令,查看已下载的extundelete安装包:extundelete-0.2.4.tar.bz2 。

ls

说明:本实验已下载 extundelete安装包,用户可通过如下命令,下载 extundelete安装包

wget  http://zy-res.oss-cn-hangzhou.aliyuncs.com/server/extundelete-0.2.4.tar.bz2

 

3. 执行如下命令,安装tundelete的相关依赖和库:

yum -y install  bzip2  e2fsprogs-devel  e2fsprogs  gcc-c++ make

    等待1-3分钟,完成相关的依赖和库的安装和编译。

 

4. 执行如下命令,解压extundelete到当前目录下。

tar -xvjf extundelete-0.2.4.tar.bz2

 

5. 执行如下命令,查看解压结果:

ls

 

6. 执行如下命令,进入extundelete-0.2.4的目录中:

cd extundelete-0.2.4 

 

7. 执行如下命令,检测系统配置,并生成makefile:

./configure

 

8. 执行如下命令,编译安装extundelete软件:

make && make install

   

完成后,通过运行结果可以看到默认文件是安装到usr/locla/bin的路径下。

 

9. 执行如下命令,进入新增src目录,并查看extundelete可执行文件。

cd src
ls

 

至此,完成extundelete工具的全部安装部署。

 

说明:可以通过如下命令,查看 extundelete工具的参数使用说明。具体的参数说明信息,请参考本实验的 常见问题

extundelete --help

 

2.3 模拟数据误删除

    本小节主要内容:挂载一块数据盘,并在数据盘中写入新的数据,并模拟数据删除操作。

1. 通过如下步骤,将分配的数据盘挂载到ECS服务器上。

 

1)执行如下命令,查看分配的数据盘 /dev/vdb

fdisk -l

 

2)执行如下命令,对数据盘进行分区:

fdisk /dev/vdb

    在如下的参数配置中,输入如下信息:

 

  •   Command(m for help)输入 n
  •   Command action 输入p
  •   Partition number(1-4,default 1)输入1
  •   First cylinder 和 Last cylinder 处直接输入 回车,使用默认的配置;
  •   Command(m for help)输入 w,从而使上面的配置生效。

 

 

3)执行如下命令,对数据盘进行格式化:

mkfs.ext3 /dev/vdb1

 

2. 通过如下步骤,创建文件路径,并挂载磁盘,以及新建实验数据:

 

1)执行如下命令,创建文件路径:

mkdir /alidata

 

2)执行如下命令,将文件夹挂载到数据盘上:

mount /dev/vdb1 /alidata

 

3)执行如下命令,新建一个文件“hello.txt”,写入“Hello Aliyun”信息,并查看数据:

echo "Hello Aliyun">/alidata/hello.txt

 

4)执行如下命令,生成hello.txt文件的md5值。主要用于下一小节恢复文件时,进行校验。

md5sum hello.txt

 

3. 通过如下步骤,模拟用户数据误删除操作:

 

1)执行如下命令,进入/alidata 路径下,并删除hello.txt文件:

cd /alidata
rm -rf hello.txt

 

2)执行如下命令,结束使用分区的进程数:

说明:在真实的工作环境中,若已确认没有资源占用,可跳过此步骤。

fuser -k /alidata

 

2.4 恢复误删数据

    本小节主要内容:卸载数据盘,并通过extundelete工具恢复误删除数据。

1. 首先,重新登录到ECS服务器。

 

2. 执行如下命令,卸载数据盘。

说明:任何数据恢复工具,在使用前均要将恢复的数据盘卸载,或将挂载数据盘设为只读。这样的做法是防止数据被覆盖。

umount /dev/vdb1 

 

3. 执行如下命令,使用extundelete工具,对整个 /dev/vdb1 分区进行搜索,并查看hello.txt的 Inode number 和 Delete status

说明:--inode参数值设为 2 ,是对整个分区进行搜索。如果需要进入目录搜索,只需要制定目录 节点即可。

extundelete --inode 2 /dev/vdb1

 

4. 执行如下命令,使用extundelete工具,恢复删除文件:

说明:通过上一步,我们可以看到 hello.txt 的节点值为 12 --restore-inode 参数值是需要恢复的文件 Inode number 。

extundelete  --restore-inode 12  /dev/vdb1

 

5. 执行如下命令,可以查看到当前目录下,新增一个 RECOVERED_FILES 文件夹,并查看到文件 file.12

说明:恢复的文件是按照 extundelete 工具的自己的命名规范,进行命名的

ls
ll RECOVERED_FILES/

6. 执行如下命令,查看恢复的文件md5值,判断是否恢复原有的文件:

md5sum RECOVERED_FILES/file.12 

    对比上一小节的hello.txt的md5值,可以看到原文件的md5值和恢复的md5值相同。

说明:实验中生成的md5值可能与图片所示的值不同,请以真实的实验数据为主。

 

3.1 常见问题

 

1. extundelete的参数(option)动作(action)说明:

 

  • 参数(option)

 

--version, -[vV],显示软件版本号。

--help,显示软件帮助信息。

--superblock,显示超级块信息。

--journal,显示日志信息。

--after dtime,时间参数,表示在某段时间之后被删的文件或目录。

--before dtime,时间参数,表示在某段时间之前被删的文件或目录。

 

  • 动作(action)

 

--inode ino,显示节点“ino”的信息。

--block blk,显示数据块“blk”的信息。

--restore-inode ino[,ino,...],恢复命令参数,表示恢复节点“ino”的文件,恢复的文件会自动放在当前目录下的RESTORED_FILES文件夹中,使用节点编号作为扩展名。

--restore-file 'path',恢复命令参数,表示将恢复指定路径的文件,并把恢复的文件放在当前目录下的RECOVERED_FILES目录中。

--restore-files 'path',恢复命令参数,表示将恢复在路径中已列出的所有文件。

--restore-all,恢复命令参数,表示将尝试恢复所有目录和文件。

-j journal,表示从已经命名的文件中读取扩展日志。

-b blocknumber,表示使用之前备份的超级块来打开文件系统,一般用于查看现有超级块是不是当前所要的文件。

-B blocksize,表示使用数据块大小来打开文件系统,一般用于查看已经知道大小的文件。

首页    RedHat    [红帽] Linux下恢复误删数据的最佳实践 (RH60002)