1.extundelete的恢復原理
extundelete恢復文件時並不依賴特定文件格式,首先extundelete會通過文件系統的inode信息,來獲得當前文件系統下所有文件的信息,包括存在的和已經刪除的文件,這些信息包括文件名和inode。然后利用inode信息結合日志去查詢該inode所在的block位置,包括直接塊,間接塊等信息。最后利用dd命令將這些信息備份出來,從而恢復數據文件。
2.extundelete的安裝
環境:redhat6.5
extundelete官方地址:https://sourceforge.net/projects/extundelete/
安裝依賴包
[root@server1 ~]# yum install e2fsprogs e2fsprogs-libs e2fsprogs-devel -y
解壓官方網站下載的安裝包,最新版本是extundelete-0.2.4
[root@server1 ~]# ls a.png extundelete-0.2.4 extundelete-0.2.4.tar.bz2 getrandom.sh test.rrd [root@server1 ~]# cd extundelete-0.2.4 [root@server1 extundelete-0.2.4]# ./configure
[root@server1 extundelete-0.2.4]# make
[root@server1 extundelete-0.2.4]# make install
[root@server1 extundelete-0.2.4]# which extundelete
/usr/local/bin/extundelete
安裝過程很簡單。
3.extundelete的使用
3.1:我們的操作環境如下:
[root@server1 ~]# mount /dev/vdb1 /test/ [root@server1 ~]# cp /etc/passwd /test/ [root@server1 ~]# cp -r /etc/yum /test/ [root@server1 ~]# mkdir /test/dirtest [root@server1 ~]# echo hello > /test/dirtest/test.file [root@server1 ~]# md5sum /test/passwd 499b16cbdef03e814f3405fccd188dcc /test/passwd [root@server1 ~]# md5sum /test/dirtest/test.file b1946ac92492d2347c6235b4d2611184 /test/dirtest/test.file [root@server1 test]# rm -rf *
3.2:刪除數據之后,首先卸載這塊磁盤分區,以防止磁盤重新讀寫。
[root@server1 test]# cd /mnt/
[root@server1 mnt]# umount /test/
3.3:extundelete恢復的一些操作
3.3.1:查詢可恢復數據信息。
[root@server1 mnt]# extundelete /dev/vdb1 --inode 2 ...... File name | Inode number | Deleted status . 2 .. 2 lost+found 11 Deleted passwd 12 Deleted yum 8209 Deleted dirtest 8210 Deleted
3.3.2:恢復單個文件。
[root@server1 mnt]# extundelete /dev/vdb1 --restore-file passwd NOTICE: Extended attributes are not restored. Loading filesystem metadata ... 16 groups loaded. Loading journal descriptors ... 63 descriptors loaded. Successfully restored file passwd
恢復成功后會在當前目錄下創建RECOVERED_FILES用於存放恢復的文件:通過md5校驗,說明我們的數據恢復成功。
恢復單個目錄:
[root@server1 mnt]# extundelete /dev/vdb1 --restore-diretory /yum
恢復所有文件
[root@server1 mnt]# extundelete /dev/vdb1 --restore-all
恢復某個時間段的數據:
extundelete提供了--after 和 --before 參數可以指定恢復某個時間段內的數據。
[root@server1 mnt]# extundelete --after 1462284152 /dev/vdb1 --restore-all
更多的操作可以使用 extundelete --help 來查看。