数据恢复软件extundelete

我们知道Linux之下一切皆文件,每个文件都有对应的inode值,当我们执行rm -rf 时 会将rm后面路径下的文件及目录都删除而且还没有任何提示 可能有人会说我们用rm不加f就会有提示,但有时我们的手速快与脑速时,很多时候都是敲完执行命令后知后觉。虽然我们可以用恢复软件恢复但也不是万能的;为了避免这种情况我们还是尽量少用rm命令 尽量用mv 将其移动到/tmp 在定期删除/tmp的文件 也可以写个计划任务定时清楚/tmp的东西

extundelete 恢复过程

在数据被误删后,第一时间将数据所在的磁盘卸载,如果在根分区则进入单用户并以 只读 模式挂载。因为rm时是将文件对应的inode值抹掉,实际文件还是在磁盘里的(类似于windows的shift+del删除,我们用启动U盘进行磁盘扫描数据恢复一样)

extundelete 安装

安装系统环境支持包:

[root@cloud ~]# yum -y install e2fsprogs*

下载安装包编译安装:

[root@cloud ~]# wget http://nchc.dl.sourceforge.net/project/extundelete/extundelete/0.2.4/extundelete-0.2.4.tar.bz2
[root@cloud ~]# tar -jxvf extundelete-0.2.4.tar.bz2
[root@cloud extundelete-0.2.4]# ./configure ;make;make install
Configuring extundelete 0.2.4
Writing generated files to disk
make -s all-recursive
Making all in src
extundelete.cc:571: 警告:未使用的参数‘flags’
Making install in src
/usr/bin/install -c extundelete '/usr/local/bin'
[root@cloud extundelete-0.2.4]# 

准备下数据:

[root@cloud ~]# cd /data/
[root@cloud data]# cp /etc/passwd .
[root@cloud data]# md5sum passwd 
8dd3c1c78b2b1f90b5bda1bdbc1be81b  passwd

[root@cloud data]# cp /etc/shadow .
[root@cloud data]# md5sum passwd
48f56fc548bd2fce1d5041d463f62f56  shadow

[root@cloud data]# dd if=/dev/zero of=/data/tmp.iso bs=1024M count=2
记录了2+0 的读入
记录了2+0 的写出
2147483648字节(2.1 GB)已复制,1.86297 秒,1.2 GB/秒
[root@cloud data]# md5sum tmp.iso 
a981130cf2b7e09f4686dc273cf7187e  tmp.iso

[root@cloud data]# df -Th
Filesystem     Type   Size  Used Avail Use% Mounted on
/dev/sda3      ext4    36G  3.3G   31G  10% /
tmpfs          tmpfs  931M   80K  931M   1% /dev/shm
/dev/sda1      ext4   388M   31M  337M   9% /boot
/dev/sdb1      ext4   9.9G  2.2G  7.2G  23% /data
[root@cloud data]#
[root@cloud data]# ls -la
总用量 2097188
drwxr-xr-x.  3 root root       4096 12月 17 10:05 .
dr-xr-xr-x. 23 root root       4096 12月 17 09:49 ..
drwx------.  2 root root      16384 12月 17 2016 lost+found
-rw-r--r--.  1 root root       1378 12月 17 10:01 passwd
----------.  1 root root        810 12月 17 10:01 shadow
-rw-r--r--.  1 root root 2147483648 12月 17 10:05 tmp.iso
[root@cloud data]# 

情景模拟:

[root@cloud data]# rm -rf /data/*
[root@cloud data]# ls -la
总用量 8
drwxr-xr-x.  2 root root 4096 12月 17 10:19 .
dr-xr-xr-x. 23 root root 4096 12月 17 09:49 ..
[root@cloud data]# df -Th
Filesystem     Type   Size  Used Avail Use% Mounted on
/dev/sda3      ext4    36G  3.3G   31G  10% /
tmpfs          tmpfs  931M   80K  931M   1% /dev/shm
/dev/sda1      ext4   388M   31M  337M   9% /boot
/dev/sdb1      ext4   9.9G  151M  9.2G   2% /data
[root@cloud data]# 

恢复:

[root@cloud data]# cd /mnt/
[root@cloud mnt]# umount /dev/sdb1
[root@cloud mnt]# ls
[root@cloud mnt]# extundelete /dev/sdb1 --inode 2 
....
File name                                       | Inode number | Deleted status
.                                                 2
..                                                2
lost+found                                        11             Deleted
passwd                                            12             Deleted
shadow                                            13             Deleted
tmp.iso                                           14             Deleted
[root@cloud mnt]# 

恢复单个文件:

[root@cloud mnt]# extundelete /dev/sdb1 --restore-file passwd 
NOTICE: Extended attributes are not restored.
Loading filesystem metadata ... 80 groups loaded.
Loading journal descriptors ... 453 descriptors loaded.
Successfully restored file passwd
[root@cloud mnt]# ls
RECOVERED_FILES
[root@cloud mnt]# ls RECOVERED_FILES/
passwd
[root@cloud mnt]# md5sum RECOVERED_FILES/passwd 
8dd3c1c78b2b1f90b5bda1bdbc1be81b  RECOVERED_FILES/passwd
[root@cloud mnt]# 

恢复所有文件:

[root@cloud mnt]# extundelete /dev/sdb1 --restore-all
NOTICE: Extended attributes are not restored.
Loading filesystem metadata ... 80 groups loaded.
Loading journal descriptors ... 453 descriptors loaded.
Searching for recoverable inodes in directory / ... 
4 recoverable inodes found.
Looking through the directory structure for deleted files ... 
0 recoverable inodes still lost.
[root@cloud mnt]# ls RECOVERED_FILES/
passwd  passwd.v1  shadow  tmp.iso
[root@cloud mnt]# 

其他:

恢复单个目录:

[root@cloud mnt]# extundelete /dev/sdb1 --restore-directory 目录名(注意磁盘为/,比如磁盘的test目录 则目录名为/test)

恢复一小时前的数据:

[root@MiWiFi-R3-srv mnt]# date +%s
1481943486
[root@cloud mnt]# extundelete --after  (1481943486-3600) --restore-all /dev/sdb1
comments powered by Disqus