Linux文件恢复利器 ext3grep与extundelete

Linux文件恢复利器 ext3grep与extundelete

icon_rar.gifextundelete-0.2.4.tar.bz2

icon_rar.gifext3grep-0.10.2.tar.gz

https://www.cnblogs.com/lazyfang/p/7699994.html


ext3grep依赖e2fsprogs-devel和e2fsprogs-lib包,因此要先安装它们才能编译ext3grep。

# tar zxvf ext3grep-0.10.2.tar.gz -C /usr/src/

# cd /usr/src/ext3grep-0.10.2/

# ./configure

# make

# make install


使用ext3grep查看文件系统

• ext3grep可以帮助我们通过文件系统底层读取数据。

例如,使用--ls --inode的参数组合,我们就可以查

看指定文件或目录的信息了。

# ext3grep /dev/sdb1 --ls --inode 2


使用ext3grep恢复文件

• 使用--restore-inode的参数组合,我们就可以恢复

指定的文件。

# ext3grep /dev/sdb1 --restore-inode 57146


https://blog.csdn.net/exitgogo/article/details/41983355



介绍两款 Linux 文件恢复工具, ext3grep extundelete ,可能在关键时刻会有所帮助。 ext3grep 仅对 ext3 文件系统有效, extundelete ext3 ext4 文件系统都有效

 

一 实验环境
软件环境
vmware workstation 9.0.1
ubuntu server 12.10 
ext3grep 0.10.1
extundelete 0.2.4
 
外挂磁盘
这里外挂 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)

 

配置安装源列表
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 恢复工具
安装 ext3grep
ubuntu 服务器上可以使用以下命令直接安装 ext3grep ,使用这种方式可以直接安装相关的依赖关系包,真是太省心了。
aptitude install ext3grep
或者直接去官网下载源码包安装
官网下载地址:https://code.google.com/archive/p/ext3grep/downloads
编译安装需要先安装依赖
apt-get install e2fslibs-dev  # Centos上用yum install e2fsprogs-devel

如果不安装依赖会报错:

checking for compiler with PCH support... yes
checking for special C compiler options needed for large files... no
checking for _FILE_OFFSET_BITS value needed for large files... no
Package ext2fs was not found in the pkg-config search path.
Perhaps you should add the directory containing `ext2fs.pc'
to the PKG_CONFIG_PATH environment variable
No package 'ext2fs' found
checking ext2fs/ext2_fs.h usability... no
checking ext2fs/ext2_fs.h presence... no
checking for ext2fs/ext2_fs.h... no
checking ext2fs/ext2fs.h usability... no
checking ext2fs/ext2fs.h presence... no
checking for ext2fs/ext2fs.h... noconfigure: error: Missing headers. Please install the package e2fslibs-dev from e2fsprogs, or http://e2fsprogs.sourceforge.net for the upstream tar-ball.

然后编译安装软件

tar xvf ext3grep-0.10.1.tar.gz 
cd ext3grep-0.10.1./configuremake && make install
 
安装完后,可以用以下命令验证下:

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      #将显示结果放在一个文件中

 

恢复单个文件
恢复某个指定的文件,命令如下:
ext3grep --restore-file VMwareTools-9.2.2-893683.tar.gz /dev/sdc1

然后在当前目录 RESTORED_FILES 目录下找到被恢复的文件

如果是恢复目录下面的指定文件要加上相对路径
ext3grep --restore-file vmware-tools-distrib/INSTALL.log /dev/sdc1
 
恢复整个设备上的文件
ext3grep --restore-all /dev/sdc1

 

恢复指定时间点之前或之后的所有文件
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

查看被删除文件

标记为”Deleted”的文件则是被删除的文件
 
恢复指定的文件
./extundelete --restore-file aaa /dev/sdb1

 
完全恢复设备上文件
./extundelete --restore-all /dev/sdb1
 
恢复指定的时间点后被删文件
指定一个时间点
date -d "Apr 11 14:30 2013" +%s 
1365661800
恢复这个时间点后的文件
./extundelete --restore-all --after “1365661800” /dev/sdb1

如果要恢之前的就用 before 参数。 extundelete 命令与 after 结合使用,在进行恢复时非常有用,可以过滤掉那太旧的文件,减小恢复压力。



一个同事不小心使用 rm -rf命令误删了自己的代码,这意味着一个月的工作丢失了(一个月没有备份过代码,看来他以前一定没经历计算机崩溃的灾难)。我们知道 rm命令无法撤销,那么有没有办法恢复这个被删除的目录以及其中的全部文件呢?

在网上搜索了一下,找到一个名为ext3grep的工具,以及它的作者的一篇文章(见 参考文档)。在这个工具出现以前,恢复ext3文件系统中被删除的数据是不可能的。因为ext3文件系统不同于ext2文件系统,它在删除一个文件后,会把文件inode结点中扇区指针清为0,而这让文件恢复看起来不太可能。不过,正如ext3grep工具作者所说的,因为ext3是一个日志型的文件系统,通过分析日志信息,有很大的可能重新解析出块指针,从而恢复出目录和文件。

以下是恢复文件所采用的步骤,希望对大家有帮助。

[ 卸载被误删除文件所在的分区,或以只读方式mount ]

当你发现你误删除了文件后,要做的第一件事是马上卸载被误删除文件所在的分区,或者以只读的方式来挂载该分区。原因大家都很清楚,文件被删除后,文件中的数据还存在磁盘上,除非存放这些数据的数据块又被操作系统分配出去了。我们这一步就是尽量降低数据块中数据被覆盖的风险,以提高恢复数据成功的比率。

如果被误删的文件在根分区,那么你最好重启计算机,进入单用户模式,以只读的方式挂载根分区,然后再进行恢复。要进行单用户模式,请看Grub中进入单用户模式的方法。

进入单用户模式后,根分区还是以读写方式mount的,用下面的命令,把挂载方式由读写(rw)改为只读(ro):

mount -o ro,remount /

如果被删除的文件不是根分区,也可以用unmount的方式将该分区卸载。假设文件在分区/dev/sda3中,该分区挂载到/home,那么我们用下面的命令来卸载:

    umount /dev/sda3

或者命令:

    umount /home

当然,在卸载前要保证没有程序在访问该分区,否则卸载会失败。所以,一般推荐进入单用户模式来恢复文件。

[ 安装ext3grep工具 ]

恢复的第一步当然是安装ext3grep工具。对于Debian/ Ubuntu用户来说,安装ext3grep工具非常简单,只需要执行下面的命令:

aptitude install ext3grep

不过公司所使用的Linux版本是 CentOS,所以需要自己手工编译ext3grep工具,其实这也很简单,首先到 ext3grep主页上下载它的源代码,然后用下面的命令解压/编译/安装这个工具。

tar zxf ext3grep-0.10.1.tar.gz
cd /home//ext3grep-0.10.1
./configure
make
make install

注:在网上搜了一下,ext3grep也有rpm包可以下载,比如,RHEL/CentOS的RPM包可以在 这里下载。其它Linux发行版的RPM也可以在 rpmfind.net上找到。

前面说过,发现误删除后,要卸载掉该分区,或者进入单用户模式。所以最好在另外一台计算机上来编译或安装这个工具,然后把ext3grep这个可执行文件拷贝到U盘中再进行恢复。这也正是所用的方法,因为同事的文件恰好在根分区中。如果你也是这种情况,那么在用RPM包安装时,则需要把RPM包安装到你你指定的目录中,然后再把它拷贝到U盘中。

U盘里只需要拷贝ext3grep一个文件即可,它不需要动态加载库就可以执行。接下来把U盘插到待恢复的电脑上,用下面的命令加载:

mount -t vfat /dev/sdb1 /mnt

把上面的设备号和安装点换成你自己的。如果你的设备文件还不存在的话(这也刚好是的情况),用 mknod命令创建一下吧。

现在,我们可以开始文件恢复了。

[ 恢复文件 ]

在开始恢复前,选择一个目录来存放被恢复的文件。ext3grep程序会在当前目录下创建一个名为 RESTORED_FILES的目录来存放被恢复的文件。因此在运行ext3grep命令前,先要切换到一个你可读写的目录中。

对来讲,因为进入了单用户模式,并且将根分区设成了只读,那么只能把恢复出来的文件放在U盘中了。因此,先 cd /mnt进入U盘目录。

如果你有幸记得你误删除的文件名及其路径的话,就可以直接用下面的命令进行恢复了:

    ext3grep /dev/your-device --restore-file path/to/your/file/filename

需要注意的是,上面的文件路径,是在该分区上文件路径。假设我们要恢复 /dev/sda3分区上文件,这个分区原来的安装点是 /home,现在想恢复文件 /home//vi/tips.xml,那么输入的命令应该是:

    ext3grep /dev/sda3 --restore-file /vi/tips.xml

如果你忘记了文件名,或者你误删除的是一个目录而你无法记全该目录中的文件,你可以先用下面的命令查询一下文件名:

ext3grep /dev/sda3 --dump-names | tee filename.txt

上面的命令把ext3grep命令的输出记录到文件 filename.txt中,你可以慢慢查看,或者使用 grep命令过滤出你需要的信息。

当你知道了目录/文件的信息后,就可以用上面说的命令进行恢复了。

在ext3grep命令中有一个 –depth参数,应该是用来恢复目录以及其中的所有子目录和文件的,不过 用这个参数无法恢复出任何文件,只好采用笨办法,写了个脚本,一个个文件的恢复。

经过几个小时的折磨(中间走了一些弯路),同事的文件终于恢复成功了!







About Me

........................................................................................................................

● 本文作者:小麦苗,部分内容整理自网络,若有侵权请联系小麦苗删除

● 本文在itpub、博客园、CSDN和个人微 信公众号( xiaomaimiaolhr)上有同步更新

● 本文itpub地址: http://blog.itpub.net/26736162

● 本文博客园地址: http://www.cnblogs.com/lhrbest

● 本文CSDN地址: https://blog.csdn.net/lihuarongaini

● 本文pdf版、个人简介及小麦苗云盘地址: http://blog.itpub.net/26736162/viewspace-1624453/

● 数据库笔试面试题库及解答: http://blog.itpub.net/26736162/viewspace-2134706/

● DBA宝典今日头条号地址: http://www.toutiao.com/c/user/6401772890/#mid=1564638659405826

........................................................................................................................

● QQ群号: 230161599 、618766405

● 微 信群:可加我微 信,我拉大家进群,非诚勿扰

● 联系我请加QQ好友 646634621 ,注明添加缘由

● 于 2019-08-01 06:00 ~ 2019-08-31 24:00 在西安完成

● 最新修改时间:2019-08-01 06:00 ~ 2019-08-31 24:00

● 文章内容来源于小麦苗的学习笔记,部分整理自网络,若有侵权或不当之处还请谅解

● 版权所有,欢迎分享本文,转载请保留出处

........................................................................................................................

小麦苗的微店: https://weidian.com/s/793741433?wfr=c&ifr=shopdetail

小麦苗出版的数据库类丛书: http://blog.itpub.net/26736162/viewspace-2142121/

小麦苗OCP、OCM、高可用网络班: http://blog.itpub.net/26736162/viewspace-2148098/

小麦苗腾讯课堂主页: https://lhr.ke.qq.com/

........................................................................................................................

使用 微 信客户端扫描下面的二维码来关注小麦苗的微 信公众号( xiaomaimiaolhr)及QQ群(DBA宝典)、添加小麦苗微 信, 学习最实用的数据库技术。

........................................................................................................................

欢迎与我联系

 

 



来自 “ ITPUB博客 ” ,链接:http://blog.itpub.net/26736162/viewspace-2655567/,如需转载,请注明出处,否则将追究法律责任。

转载于:http://blog.itpub.net/26736162/viewspace-2655567/

你可能感兴趣的:(Linux文件恢复利器 ext3grep与extundelete)