linux-ext4格式檔案誤刪除,該如何恢復?

字母哥部落格發表於2022-05-31

在開始進行實驗之前,我已經新建了一個空目錄/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資料夾下面是不是已經有你誤刪除的檔案或資料夾了呢?檔案誤刪除恢復的操作是存在一定的失敗的概率的

相關文章