首先来查询一下extundelete有么有安装:
[root@super ~]# extundelete --help
-bash: extundelete: command not found
没安装的同志紧跟大队伍往下走
下载extundelete
[root@super ~]# wget http://nchc.dl.sourceforge.net/project/extundelete/extundelete/0.2.4/extundelete-0.2.4.tar.bz2
解压进入
[root@super ~]# tar -jxf extundelete-0.2.4.tar.bz2
[root@super ~]# cd extundelete-0.2.4
[root@super extundelete-0.2.4]# ./configure
⑴ ./configure报错1:
configure: error: in
/usr/local/src/extundelete-0.2.4': configure:
config.log’ for
error: C++ compiler cannot create executables See
more details
分析:编译需要gcc-c++这个库
解决报错1:
[root@super ~]# yum -y install gcc-c++
⑵ 报错2:
configure: error: Can’t find ext2fs library
分析:extundelete依赖于ext2fs库
解决报错:
先查找一下相关安装包:
[root@super ~]# yum list | grep e2fs
e2fsprogs.x86_64 1.41.12-22.el6 @os
e2fsprogs-devel.x86_64 1.41.12-22.el6 @os
e2fsprogs-libs.x86_64 1.41.12-22.el6 @os
e2fsprogs-devel.i686 1.41.12-22.el6 os
e2fsprogs-libs.i686 1.41.12-22.el6 os
由结果可知需要安装e2fsprogs:
[root@super ~]# yum -y install e2fsprogs
装完还是失败就在光盘目录排除依赖关系安装一下:
[root@super ~]# rpm -ivh e2fsprogs-devel-1.41.12-18.el6.x86_64.rpm --nodeps
排(an)雷(zhuang)完毕,开始源码安装三部曲:
执行./configure编译完成
[root@super extundelete-0.2.4]# make -j 4
[root@super extundelete-0.2.4]# make install
搞个小分区(/dev/sda5)来做实验:
[root@super ~]# fdisk /dev/sda
[root@super ~]# mkfs.ext4 /dev/sda5 #分区格式化
[root@super ~]# mkdir -p /root/mount/sda5 #创建挂载点
[root@super ~]# mount /dev/sda5 /root/mount/sda5 #挂载分区
@进入挂载点目录并创建一些文件、目录
[root@super ~]# cd /root/mount/sda5
[root@super ~]# mkdir -p a/b/c/d
[root@super ~]# echo "hello" > a/b/c/d/a.txt
[root@super ~]# mkdir -p z/f
[root@super ~]# touch !$/f.txt
[root@super ~]# cp -a /etc/fstab /etc/passwd /boot/grub .
[root@super ~]# rm -rf * #手滑误删
@为了保存犯罪现场,避免不必要的更改,先卸载分区,或者挂载为只读文件系统:
[root@super ~]# umount /dev/sda5
[root@super ~]# mount -o remount,ro /dev/sdb5
大sir登场,extundelete开始恢复,先查看分区文件信息(从节点号为2开始查看):
[root@super ~]# extundelete --inode 2 /dev/sda5
[root@super ~]# mkdir test && cd test #创建一个目录存放恢复的文件
[root@super test]# extundelete --restore-inode 13 /dev/sda5
[root@super test]# ls
RECOVERED_FILES
[root@super test]# cd RECOVERED_FILES
[root@super RECOVERED_FILES]# ls
file.13
[root@super RECOVERED_FILES]# diff file.13 /etc/fstab
#无输出,即无差别
[root@super RECOVERED_FILES]# mv file.13 fstab #恢复原名
[root@super RECOVERED_FILES]# mount /dev/sda5 /root/mount/sda5 #重新挂载
[root@super RECOVERED_FILES]# mv fstab /root/mount/sda5 #将文件恢复到原目录下
[root@super test]# extundelete --restore-file passwd /dev/sda5
[root@super test]# cd RECOVERED_FILES
[root@super RECOVERED_FILES]# ls
passwd
[root@super test]# extundelete --restore-directory grub /dev/sda5
[root@super test]# cd RECOVERED_FILES
[root@super RECOVERED_FILES]# ls
grub
[root@super test]# extundelete --restore-all /dev/sda5
[root@super test]# cd RECOVERED_FILES
[root@super RECOVERED_FILES]# ls
fstab passwd grub a z
用法:extundelete [options] [–] device-file
extundelete常用的选项汇总(以下开头全是两个-):
–inode #:从节点号#开始查看文件系统中的文件
–superblock:打印超级块信息
–restore-inode:以inode号恢复文件
–restore-file:以文件名恢复文件
–restore-directory:以目录名恢复
–restore-all:恢复被删除的所有文件/目录