设为首页 收藏本站
查看: 488|回复: 0

[经验分享] ubuntu环境下数据误删除恢复--extundelete的恢复原理

[复制链接]
累计签到:8 天
连续签到:1 天
发表于 2015-10-31 13:37:15 | 显示全部楼层 |阅读模式
  1、 数据恢复软件extundelete介绍
  作为一名运维人员,保证数据的安全是根本职责,所以在维护系统的时候,要慎之又慎,但是有时难免会出现数据被误删除的情况,在这个时候该如何快速、有效地恢复数据呢?本节我们就来介绍一下Linux系统下常用的几个数据恢复工具。
  2、 如何使用“rm -rf”命令
  在Linux系统下,通过命令“rm -rf”可以将任何数据直接从硬盘删除,并且没有任何提示,同时Linux下也没有与Windows下回收站类似的功能,也就意味着,数据在删除后通过常 规的手段是无法恢复的,因此使用这个命令要非常慎重。在使用rm命令的时候,比较稳妥的方法是把命令参数放到后面,这样有一个提醒的作用。其实还有一个方 法,那就是将要删除的东西通过mv命令移动到系统下的/tmp目录下,然后写个脚本定期执行清除操作,这样做可以在一定程度上降低误删除数据的危险性。
  其实保证数据安全最好的方法是做好备份,虽然备份不是万能的,但是没有备份是万万不行的。任何数据恢复工具都有一定局限性,都不能保证完整地恢复出所有数据,因此,把备份作为核心,把数据恢复工具作为辅助是运维人员必须坚持的一个准则。
  3、 extundelete与ext3grep的异同
  在Linux下,基于开源的数据恢复工具有很多,常见的有debugfs、R-Linux、ext3grep、extundelete等,比较常用 的有ext3grep和extundelete,这两个工具的恢复原理基本一样,只是extundelete功能更加强大,本节重点介绍 extundelete的使用方式。
  extundelete是基于Linux的一个数据恢复工具,它通过分析文件系统的日志,解析出所有文件的inode信息,从而可以恢复Linux 下主流的ext3、ext4文件系统下被误删除的文件。而ext3grep仅支持ext3文件系统的恢复。在恢复速度上,extundelete要快很 多,因为extundelete的恢复机制是扫描inode和恢复数据同时进行,并且支持单个文件恢复、单个目录恢复、inode恢复、block恢复、 完整磁盘恢复等,而ext3grep就略显笨拙了,它需要首先扫描完要恢复数据的所有inode信息,然后才能开始数据恢复,所以在恢复速度上相对较慢, 并且在功能上也不支持目录恢复、时间段恢复等。
  4、 extundelete的恢复原理
  在介绍使用extundelete进行恢复数据之前,简单介绍下关于inode的知识。在Linux下可以通过“ls -id”命令来查看某个文件或者目录的inode值,例如查看根目录的inode值,可以输入:




  [iyunv@cloud1 ~]# ls -id  /  
  2 /
  
  由此可知,根目录的inode值为2。
  在利用extundelete恢复文件时并不依赖特定文件格式,首先extundelete会通过文件系统的inode信息(根目录的inode一 般为2)来获得当前文件系统下所有文件的信息,包括存在的和已经删除的文件,这些信息包括文件名和inode。然后利用inode信息结合日志去查询该 inode所在的block位置,包括直接块、间接块等信息。最后利用dd命令将这些信息备份出来,从而恢复数据文件。
  5、 安装extundelete
  extundelete的官方网站是http://extundelete.sourceforge.net/ ,其目前的稳定版本是extundelete-0.2.4。在安装extundelete之前需要安装e2fsprogs和e2fsprogs-libs两个依赖包。
  e2fsprogs和e2fsprogs-libs安装非常简单,这里不做介绍。但是对ubuntu系统而言需要安装的依赖包是



sudo apt-get install e2fslibs-dev
  下面是extundelete的编译安装过程:



  [iyunv@cloud1 app]# tar jxvf  extundelete-0.2.4.tar.bz2  
  [iyunv@cloud1 app]# cd extundelete-0.2.4  
  [iyunv@cloud1 extundelete-0.2.4]# ./configure
  [iyunv@cloud1 extundelete-0.2.4]# make  
 [iyunv@cloud1 extundelete-0.2.4]# make install
  成功安装extundelete后,会在系统中生成一个extundelete可执行文件。extundelete的使用非常简单,可以通过“extundelete  --help”获得此软件的使用方法。
  6、 extundelete用法详解



extundelete --help
  安装完成后,就可以执行数据恢复操作了,本节详细介绍extundelete每个参数的含义。extundelete用法如下:
  extundelete [options] [action] device-file
  其中,参数(options)有:
  --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,通过指定数据块大小来打开文件系统,一般用于查看已经知道大小的文件。
  7、 实战:extundelete恢复数据的过程
  在数据被误删除后,第一时间要做的是卸载被删除数据所在的磁盘或磁盘分区,如果是系统根分区的数据遭到误删除,就需要将系统进入单用户,并且将根分 区以只读模式挂载。这样做的原因很简单,因为将文件删除后,仅仅是将文件的inode结点中的扇区指针清零,实际文件还存储在磁盘上,如果磁盘以读写模式 挂载,这些已删除的文件的数据块就可能被操作系统重新分配出去,在这些数据块被新的数据覆盖后,这些数据就真的丢失了,恢复工具也无力回天。所以,以只读 模式挂载磁盘可以尽量降低数据块中数据被覆盖的风险,以提高恢复数据成功的比率。
  8、通过extundelete恢复单个文件
  8.1. 模拟数据误删除环境
  在演示通过extundelete恢复数据之前,我们首先要模拟一个数据误删除环境,这里我们以ext3文件系统为例,在ext4文件系统下的恢复方式与此完全一样。简单的模拟操作过程如下:
  



    [iyunv@cloud1 ~]# mkdir /data  
[iyunv@cloud1 ~]# mkfs.ext3 /dev/sdc1  
[iyunv@cloud1  mount /dev/sdc1  /data  
[iyunv@cloud1 ~]# cp /etc/passwd  /data  
[iyunv@cloud1 ~]# cp -r /app/ganglia-3.4.0  /data  
[iyunv@cloud1 ~]# mkdir /data/test  
[iyunv@cloud1 ~]# echo "extundelete test" > /data/test/mytest.txt  
[iyunv@cloud1 ~]# cd /data  
[iyunv@cloud1 data]# md5sum  passwd  
0715baf8f17a6c51be63b1c5c0fbe8c5  passwd  
[iyunv@cloud1 data]# md5sum  test/mytest.txt  
eb42e4b3f953ce00e78e11bf50652a80  test/mytest.txt  
[iyunv@cloud1 data]# rm -rf /data/*
  8.2. 卸载磁盘分区
  在将数据误删除后,立刻需要做的就是卸载这块磁盘分区:



    [iyunv@cloud1 data]# cd /mnt  
[iyunv@cloud1 mnt]# umount /data
  8.3. 查询可恢复的数据信息
  通过extundelete命令可以查询/dev/sdc1分区可恢复的数据信息:



    [iyunv@cloud1 /]# extundelete  /dev/sdc1  --inode 2  
......  
File name                                       | Inode number | Deleted status  
.                                                 2  
..                                                2  
lost+found                                        11             Deleted  
passwd                                            49153          Deleted  
test                                              425985         Deleted  
ganglia-3.4.0                                     245761         Deleted
  根据上面的输出,标记为Deleted状态的是已经删除的文件或目录。同时还可以看到每个已删除文件的inode值,接下来就可以恢复文件了。
  8.4. 恢复单个文件
  执行如下命令开始恢复文件:



    [iyunv@cloud1 /]# extundelete  /dev/sdc1  --restore-file passwd  
Loading filesystem metadata ... 40 groups loaded.  
Loading journal descriptors ... 54 descriptors loaded.  
Successfully restored file passwd  
[iyunv@cloud1 /]# cd RECOVERED_FILES/  
[iyunv@cloud1 RECOVERED_FILES]# ls  
passwd  
[iyunv@cloud1 RECOVERED_FILES]# md5sum  passwd  
0715baf8f17a6c51be63b1c5c0fbe8c5  passwd
  extundelete恢复单个文件的参数是“--restore-file”,这里需要注意的是,“--restore-file”后面指定的是 恢复文件路径,这个路径是文件的相对路径。相对路径是相对于原来文件的存储路径而言的,比如,原来文件的存储路径是/data/passwd,那么在参数 后面直接指定passwd文件即可,如果原来文件的存储路径是/data/test/mytest.txt,那么在参数后面通过“test /mytest.txt”指定即可。
  在文件恢复成功后,extundelete命令默认会在执行命令的当前目录下创建一个RECOVERED_FILES目录,此目录用于存放恢复的文件,所以执行extundelete命令的当前目录必须是可写的。
  根据上面的输出,通过md5sum命令校验,校验码与之前的完全一致,表明文件恢复成功。
  9、 通过extundelete恢复单个目录
  extundelete除了支持恢复单个文件,也支持恢复单个目录,在需要恢复目录时,通过“--restore-directory”选项即可恢复指定目录的所有数据。
  继续在上面模拟的误删除数据环境下操作,现在要恢复/data目录下的ganglia-3.4.0文件夹,操作如下:



    [iyunv@cloud1 mnt]# extundelete  /dev/sdc1  --restore-directory /ganglia-3.4.0  
Loading filesystem metadata ... 40 groups loaded.  
Loading journal descriptors ... 247 descriptors loaded.  
Searching for recoverable inodes in directory /ganglia-3.4.0 ...  
781 recoverable inodes found.  
Looking through the directory structure for deleted files ...  
4 recoverable inodes still lost.  
[iyunv@cloud1 mnt]# ls  
RECOVERED_FILES  
[iyunv@cloud1 mnt]# cd RECOVERED_FILES/  
[iyunv@cloud1 RECOVERED_FILES]# ls  
ganglia-3.4.0
  可以看到之前删除的目录ganglia-3.4.0已经成功恢复了,进入这个目录检查发现:所有文件内容和大小都正常。
  转载参考:http://book.iyunv.com/art/201409/452478.htm

运维网声明 1、欢迎大家加入本站运维交流群:群②:261659950 群⑤:202807635 群⑦870801961 群⑧679858003
2、本站所有主题由该帖子作者发表,该帖子作者与运维网享有帖子相关版权
3、所有作品的著作权均归原作者享有,请您和我们一样尊重他人的著作权等合法权益。如果您对作品感到满意,请购买正版
4、禁止制作、复制、发布和传播具有反动、淫秽、色情、暴力、凶杀等内容的信息,一经发现立即删除。若您因此触犯法律,一切后果自负,我们对此不承担任何责任
5、所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其内容的准确性、可靠性、正当性、安全性、合法性等负责,亦不承担任何法律责任
6、所有作品仅供您个人学习、研究或欣赏,不得用于商业或者其他用途,否则,一切后果均由您自己承担,我们对此不承担任何法律责任
7、如涉及侵犯版权等问题,请您及时通知我们,我们将立即采取措施予以解决
8、联系人Email:admin@iyunv.com 网址:www.yunweiku.com

所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其承担任何法律责任,如涉及侵犯版权等问题,请您及时通知我们,我们将立即处理,联系人Email:kefu@iyunv.com,QQ:1061981298 本贴地址:https://www.yunweiku.com/thread-133217-1-1.html 上篇帖子: Ubuntu 14.04 LTS 初装成 下篇帖子: 三十项调整助力 Ubuntu 13.04 更上一层楼
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

扫码加入运维网微信交流群X

扫码加入运维网微信交流群

扫描二维码加入运维网微信交流群,最新一手资源尽在官方微信交流群!快快加入我们吧...

扫描微信二维码查看详情

客服E-mail:kefu@iyunv.com 客服QQ:1061981298


QQ群⑦:运维网交流群⑦ QQ群⑧:运维网交流群⑧ k8s群:运维网kubernetes交流群


提醒:禁止发布任何违反国家法律、法规的言论与图片等内容;本站内容均来自个人观点与网络等信息,非本站认同之观点.


本站大部分资源是网友从网上搜集分享而来,其版权均归原作者及其网站所有,我们尊重他人的合法权益,如有内容侵犯您的合法权益,请及时与我们联系进行核实删除!



合作伙伴: 青云cloud

快速回复 返回顶部 返回列表