extundelete是基于Linux的一個(gè)數(shù)據(jù)恢復(fù)工具,它通過分析文件系統(tǒng)的日志,解析出所有文件的inode信息,從而可以恢復(fù)Linux下主流的ext3,ext4文件系統(tǒng)下被誤刪除的文件。
![](/d/20211018/f798384edd564a3d72e4b8995a3f5a72.gif)
1、我用的是Centos系統(tǒng),在安裝extundelete之前需要安裝e2fsprogs,e2fsprogs-libs,e2fsprogs-devel。
這里用:yum install e2fsprogs e2fsprogs-libs e2fsprogs-devel 來完成安裝。
![](/d/20211018/a0829fe19bb6422d6ca863b31a4342d5.gif)
![](/d/20211018/b53295bdd363cc68247cc7dfffb92132.gif)
2、編譯安裝extundelete:
tar xjf extundelete-0.2.4.tar.bz2
cd extundelete-0.2.4
./configure
make make install
![](/d/20211018/54dc180c467a4c8d2a4cc7e21a9acc47.gif)
3、extundelete的用法,可以通過help查看詳細(xì)!
![](/d/20211018/39239fcd47f92ec8daad0d92996de39f.gif)
4、extundelete恢復(fù)數(shù)據(jù)的過程:
在數(shù)據(jù)被誤刪除后,第一時(shí)間要做的就是卸載被刪除數(shù)據(jù)所在的分區(qū),如果是根分區(qū)的數(shù)據(jù)遭到誤刪,就需要將系統(tǒng)進(jìn)入單用戶模式,并且將根分區(qū)以只讀模式掛載。這樣做的原因很簡單,因?yàn)閷⑽募h除后,僅僅是將文件的inode節(jié)點(diǎn)中的扇區(qū)指針清零,實(shí)際文件還儲(chǔ)存在磁盤上,如果磁盤繼續(xù)以讀寫模式掛載,這些已刪除的文件的數(shù)據(jù)塊就可能被操作系統(tǒng)重新分配出去,在這些數(shù)據(jù)庫被新的數(shù)據(jù)覆蓋后,這些數(shù)據(jù)就真的丟失了,恢復(fù)工具也無力回天。所以!以只讀模式掛載磁盤可以盡量降低數(shù)據(jù)庫中數(shù)據(jù)被覆蓋的風(fēng)險(xiǎn),以提高恢復(fù)數(shù)據(jù)成功的比例。
5、模擬數(shù)據(jù)誤刪環(huán)境:
創(chuàng)建一個(gè)新的分區(qū)后,掛載到一個(gè)目錄下,往該目錄下cp一些文件或者目錄,校驗(yàn)個(gè)問句的md5值,然后刪除該目錄下的文件,用來模擬實(shí)驗(yàn)環(huán)境。
![](/d/20211018/40721cf98e8e00b24b2a3a54ea9583a3.gif)
![](/d/20211018/cc2306f96c21b40b20ecb6fb4c4836fc.gif)
6、卸載磁盤分區(qū),并通過執(zhí)行extundelete命令查詢/dev/sdb1分區(qū)可恢復(fù)的數(shù)據(jù)信息:
# extundelete /dev/sdb1 --inode 2
根據(jù)輸出信息,標(biāo)記為Deleted狀態(tài)的是已經(jīng)刪除的文件或目錄。同時(shí)還可以看到已刪除文件的inode值,接下來就可以恢復(fù)文件了。
![](/d/20211018/49565c1d28a84bbb8f58ecdfa14a2854.gif)
7、恢復(fù)單個(gè)文件:
extundelete /dev/sdb1 --restore-file passwd
會(huì)在當(dāng)前目錄下生成一個(gè)RECOVERED_FILES目錄,里面保存已經(jīng)恢復(fù)的文件。
![](/d/20211018/98a01612a0fe553c34db8e2c5612816e.gif)
![](/d/20211018/504df5290487c10c7e7936d5d889cd7b.gif)
" />
8、恢復(fù)單個(gè)目錄:
extundelete /dev/sdb1 --restore-directory /mongodb
恢復(fù)所有誤刪文件:
extundelete /dev/sdb1 --restore-all
extundelete還可以實(shí)現(xiàn)恢復(fù)某個(gè)時(shí)間段的數(shù)據(jù)??梢酝ㄟ^“--after”和“--before”參數(shù)實(shí)現(xiàn)!