1、epel 倉庫安裝
如果我們的來源裡面加入了 epel 倉庫的話,我們可以直接使用下面的指令安裝。
yum install extundelete -y
wget http://zy-res.oss-cn-hangzhou.aliyuncs.com/server/extundelete-0.2.4.tar.bz2
yum -y install bzip2 e2fsprogs-devel e2fsprogs gcc-c make
tar -xvjf extundelete-0.2.4.tar.bz2
cd extundelete-0.2.4
./configure
make && make install
#因為我的資料路徑比較深,所以我們需要一步一步查找,可以先從根分區 inode 查找
extundelete /dev/sdb1 --inode 2
##我們會看到 weapps 目錄的inode,
extundelete /dev/sda5 --inode 24641537
#我們看到專案的 inode,
extundelete /dev/sda5 --inode 24903688
#我們找到了最終刪除資料的目錄 upload
#extundelete /dev/sda5 --inode 24904454
#我們可以看到標稱的 Deleted,這些資料就是我們要進行復原的資料。
#那我們就恢復指定目錄,以當前分區為根分區進行路徑設定,項目名進行掩蓋
##因為磁碟資料一直在讀寫,所以有些檔案之前的inode 已經被重新分配了,導致部分資料無法恢復,資料最後會告訴我們有多少檔案沒有回复,但是大部分資料我們已經恢復了,這就是很重要的事情了。
那我們來看看回覆的資料吧,軟體會在目前目錄產生一個目錄 RECOVERED_FILES 裡面就是我們恢復的資料。
#恢復全部資料可以使用指令
extundelete /dev/sda5 --restore-all
#使用方法
extundelete --help
其中,參數(options)有:
--version, -[vV],顯示軟體版本號。
--help,顯示軟體說明資訊。
--superblock,顯示超級區塊資訊。
--journal,顯示日誌資訊。
--after dtime,時間參數,表示在某段時間之後被刪的檔案或目錄。
--before dtime,時間參數,表示在某段時間之前被刪的檔案或目錄。
動作(action)有:
--inode ino,顯示節點「ino」的資訊。
--block blk,顯示資料塊「blk」的資訊。
--restore-inode ino[,ino,...],恢復指令參數,表示恢復節點「ino」的文件,恢復的檔案會自動放在目前目錄下的RESTORED_FILES資料夾中,使用節點編號作為副檔名。
--restore-file 'path',恢復指令參數,表示將恢復指定路徑的文件,並把恢復的文件放在目前目錄下的RECOVERED_FILES目錄中。
--restore-files 'path',還原指令參數,表示將還原在路徑中已列出的所有檔案。
--restore-all,還原指令參數,表示將嘗試還原所有目錄和檔案。
-j journal,表示從已經命名的檔案中讀取擴充日誌。
-b blocknumber,表示使用先前備份的超級區塊來開啟檔案系統,一般用於查看現有超級區塊是不是目前所要的檔案。
-B blocksize,透過指定資料塊大小來開啟檔案系統,一般用於檢視已經知道大小的檔案。
在資料刪除之後,首先要卸載被刪除資料所在的磁碟或是分割區,如果是系統根分割區遭到誤刪除,就需要進入單一使用者模式下,將根分割區以唯讀的方式掛載。
原因:因為檔案刪除之後,只是將檔案的inode節點中的磁區指標清除零,實際上檔案還存在磁碟上面,如果磁碟以讀寫方式掛載,這些刪除的資料區塊可能會被系統從新分配出去,這些資料塊被覆蓋之後,這些資料就真的遺失了,所以以唯讀的方式掛載,盡可能避免資料被覆蓋。
以上是資料從刪庫到跑路再滾回來恢復的詳細內容。更多資訊請關注PHP中文網其他相關文章!