> CentOS > CentOS运维 >

CentOS6.5安装使用数据恢复软件extundelete

一、安装

(1) 首先extundelete软件所依赖e2fsprogs e2fsprogs-libs e2fsprogs-devel软件包

(2) 下载extundelete,官方网站是http://extundelete.sourceforge.net/ 目前的稳定版本是             extundelete-0.2.4

 

[root@local app]# tar jxvf extundelete-0.2.4.tar.bz2

[root@localapp]# cd  extundelete-0.2.4

[root@localapp]# ./configure  结果Writing generated files to disk

[root@localapp]# make  结果extundelete.cc:571: 警告:未使用的参数‘flags

[root@localapp]# make install

 结果  /usr/bin/install -c extundelete'/usr/local/bin'

 

 

(3) 解压安装

(4) 安装完成后,就可以进行数据恢复的操作了

二、实用方法

(1) 命令格式 extundelete [options’选项’] [action‘命令’] device-file‘设备文件’

(2) 参数介绍extundelete –help

     

     参数

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

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

      --superblock显示超级块信息

      --journal,显示日志信息

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

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

     动作

      --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,通过制定数据块大小来打开文件系统,一般用于查看已经知道大小的文件

 

三、extundelete数据恢复过程

在数据被误删后,第一时间要做的是卸载被删除数据所在的磁盘或者磁盘分区,如果是系统根分区的数据遭到误删,就需要将系统进入单用户,并且将根目录以只读的模式挂载,这样做的原因是当问及被删除后,仅仅是将文件的inode节点中的扇区指针清零,实际文件还储存在磁盘上,如果磁盘以只读模式挂载,这些已删除文件的数据块就可能被操作系统重新分配出去了,在这些数据块被新的数据覆盖后,这些数据就真的丢失了,恢复工具也没办法恢复。

(1) 通过extundelete恢复单个文件操作以ext4文件系统环境为例,我自己添加一块磁盘设备为/dev/sdb4

[root@local 桌面]# mkdir /data

[root@local 桌面]# mkfs.ext4 /dev/sdb4

[root@local 桌面]# mount /dev/sdb4 /data/

[root@local 桌面]# cp /etc/passwd /data/

[root@local data]# cp -r /root/app/extundelete-0.2.4 /data/

[root@local data]# md5sum passwd

90a8c0bb0bea88d6ce2ab252bd55ecfc passwd

[root@local data]# rm -rf /data/*

 

(2) 卸载磁盘分区

[root@local data]# cd

[root@local ~]# umount /data/

 

(3) 通过extundelete命令查下/dev/sdb4分区可恢复的数据信息一般”root”目录的 inode 值为

         2, 一个分区挂载到一个目录下时,这个”root”目录的 inode 值为 2

[root@local ~]# extundelete /dev/sdb4 --inode 2

 

………
File name | Inode number | Deleted status

. 2

.. 2

lost+found 11 Deleted

passwd 12 Deleted

extundelete-0.2.4 131073 Deleted

 

(4) 恢复单个文件,恢复单个文件的参数是--restore-file 这里需要注意的是参数后面

         指定的是恢复文件路径,这个路径是文件的相对路径。相对路径是相对于原来存储路径而言

         的,如果存储路径是/data/passwd,那么参数后面直接写pass我的,如果原来的路径是/data/ 

         extundelete-0.2.4/ config.h那么在参数后面就写extundelete-0.2.4/ config.h即可。

[root@local ~]# extundelete /dev/sdb4 --restore-file passwd

NOTICE: Extended attributes are not restored.

Loading filesystem metadata ... 40 groups loaded.

Loading journal descriptors ... 52 descriptors loaded.

Successfully restored file passwd

[root@local ~]# cd RECOVERED_FILES/

[root@local RECOVERED_FILES]# ls

passwd

[root@local RECOVERED_FILES]# md5sum passwd

90a8c0bb0bea88d6ce2ab252bd55ecfc passwd

 

通过extundelete恢复单个目录

 

(1) 通过参数—restore-directory选项即可恢复指定目录的数据,想要恢复/data/extundelete-           0.2.4下的数据

[root@local extundelete-0.2.4]# extundelete /dev/sdb4 --restore-directory extundelete-0.2.4

[root@local extundelete-0.2.4]# cd RECOVERED_FILES/

[root@local RECOVERED_FILES]# ls

extundelete-0.2.4

[root@local RECOVERED_FILES]# du -sh extundelete-0.2.4/

4.8M extundelete-0.2.4/

 

可以看到目录extundelete-0.2.4已经恢复了

 

通过extundelete恢复所有误删的数据

(1) 当需要恢复的数据较多时,一个一个的恢复是非常繁琐的,此时可以通过--restore-all来恢复所有的文件或文件夹

[root@local ~]# cd /

[root@local /]# ls

app cgroup etc lib64 misc opt sbin sys var

bin data home lost+found mnt proc selinux tmp

boot dev lib media net root srv usr

[root@local /]# extundelete /dev/sdb4 --restore-all

[root@local /]# ls

app cgroup etc lib64 misc opt root srv usr

bin data home lost+found mnt proc sbin sys var

boot dev lib media net RECOVERED_FILES selinux tmp

[root@local /]# cd RECOVERED_FILES/

[root@local RECOVERED_FILES]# ls

extundelete-0.2.4 passwd

[root@local RECOVERED_FILES]# du -sh extundelete-0.2.4/

4.8M extundelete-0.2.4/

 

通过extundelete恢复某个时间段的数据

(1) 当删除的数据量非常大的时候,很多数据没有用,这时我们要恢复某个时间短的数据,

         extundelete提供了--after,--before参数。

       首先假设在/data分区下刚刚创建了extundelete-0.2.4.tar.bz2,然后删除此文件,接着卸          

       载/data分区,开始恢复一小时内的数据操作如下:

[root@local data]# cp /root/extundelete-0.2.4.tar.bz2 /data/

[root@local data]# ls

extundelete-0.2.4.tar.bz2

[root@local data]# date +%s

1447823133

[root@local data]# rm -rf extundelete-0.2.4.tar.bz2

[root@local data]# cd

[root@local ~]# umount /data

[root@local ~]# date +%s

1447823221

[root@local ~]# cd /data/

[root@local data]# ls

[root@local data]# extundelete --after 1447819621 --restore-all /dev/sdb4

[root@local data]# ls

[root@local data]# cd RECOVERED_FILES/

[root@local RECOVERED_FILES]# ls

extundelete-0.2.4.tar.bz2

 

注:可以看到刚才删除的文件已经恢复这个操作需要注意--after参数后面跟的是时间的总秒数起算时间“1970-01-01 00:00:00 UTC”通过date +%s 命令可将当前时间转换成总秒数之后恢复1小时以前的数据就需要用1447823221减去60*60=3600所得的数

(责任编辑:IT)