误删文件的恢复-extundelete

首先来查询一下extundelete有么有安装:

[root@super ~]# extundelete --help
-bash: extundelete: command not found

没安装的同志紧跟大队伍往下走

extundelete安装

下载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:
error: C++ compiler cannot create executables See
config.log’ for
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

操起extundelete就是干

大sir登场,extundelete开始恢复,先查看分区文件信息(从节点号为2开始查看):

  • 查看原文件系统信息
[root@super ~]# extundelete --inode 2 /dev/sda5

误删文件的恢复-extundelete_第1张图片
由图可真相出已经被删除的文件及其inode号 ↑o↑

[root@super ~]# mkdir test && cd test     #创建一个目录存放恢复的文件
  • 以节点号恢复(–restore-inode)
[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     #将文件恢复到原目录下
  • 以文件名恢复(–restore-file)
[root@super test]# extundelete --restore-file passwd /dev/sda5
[root@super test]# cd RECOVERED_FILES
[root@super RECOVERED_FILES]# ls
passwd
  • 恢复目录(–restore-directory):
[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
  • 注意
    1、extundelete在rhel6中无法恢复空文件和空目录,如上例中恢复的z文件夹中只有f文件夹,而没有f.txt文件(空文件),具体可用tree命令查看。
    2、extundelete默认恢复到当前文件夹下的RECOVERED_FILES目录中(不存在则自动创建)。
    3、extundelete默认只可恢复ext3/ext4文件系统的文件。

小小总结一下

用法:extundelete [options] [–] device-file
extundelete常用的选项汇总(以下开头全是两个-):

–inode #:从节点号#开始查看文件系统中的文件
–superblock:打印超级块信息
–restore-inode:以inode号恢复文件
–restore-file:以文件名恢复文件
–restore-directory:以目录名恢复
–restore-all:恢复被删除的所有文件/目录

你可能感兴趣的:(linux下的小工具)