1.extundelete是什么
2.extundelete恢复数据
2.1 epel 仓库安装
yum install extundelete -y
.............................................................................
Running transaction check
Running transaction test
Transaction test succeeded
Running transaction
Installing : extundelete-0.2.4-6.el7.x86_64 1/1
Verifying : extundelete-0.2.4-6.el7.x86_64 1/1
Installed:
extundelete.x86_64 0:0.2.4-6.el7
Complete!
2.2 源码安装extundelete
下载exeundelete
[root@localhost ~]# wget http://zy-res.oss-cn-hangzhou.aliyuncs.com/server/extundelete-0.2.4.tar.bz2
--2018-11-30 23:45:40-- http://zy-res.oss-cn-hangzhou.aliyuncs.com/server/extundelete-0.2.4.tar.bz2
Resolving zy-res.oss-cn-hangzhou.aliyuncs.com (zy-res.oss-cn-hangzhou.aliyuncs.com)... 47.110.177.95
Connecting to zy-res.oss-cn-hangzhou.aliyuncs.com (zy-res.oss-cn-hangzhou.aliyuncs.com)|47.110.177.95|:80... connected.
HTTP request sent, awaiting response... 200 OK
Length: 108472 (106K) [application/octet-stream]
Saving to: ‘extundelete-0.2.4.tar.bz2’
100%[====================================================>] 108,472 --.-K/s in 0.06s
2018-11-30 23:45:40 (1.66 MB/s) - ‘extundelete-0.2.4.tar.bz2’ saved [108472/108472]
安装所需要的依赖包,并编译安装
[root@localhost ~]# yum -y install bzip2 e2fsprogs-devel e2fsprogs gcc-c++ make
Loaded plugins: fastestmirror
Loading mirror speeds from cached hostfile
epel/x86_64/metalink | 8.6 kB 00:00:00
* base: mirror.vpshosting.com.hk
* epel: mirrors.aliyun.com
* extras: mirror.vpshosting.com.hk
* updates: mirror.vpshosting.com.hk
epel | 3.2 kB 00:00:00
Package bzip2-1.0.6-13.el7.x86_64 already installed and latest version
Package e2fsprogs-devel-1.42.9-12.el7_5.x86_64 already installed and latest version
Package e2fsprogs-1.42.9-12.el7_5.x86_64 already installed and latest version
Package gcc-c++-4.8.5-28.el7_5.1.x86_64 already installed and latest version
Package 1:make-3.82-23.el7.x86_64 already installed and latest version
Nothing to do
[root@localhost ~]# tar -xvjf extundelete-0.2.4.tar.bz2
extundelete-0.2.4/
extundelete-0.2.4/acinclude.m4
extundelete-0.2.4/missing
extundelete-0.2.4/autogen.sh
extundelete-0.2.4/aclocal.m4
extundelete-0.2.4/configure
extundelete-0.2.4/LICENSE
extundelete-0.2.4/README
extundelete-0.2.4/install-sh
extundelete-0.2.4/config.h.in
extundelete-0.2.4/src/
extundelete-0.2.4/src/extundelete.cc
extundelete-0.2.4/src/block.h
extundelete-0.2.4/src/kernel-jbd.h
extundelete-0.2.4/src/insertionops.cc
extundelete-0.2.4/src/block.c
extundelete-0.2.4/src/cli.cc
extundelete-0.2.4/src/extundelete-priv.h
extundelete-0.2.4/src/extundelete.h
extundelete-0.2.4/src/jfs_compat.h
extundelete-0.2.4/src/Makefile.in
extundelete-0.2.4/src/Makefile.am
extundelete-0.2.4/configure.ac
extundelete-0.2.4/depcomp
extundelete-0.2.4/Makefile.in
extundelete-0.2.4/Makefile.am
[root@localhost ~]# cd extundelete-0.2.4
[root@localhost extundelete-0.2.4]# ./configure
Configuring extundelete 0.2.4
Writing generated files to disk
[root@localhost extundelete-0.2.4]# make && make install
make -s all-recursive
Making all in src
extundelete.cc: In function ‘ext2_ino_t find_inode(ext2_filsys, ext2_filsys, ext2_inode*, std::string, int)’:
extundelete.cc:1272:29: warning: narrowing conversion of ‘search_flags’ from ‘int’ to ‘ext2_ino_t {aka unsigned int}’ inside { } [-Wnarrowing]
buf, match_name2, priv, 0};
^
Making install in src
/usr/bin/install -c extundelete '/usr/local/bin'
//验证一下是否安装成功
[root@localhost extundelete-0.2.4]# echo $?
0
3.extundelete找回数据
我们在虚拟上机先增加一块硬盘,并挂载起来,这里我们将新的硬盘挂载到/data目录下面了
[root@android-55aba78065642f3d ~]# df
Filesystem 1K-blocks Used Available Use% Mounted on
/dev/sda3 18802688 5120528 13682160 28% /
devtmpfs 487984 0 487984 0% /dev
tmpfs 498976 0 498976 0% /dev/shm
tmpfs 498976 7756 491220 2% /run
tmpfs 498976 0 498976 0% /sys/fs/cgroup
/dev/sda1 201380 103968 97412 52% /boot
tmpfs 99796 0 99796 0% /run/user/0
/dev/sdb1 5028480 20472 4729532 1% /data
拷贝一些测试数据到/data/目录下面
[root@android-55aba78065642f3d ~]# cp centos-7-x86_64-minimal.tar.gz /data/
[root@android-55aba78065642f3d ~]# cp /etc/passwd /data/
[root@android-55aba78065642f3d ~]# touch /data/{a,c,b,d,e}.txt
[root@android-55aba78065642f3d ~]# ls /data/
1.txt a.txt b.txt centos-7-x86_64-minimal.tar.gz c.txt d.txt e.txt lost+found passwd
删除/data/目录下面几个.txt文件
[root@android-55aba78065642f3d ~]# rm -rf /data/*.txt
[root@android-55aba78065642f3d ~]# ls /data/
centos-7-x86_64-minimal.tar.gz lost+found passwd
下面我们开始恢复数据
extundelete相关参数:
其中,参数(options)有:
--version, -[vV],显示软件版本号。
--help,显示软件帮助信息。
--superblock,显示超级块信息。
--journal,显示日志信息。
--after dtime,时间参数,表示在某段时间之后被删的文件或目录。
--before dtime,时间参数,表示在某段时间之前被删的文件或目录。
动作(action)有:
--inode ino,显示节点“ino”的信息。
--block blk,显示数据块“blk”的信息。
--restore-inode ino[,ino,...],恢复命令参数,表示恢复节点“ino”的文件,恢复的文件会自动放在当前目录下的RESTORED_FILES文件夹中,使用节点编号作为扩展名。
--restore-file 'path',恢复命令参数,表示将恢复指定路径的文件,并把恢复的文件放在当前目录下的RECOVERED_FILES目录中。
--restore-files 'path',恢复命令参数,表示将恢复在路径中已列出的所有文件。
--restore-all,恢复命令参数,表示将尝试恢复所有目录和文件。
-j journal,表示从已经命名的文件中读取扩展日志。
-b blocknumber,表示使用之前备份的超级块来打开文件系统,一般用于查看现有超级块是不是当前所要的文件。
-B blocksize,通过指定数据块大小来打开文件系统,一般用于查看已经知道大小的文件。
在数据删除之后,首先要卸载被删除数据所在的磁盘或是分区,如果是系统根分区遭到误删除,
就需要进入单用户模式下,将根分区以只读的方式挂载。
原因:因为文件删除之后,仅仅是将文件的inode节点中的扇区指针清零,实际上文件还存在磁盘上面
如果磁盘以读写方式挂载,这些删除的数据块可能会被系统从新分配出去,这些数据块被覆盖之后,这些
数据就真的丢失了,所以以只读的方式挂载,尽可能避免数据被覆盖。
[root@android-55aba78065642f3d ~]# umount /data
[root@android-55aba78065642f3d ~]# df
Filesystem 1K-blocks Used Available Use% Mounted on
/dev/sda3 18802688 5120700 13681988 28% /
devtmpfs 487984 0 487984 0% /dev
tmpfs 498976 0 498976 0% /dev/shm
tmpfs 498976 7756 491220 2% /run
tmpfs 498976 0 498976 0% /sys/fs/cgroup
/dev/sda1 201380 103968 97412 52% /boot
tmpfs 99796 0 99796 0% /run/user/0
查看能恢复的数据可以看到我们删除的几个.txt文件全部是deleted
(因为根分区的inode值是2)
[root@android-55aba78065642f3d ~]# extundelete /dev/sdb1 --inode 2
NOTICE: Extended attributes are not restored.
Loading filesystem metadata ... 40 groups loaded.
..............................................................................
File name | Inode number | Deleted status
. 2
.. 2
lost+found 11
centos-7-x86_64-minimal.tar.gz 12
passwd 13
1.txt 14 Deleted
a.txt 15 Deleted
c.txt 16 Deleted
b.txt 17 Deleted
d.txt 18 Deleted
e.txt 19 Deleted
4种方法恢复
方法1:通过inode恢复
查看删除文件在哪个分区上
extundelete /dev/sda4 --restore-inode 8001 文件号
方法2:通过文件名称进行恢复
extundelete /dev/sdb1 --restore-file passwd
会在当前目录下生成一个RECOVERED_FILES目录,里面保存已经恢复的文件
方法3:通过目录名称进行恢复
extundelete /dev/sdb1 --restore-directory /mongodb
方法4:恢复所有误删文件:
extundelete /dev/sdb1 --restore-all
extundelete还可以实现恢复某个时间段的数据。可以通过“--after”和“--before”参
不能恢复空文件和空目录
未完。。。。。。。。。。。。。。