介绍两款Linux文件恢复工具,ext3grep与extundelete,可能在关键时刻会有所帮助。ext3grep仅对ext3文件系统有效,extundelete对ext3与ext4文件系统都有效
一 实验环境
1 软件环境
vmware workstation 9.0.1
ubuntu server 12.10
ext3grep 0.10.1
extundelete 0.2.4
2 外挂磁盘
这里外挂2个磁盘来模拟需要恢复的设备。可以通过两种方式实现
第一种:在虚拟机上添加2块虚拟磁盘,具体方法略
第二种:通过dd命令用文件模拟块设备
简单介绍下第二种方式的命令:
- cd /home
- dd if=/dev/zero of=sdc1 bs=1M count=100 #块大小为1M,数量为100,也就是100M
- mkfs.ext3 /home/sdc1 #ext3文件系统格式化
- mount /home/sdc1 /sdc
本实例采用第一种方式添加2块磁盘,添加后一块ext3格式化,另一块ext4格式化,然后挂载。具体操作过程省略
- mount 查看下
- /dev/sdb1 on /sdb type ext4 (rw)
- /dev/sdc1 on /sdc type ext3 (rw)
3 配置安装源列表
ubuntu配置好安装源列表后,安装软件非常方便,以下是经过测试有效的安装源列表:
- root@ubuntu-test:/home# cat /etc/apt/sources.list
- deb http://ubuntu.cn99.com/ubuntu/ quantal main restricted universe multiverse
- deb http://ubuntu.cn99.com/ubuntu/ quantal-updates main restricted universe multiverse
- deb http://ubuntu.cn99.com/ubuntu/ quantal-security main restricted universe multiverse
- deb http://ubuntu.cn99.com/ubuntu/ quantal-backports main restricted universe multiverse
- deb http://ubuntu.cn99.com/ubuntu-cn/ quantal main restricted universe multiverse
二、ext3grep恢复工具
1 安装ext3grep
在ubuntu服务器上可以使用以下命令直接安装ext3grep,使用这种方式可以直接安装相关的依赖关系包,真是太省心了。
- aptitude install ext3grep
安装完后,可以用以下命令验证下:
2 ext3grep查找被删除的文件
- ext3grep --ls --inode 2 /dev/sdc1
/dev/sdc1
显示目录vmware-tools-distrib下的文件,列表这个目录节点号
- ext3grep --ls --inode 8193 /dev/sdc1
以上红线条标注的表示已经被删除掉的文件或目录
如果想要显示出所有被删除文件的名字,用以下命令:
- ext3grep --ls --dump-names /dev/sdc1 > filename.txt #将显示结果放在一个文件中
3 恢复单个文件
恢复某个指定的文件,命令如下:
- ext3grep --restore-file VMwareTools-9.2.2-893683.tar.gz /dev/sdc1
然后在当前目录RESTORED_FILES目录下找到被恢复的文件
如果是恢复目录下面的指定文件要
加上相对路径
- ext3grep --restore-file vmware-tools-distrib/INSTALL.log /dev/sdc1
4 恢复整个设备上的文件
- ext3grep --restore-all /dev/sdc1
5 恢复指定时间点之前或之后的所有文件
- ext3grep --restore-all --after 1365661200 /dev/sdc1 #恢复Apr 11 14:20 2013之后被删文件
- ext3grep --restore-all --before 1365661200 /dev/sdc1 #恢复Apr 11 14:20 2013之前被删文件
在RHEL与Ubuntu上测试,发现after与before这两个参数好像没起作用,具体啥原因没暂时还没有找到。
三、extundelete恢复工具
1 extundelete软件安装
下载软件
- wget http://nchc.dl.sourceforge.net/project/extundelete/extundelete/0.2.4/extundelete-0.2.4.tar.bz2
安装e2fsprogs和e2fslibs
- sudo apt-get install e2fsprogs
安装e2fslibs-dev
- sudo apt-get install e2fslibs-dev
安装C++
- sudo apt-get install build-essential
安装extundelete
- tar -jxvf extundelete-0.2.4.tar.bz2
- cd extundelete-0.2.4
- ./configure --prefix=/usr/local/extundelete
- make && make install
验证是否安装成功
- cd /usr/local/extundelete/bin
- ./extundelete -v
2 查看被删除文件
标记为
”
Deleted
”
的文件则是被删除的文件
3 恢复指定的文件
- ./extundelete --restore-file aaa /dev/sdb1
4 完全恢复设备上文件
- ./extundelete --restore-all /dev/sdb1
5 恢复指定的时间点后被删文件
指定一个时间点
- date -d "Apr 11 14:30 2013" +%s
- 1365661800
恢复这个时间点后的文件
- ./extundelete --restore-all --after “1365661800” /dev/sdb1
如果要恢之前的就用before参数。extundelete命令与after结合使用,在进行恢复时非常有用,可以过滤掉那太旧的文件,减小恢复压力。
本文转自清风拂面 51CTO博客,原文链接:http://blog.51cto.com/crazy123/1178991