恢复ECS误删数据的最佳实践

1.1 背景知识

Linux删除说明

在 Linux 系统下,通过命令 rm -rf 可以将任何数据直接从硬盘删除,并且没有任何提示,同时 Linux 下也没有与 Windows 下回收站类似的功能,也就意味着,数据在删除后通过常规的手段是无法恢复的,因此使用这个命令要非常慎重。在使用 rm 命令的时候,比较稳妥的方法是:

1)把命令参数放到后面,这样有一个提醒的作用。

2)将要删除的东西通过 mv 命令移动到系统下的 /tmp 目录下,然后写个脚本定期执行清除操作

如上做法可以在一定程度上降低误删除数据的危险性。

其实保证数据安全最好的方法是做好备份,虽然备份不是万能的,但是没有备份是万万不能的。任何数据恢复工具都有一定局限性,都不能保证完整地恢复出所有数据,因此,把备份作为核心,把数据恢复工具作为辅助是运维人员必须坚持的一个准则。

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”并记录其输出的版本)。

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

2.2 安装部署extundelete工具

本小节的主要内容:在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,表示使用数据块大小来打开文件系统,一般用于查看已经知道大小的文件。

时间: 2024-08-09 02:02:30

恢复ECS误删数据的最佳实践的相关文章

大数据Hadoop最佳实践(V3)

一:课程简介: Hadoop是当下云计算大数据的王者. Hadoop不仅是一个大数据的计算框架,同时也是大数据的存储平台. 使用Hadoop,用户可以在不了解分布式底层细节的情况下开发出分布式程序,从而可以使用众多廉价的计算设备的集群的威力来高速的运算和存储,而且Hadoop的运算和存储是可靠的.高效的.可伸缩的,能够使用普通的社区服务器出来PB级别的数据,是分布式大数据处理的存储的理想选择 使用Hadoop可以主要完成: 1,构建离线处理平台,完成海量离线数据的存储分析,相对于传统的关系型数据

优云软件数据专家最佳实践:数据挖掘与运维分析

这份研究报告,作者是优云软件数据专家陈是维,在耗时1年时间制作的一份最佳实践,今天和大家分享下,关于<数据采矿和运维分析>,共同探讨~ 数据挖掘(Data Mining)是从大量数据中提取或"挖掘"知识. 广义数据挖掘:数据挖掘是从存放在数据库.数据仓库或其它信息库中的大量数据挖掘有趣知识的过程. 数据挖掘技术侧重:1)概率与数理统计 2)数据库技术 3)人工智能技术 4)机器学习. 1. 数据清理:消除噪音或不一致数据 2. 数据集成:多种数据源可以组合在一起 3. 数据

Bulk Load-HBase数据导入最佳实践

一.概述 HBase本身提供了非常多种数据导入的方式,通常有两种经常使用方式: 1.使用HBase提供的TableOutputFormat,原理是通过一个Mapreduce作业将数据导入HBase 2.还有一种方式就是使用HBase原生Client API 这两种方式因为须要频繁的与数据所存储的RegionServer通信.一次性入库大量数据时,特别占用资源,所以都不是最有效的.了解过HBase底层原理的应该都知道,HBase在HDFS中是以HFile文件结构存储的,一个比較高效便捷的方法就是使

魅族MX3\MX2 在MTP模式下恢复手机误删数据教程

昨天帮室友的魅族mx3升级系统,结果不小心把他手机里的照片删了.但是自从flyme升级到3后,以前的U盘模式就改成了MTP模式,这样再连接电脑后就没办法用电脑上的数据恢复软件恢复数据了,因为压根就检测不到磁盘…… 然后怀着无比guilty的心情,我在网上找了好多教程,结果没有一个能用的......后来结合网上查到的资料,经过一番折腾,终于功夫不负有心人折腾出一个切实可用的方法,在我的二妹和室友的三妹上亲测可用.现在无私分享给煤油们!!! 开始之前先说明两点: 一,数据恢复是一个概率性的操作,不能

ajax 请求二进制流 图片 文件 XMLHttpRequest 请求并处理二进制流数据 之最佳实践

写在前面 :从提出需求到完美的解决问题,实现过程是曲折的. 需求:在前(web client)后(Restful Service)端完全解耦的模式框架下,webclient需要请求 Service 返回的图片文件(二进制流),并在client端显示. 第一步思考:拿到此需求, 基于程序员的狂妄心里,思考到显示图片而已,jquery ajax直接get请求 将返回data 赋值给img标签的src属性即可嘛,so easy~ 不知天高地后的小子开始码代码,经过几分钟给出了以下的代码,并自信满满的准

用HAWQ轻松取代传统数据仓库(十七) —— 最佳实践

一.HAWQ参数配置最佳实践 (原文地址:http://hawq.incubator.apache.org/docs/userguide/2.1.0.0-incubating/bestpractices/config_hawq_bestpractices.html)        在$GPHOME/etc/hawq-site.xml文件中维护HAWQ的配置参数.该文件存在于所有HAWQ实例上,并可以通过Ambari或使用HAWQ命令行接口进行修改.使用一致的策略(Ambari或命令行接口)维护h

atitit.手动配置列表文件的选择and 数据的层次结构 attilax总结最佳实践--yaml

atitit.手动配置列表文件的选择and 数据的层次结构 attilax总结最佳实践--yaml 1. yaml是个好的选择.. 1 2. 数据的层次结构--结构:hash,list,和block literal. 1 3. yaml跟json的实现区别 1 4. xml的优点及json的问题 2 4.1. ide友好 2 4.2. JSON也适合与任何数据,复杂struts难以阅读 2 4.3. json难以手工维护 3 5. 基于YAML的开源项目解析YAML文件最常用的Java库是JvY

oracle 误删数据的恢复

误删数据的恢复 oracle恢复删除的数据 分为两种方法:scn和时间戳两种方法恢复. 一.通过scn恢复删除且已提交的数据 1.获得当前数据库的scn号 select current_scn from v$database; (切换到sys用户或system用户查询) 查询到的scn号为:1499223 2.查询当前scn号之前的scn select * from 表名 as of scn 1499220; (确定删除的数据是否存在,如果存在,则恢复数据:如果不是,则继续缩小scn号) 3.恢

Atitit.列表页and查询条件的最佳实践(1)------设定搜索条件and提交查询and返回json数据

Atitit.列表页and查询条件的最佳实践(1)------设置查询条件and提交查询and返回json数据 1. 1.?配置条件字段@Conditional 1 1 2. 2.?配置条件字段显示类型为[email protected](displayType?=?displayType.rang,?rangStart?=?rang.start,?rangEnd?=?rang.end,op=op.range) 1 3. #----show  condition  page  list 1 4.