在開始進行實驗之前,我已經新建了一個空目錄/data,並將該目錄掛載了一塊新硬碟,將硬碟分區格式化為ext4的格式,所以當我操作/data目錄下的文件及文件夾的時候,實際上就是針對新掛載的硬碟進行數據讀寫操作。首先通過下麵的命令準備一下實驗用的文件,新建一個文件/data/delfile1.txt並 ...
在開始進行實驗之前,我已經新建了一個空目錄/data
,並將該目錄掛載了一塊新硬碟,將硬碟分區格式化為ext4的格式,所以當我操作/data
目錄下的文件及文件夾的時候,實際上就是針對新掛載的硬碟進行數據讀寫操作。首先通過下麵的命令準備一下實驗用的文件,新建一個文件/data/delfile1.txt
並寫入數據,新建一個目錄/data/deldir
,併在該目錄下新建一個文件/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格式的文件誤刪除恢復工具我們使用extundelete,先進性安裝。
yum install extundelete -y;
安裝完成之後,我們來正式進行實驗,首先刪除目錄下麵的文件及文件夾rm -fr /data/delfile1.txt /data/deldir
。在文件被誤刪除之後的第一時間,我們應該將硬碟從操作系統umount:umount /dev/sdb1
,之所以這麼做是防止操作系統進程不斷的向磁碟寫入數據,造成數據塊的覆蓋。數據塊被覆蓋之後,該數據塊上的文件就無法恢復了。
# 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)。備註說明:ext4文件系統的分區根目錄的inode值為2,xfs分區根目錄的inode值為64
extundelete /dev/sdb1 --restore-file delfile1.txt #恢覆文件
extundelete /dev/sdb1 --restore-directory deldir #恢複目錄
extundelete /dev/sdb1 --restore-inode 12 #按照innode編號進行恢復
extundelete /dev/sdb1 --restore-all #全部恢復
進行上述的恢復操作之後,執行命令的文件夾下會新建一個RECOVERED_FILES,看看這個RECOVERED_FILES文件夾下麵是不是已經有你誤刪除的文件或文件夾了呢?文件誤刪除恢復的操作是存在一定的失敗的概率的。