环境:Centos7.6_x86
一、extundelete工具
1、extundelete介绍
Extundelete 是一个数据恢复工具,用于从 ext3 或 ext4 分区中恢复删除文件。根据官网0.2.4版本介绍是支持ext4,但实际上使用发现ext4格式有些问题,会报以下错误:
报错1:
报错2:
2、下载extundelete
官网下载链接:Download extundelete (sourceforge.net)
百度网盘下载链接: https://pan.baidu.com/s/14bkmSiIcqab2MW0ng6a7ew?pwd=ub59 提取码: ub59
3、源码安装extundelete
[root@hadoop02 local]# tar -jxf extundelete-0.2.4.tar.bz2
[root@hadoop02 local]# cd extundelete-0.2.4
[root@hadoop02 extundelete-0.2.4]# yum install gcc gcc-c++ e2fsprogs e2fsprogs-devel e2fsprogs-libs
[root@hadoop02 extundelete-0.2.4]# bash install.sh
[root@hadoop02 extundelete-0.2.4]# make && make install
#查看extundelete版本
[root@hadoop02 extundelete-0.2.4]# extundelete --version
4、准备数据文件
5、删除数据
6、数据恢复
(1)取消挂载磁盘
当发生数据误删情况下,应立马取消挂载磁盘,这是非常重要的,然后再去安装数据恢复工具。因为新数据的写入可能会覆盖需要恢复的文件,当删除数据时,会删除inode元数据信息,实际的数据块并不会删除,没有inode的数据块就会新写入数据覆盖掉。
有一种现象,如果你的磁盘空间不足,删除文件后发现系统并未释放,因为文件在删除时,正被其他进程一直打开状态或者写入数据,inode是一直存在的,系统就不会释放。
(2)查看可恢复数据
#显示/dev/sdb1分区信息,2是根的inode号
[root@hadoop02 ~]# extundelete /dev/sdb1 --inode 2
(3)方式一:根据inode号恢复数据
[root@hadoop02 ~]# extundelete /dev/sdb1 --restore-inode indo号
#文件名并不是以前的名字,以file.inode号命名
(4)方式二:根据文件名恢复数据
[root@hadoop02 ~]# extundelete /dev/sdb1 --restore-file 文件名
#文件名是以前的名字
(5)方式三:根据目录名恢复数据
[root@hadoop02 ~]# extundelete /dev/sdb1 --restore-directory 目录名
(6)方式四:恢复所有文件
[root@hadoop02 ~]# extundelete /dev/sdb1 --restore-all
(7)总结
1、extundelete在Centos7.6并不会自动创建空目录和空文件
2、共4种方法,其中根据inode号恢复的文件不会跟之前的名字保持一致,其他3种可以
3、会在当前目录下生成RECOVERED_FILES目录
二、ext4magic工具
1、ext4magic介绍
用于从ext3或ext4分区中恢复文件数据工具,基于ext3grep和extundelete。
版本区别:
0.2.4(Beta版本)包含老的magic-function,仅支持ext3系统
0.3.2(Beta版本)包含新的magic-function,支持ext3、ext4版本
经测试,0.3.1版本只支持ext3格式,不支持ext4。
2、ext4magic下载
官网链接:ext4magic - Browse Files at SourceForge.net
0.3.2版本:
百度网盘链接: https://pan.baidu.com/s/13mGJlXNYNv9N3GR2TnrSKQ?pwd=pt81 提取码: pt81
0.3.1版本的rpm包,仅支持ext3格式:
链接: https://pan.baidu.com/s/1OP5v_FbvuZ9k2QMdWJFy0Q?pwd=vhrj 提取码: vhrj
3、源码安装ext4magic
[root@hadoop02 local]# tar -xzvf ext4magic-0.3.2.tar.gz
[root@hadoop02 local]# cd ext4magic-0.3.2
[root@hadoop02 ext4magic-0.3.2]# yum install gcc gcc-c++ e2fsprogs-devel libuuid-devel libblkid-devel zlib-devel bzip2-devel file-libs file-devel
[root@hadoop02 ext4magic-0.3.2]# ./configure
[root@hadoop02 ext4magic-0.3.2]# make & make install
#创建软连接
[root@hadoop02 ext4magic-0.3.2]# ln -s /usr/local/ext4magic-0.3.2/src/ext4magic /usr/sbin/ext4magic
#查看版本
[root@hadoop02 ~]# ext4magic -V -X
ext4magic version : 0.3.2
libext2fs version : 1.42.9
CPU is little endian.
4、准备数据文件
5、删除数据
6、数据恢复
(1)取消挂载磁盘
当发生数据误删情况下,应立马取消挂载磁盘,这是非常重要的,然后再去安装数据恢复工具。
(2)查看可恢复数据
#方式1
[root@hadoop02 ~]# ext4magic /dev/sdb1 -f /
#方式2
[root@hadoop02 ~]# ext4magic /dev/sdb1 -I 2
#查看详细信息加上 -T -x
[root@hadoop02 ~]# ext4magic /dev/sdb1 -I 2 -T -x
(3)常用恢复数据的参数
-r和-m #两个参数一样效果,只恢复删掉的文件,空文件也会被恢复。情况一:如果删掉的目录,该目录包含文件,会自动创建目录以及恢复文件;情况二:如果删掉的文件,该文件在目录里面,不会恢复该文件;
-R和-M #两个参数一样效果,恢复整个磁盘的所有文件以及目录,包括空的文件和目录,和没有删掉的目录及文件;
-I #指定inode号恢复
-f #指定某个文件或目录
-d #指定数据存放路径
-a #指定时间戳
(4)方式一:根据inode号恢复文件和目录
#恢复文件,文件名会以inode号命名,可加上-d 指定存放路径,默认恢复前24小时内的文件
[root@hadoop02 ~]# ext4magic /dev/sdb1 -I inode号 -r
#恢复目录,目录会以inode号命名,包括未删除的文件,可加上-d 指定存放路径,默认恢复前24小时内的文件
[root@hadoop02 ~]# ext4magic /dev/sdb1 -I inode号 -R
#恢复文件
#恢复目录
(5)方式二:根据文件名和目录名恢复数据
#恢复文件到/root/data目录下,默认恢复前24小时内的文件
[root@hadoop02 ~]# ext4magic /dev/sdb1 -r -f 文件名 -d /root/data
#恢复目录到/root/data目录下,默认恢复前24小时内的文件
[root@hadoop02 ~]# ext4magic /dev/sdb1 -R -f 目录名 -d /root/data
(6)方式三:恢复整个磁盘数据(全量恢复)
#恢复磁盘所有数据到/root/data目录下,包含未删掉的文件,默认恢复前24小时内的文件
[root@hadoop02 ~]# ext4magic /dev/sdb1 -R -d /root/data
#-M与-R效果一样
[root@hadoop02 ~]# ext4magic /dev/sdb1 -M -d /root/data
(7)方式四:基于时间搓恢复
#恢复前四天的磁盘的全部数据到/root/data目录,-R可换成-M,如果换成-r或-m,只能恢复文件,并且删除的文件在多级目录里的文件不会恢复,时间可换成具体的时间戳值
[root@hadoop02 ~]# ext4magic /dev/sdb1 -R -a $(date -d "-5day" +%s) -d /root/data/
(8)其他
不支持硬链接,支持软连接