zoukankan      html  css  js  c++  java
  • 数据恢复软Extundelete

    1》概述

          作为一名运维人员,保证数据的安全是根本职责,所以在维护系统的时候,要慎重和细心,但是有时也难免发生出现数据被误删除的情况,这个时候该如何              快速、有效地恢复数据呢?

        1>如何使用rm –rf命令         

            在Linux系统下,通过 rm –rf 可以将任何数据直接从硬盘删除,并且没有任何提示,同时Linux下也没有与Windows下回收站的功能,也就意味着数据                    在删除后通过常规的手段是无法恢复的,因此使用这个命令要非常慎重,在使用rm命令的的时候,比较稳妥的方法就是命令参数放到后面,这样有一个提                      醒作用,  那么在企业当中其实保证数据最安全的方法就是做好备份,虽然备份不是万能的,但是没有备份是万万不行的,任何数据工具都有一定的局限                        性,都不能保证完整的恢复出所有的数据,因此,把备份作为核心,把数据恢复工具作用辅助是运维必须坚持的一种准则;

        2>extundelete和ext3grep的异同         

            在Linux 下,基于开源的数据恢复工具有很多,常见的有debugfs,R-Linux,ext3grep,extundelete等,比较常用的有ext3grep和extundelete,这两个                       工具的恢复基本一样,只是exturndelete功能更加强大;

              exturndelete 是基于Linux的一个数据恢复工具,它通过分析文件系统的日志,解析出所有文件的inode的信息,从而可以恢复Linux下主流的ext3 ext4                       文件系统被下被误删除的文件,而ext3grep紧紧只能恢复ext3文件系统的恢复,在恢复速度上,extundelete要快很多,因为extundelete恢复机制是扫描                            inode和恢复数据同时进行,并且支持耽搁文件恢复,但各目录恢复、inode恢复、block恢复,完整磁盘恢复等,而ext3grep就略显不足了,它需要首先扫                      描完要恢复数据的所有inode信息,然后才开始恢复数据,所以在恢复速度上相对来说比较慢,并且在功能上也不支持目录恢复、时间恢复等;

        3>extundelete恢复的原理                

             在介绍使用extundelete 进行恢复数据之前,简单的介绍一下inode的知识,在Linux下可以通过”ls -id”命令查询某个文件或者目录的inode值,例如查看目                   录的inode值,可以输入: ls –id / 查看根目录的inode值,由此可知,根目录的inode值为2,在利用extundelete恢复文件时并不依赖特定文件格式,首先                           extundelete会通过文件系统的inode信息,来获得当前文件系统下的所有文件信息,包括存在和已经删除的文件,这些信息包括文件名和inode,然后利用                       inode信息结合去查询该inode所在的block的位置,包括直接块,间接块等信息,最后利用dd命令将这些信息备份出来,从而恢复数据文件;

    2》extundelete的使用

        1>安装extundelete         

            extundelete 官方地址为http://extundelete.sourceforge.net/ 其目前稳定版本是extundelete-0.2.4.tar.bz2 ,

            在安装extundelelete之前需要安装e2fsprogs和e2fsprogs-libs两个一依赖包,e2fsprogs和e2fsprogs-libs安装非常简单,

          安装依赖包:

            # yum -y install e2fsprogs e2fsprogs-libs e2fslibs-dev e2fslibs-dev e2fsprogs-devel

            网上YUM或者官方默认YUM  直接  yum install e2fsprogs* 就可以了。

            # tar -xvf extundelete-0.2.4.tar.bz2

            #cd   extundelete-0.2.4

            # ./configure && make && make install

          出现警告的,可以忽略。

         2>extundelelte恢复单个文件        

          多增加一块硬盘/dev/sdb 分区为/dev/sdb1

          # mkdir /datazeng

          # mount /dev/sdb1 /datazeng

          # vim /datazeng/1.txt

          # cp /etc/passwd /datazeng

          # cp –rf /boot/grub/ /datazeng/

          # sync;sync;sync; 注意创建文件或者复制文件会首先在内存标记,sync时数据落地到磁盘,否则将恢复失败,

          # rm /datazeng/* -rf  开始删除数据

          # umount /dev/sdb1  在删除删除后,立即需要将这个分区卸载,

          这一步很重要,并且在误删除文件后应尽快将磁盘挂载为只读;越早进行,恢复的成功机率就越大;

          # extundelete /dev/sdb1 --inode 2  开始查询/dev/sdb1可恢复的数据

          # extundelete /dev/sdb1 --restore-file passwd 开始恢复单个数据,

            使用—resotre-file参数

          NOTICE: Extended attributes are not restored.

          Loading filesystem metadata ... 64 groups loaded.

          Loading journal descriptors ... 37 descriptors loaded.

          Successfully restored file passwd

          [root@master /]# ls RECOVERED_FILES/

            passwd

            extundelete恢复单个文件的参数是”—restore-file”,这里需要注意是的”—restore-file”后面指定的是恢复文件路径,这个路径是文件的相对路径,相对                        路径是相对于原来文件存储路径而言,比如:

           原来的文件存储路径是/datazeng/passwd ,那么恢复的时候不需要加绝对路径。直接加相对路径即可;

           原来文件存储的路径是/datazeng/test/1.txt 那么恢复的时候直接在参数后面加test/1.txt 即可;

          在文件恢复成功后,extundelete命令默认在执行命令的目录下创建一个RECOVERED_FILES的目录,此目录用于存放恢复的文件,所以执行extundelete                    命令当前目录必须是可写的;

        3>extundelelte恢复单个目录          

          [root@master /]# extundelete /dev/sdb1 --restore-directory /grub

            NOTICE: Extended attributes are not restored.

            Loading filesystem metadata ... 64 groups loaded.

            Loading journal descriptors ... 65 descriptors loaded.

            Searching for recoverable inodes in directory /grub ...

            20 recoverable inodes found.

            Looking through the directory structure for deleted files ...

            5 recoverable inodes still lost.

          [root@master /]# ls RECOVERED_FILES/

            grub

        4>extundelelte恢复所有误删除 数据          

          [root@master /]# extundelete /dev/sdb1 --restore-all

            NOTICE: Extended attributes are not restored.

            Loading filesystem metadata ... 64 groups loaded.

            Loading journal descriptors ... 65 descriptors loaded.

            Searching for recoverable inodes in directory / ...

            20 recoverable inodes found.

            Looking through the directory structure for deleted files ...

            0 recoverable inodes still lost.

          [root@master /]# ls RECOVERED_FILES/

            grub  passwd

         5>extundelelte恢复某个时间的              

          after 恢复某时间之后的被删除的数据, before恢复某时间段之前被删除的数据

          [root@master /]# date +%s

            1409111629

          # extundelete --before 1409111629 --restore-all /dev/sdb1

            错误:小提示每次做测试了,有点人为了方便,在测试完成之后, mkfs.ext4 /dev/sdb1  再重新挂载,写入数据后,再删除,卸载,再测试;

               如果一个分区被2次格式化后,在往里面填充数据后,自己手动建立的数据将不可恢复,只能通过别的地方CP复制过来的数据才可以恢复,想                                 要重新测试;请把虚拟机新增加的硬盘移除掉,在重新增加,进行分区,测试;

            注意此软件还有很多BUG存在,特别对一些大文件恢复。还有很大缺陷。并且不能保证100%的恢复 ,所以只能救火使用;

  • 相关阅读:
    【poj2761】 Feed the dogs
    【bzoj1086】 scoi2005—王室联邦
    学堂在线
    【bzoj3757】 苹果树
    【uoj58】 WC2013—糖果公园
    博弈论学习笔记
    【poj2960】 S-Nim
    【poj2234】 Matches Game
    【poj1740】 A New Stone Game
    【bzoj1853】 Scoi2010—幸运数字
  • 原文地址:https://www.cnblogs.com/xiaocheche/p/7682103.html
Copyright © 2011-2022 走看看