在開始進(jìn)行實(shí)驗(yàn)之前,我已經(jīng)新建了一個(gè)空目錄/data
,并將該目錄掛載了一塊新硬盤霎奢,將硬盤分區(qū)格式化為ext4的格式户誓,所以當(dāng)我操作/data
目錄下的文件及文件夾的時(shí)候,實(shí)際上就是針對(duì)新掛載的硬盤進(jìn)行數(shù)據(jù)讀寫操作幕侠。首先通過(guò)下面的命令準(zhǔn)備一下實(shí)驗(yàn)用的文件帝美,新建一個(gè)文件/data/delfile1.txt
并寫入數(shù)據(jù),新建一個(gè)目錄/data/deldir
,并在該目錄下新建一個(gè)文件/data/deldir/delfile2.txt
晤硕。
echo "ext4 delete test" > /data/delfile1.txt;
mkdir /data/deldir;
echo "ext4 delete test2" > /data/deldir/delfile2.txt;
完成上面的操作之后悼潭,/data
目錄下的文件路徑樹如下:
/data
├── deldir
│ └── delfile2.txt
├── delfile1.txt
ext4格式的文件誤刪除恢復(fù)工具我們使用extundelete,先進(jìn)性安裝舞箍。
yum install extundelete -y;
安裝完成之后舰褪,我們來(lái)正式進(jìn)行實(shí)驗(yàn),首先刪除目錄下面的文件及文件夾rm -fr /data/delfile1.txt /data/deldir
疏橄。在文件被誤刪除之后的第一時(shí)間占拍,我們應(yīng)該將硬盤從操作系統(tǒng)umount:umount /dev/sdb1
,之所以這么做是防止操作系統(tǒng)進(jìn)程不斷的向磁盤寫入數(shù)據(jù)捎迫,造成數(shù)據(jù)塊的覆蓋晃酒。數(shù)據(jù)塊被覆蓋之后,該數(shù)據(jù)塊上的文件就無(wú)法恢復(fù)了窄绒。
# extundelete /dev/sdb1 --inode 2
File name | Inode number | Deleted status
. 2
.. 2
lost+found 11
delfile1.txt 12 Deleted
deldir 262145 Deleted
使用上面的命令我們可以查看到被誤刪除的文件(node number=12)及文件夾(node number=262145)贝次。備注說(shuō)明:ext4文件系統(tǒng)的分區(qū)根目錄的inode值為2,xfs分區(qū)根目錄的inode值為64
extundelete /dev/sdb1 --restore-file delfile1.txt #恢復(fù)文件
extundelete /dev/sdb1 --restore-directory deldir #恢復(fù)目錄
extundelete /dev/sdb1 --restore-inode 12 #按照innode編號(hào)進(jìn)行恢復(fù)
extundelete /dev/sdb1 --restore-all #全部恢復(fù)
進(jìn)行上述的恢復(fù)操作之后彰导,執(zhí)行命令的文件夾下會(huì)新建一個(gè)RECOVERED_FILES蛔翅,看看這個(gè)RECOVERED_FILES文件夾下面是不是已經(jīng)有你誤刪除的文件或文件夾了呢?文件誤刪除恢復(fù)的操作是存在一定的失敗的概率的位谋。