環境: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)其他
不支持硬鏈接,支持軟連接?