這期內容當中小編將會給大家?guī)碛嘘PLinux中怎么恢復誤刪文件,文章內容豐富且以專業(yè)的角度為大家分析和敘述,閱讀完這篇文章希望大家可以有所收獲。
成都創(chuàng)新互聯(lián)是專業(yè)的路南網站建設公司,路南接單;提供成都網站設計、成都網站建設、外貿網站建設,網頁設計,網站設計,建網站,PHP網站建設等專業(yè)做網站服務;采用PHP框架,可快速的進行路南網站開發(fā)網頁制作和功能擴展;專業(yè)做搜索引擎喜愛的網站,專業(yè)的做網站團隊,希望更多企業(yè)前來合作!
1、lsof
原理:這個命令實際上并不能直接用來恢復文件,不過它可以列出被各種進程打開的文件信息。
配合其他命令,從/proc目錄下的信息中恢復“文件已刪除,但進程仍保持打開該文件的狀態(tài)”的文件。
/proc目錄是掛載的是在內存中所映射的一塊區(qū)域,當我們對這些文件進行讀取和寫入時,實際上是在從內存中獲取相關信息。
因此,當我們對文件進行讀取或寫入時(即有進程正使用文件時),哪怕硬盤中的該文件已刪除,還可以從內存中的信息恢復文件。
注意:
必須以 root 用戶的權限運行, 因為lsof 需要訪問核心內存和各種文件。
只能恢復“文件已刪除,但進程仍保持打開該文件的狀態(tài)”的文件。
如果誤刪了目錄,目錄中的其他文件未被進程打開,沒有進行使用的文件將無法使用此方法恢復。
lsof輸出信息的意義:
COMMAND #進程的PID(進程標識符) USER #進程所有者 FD #用來識別該文件(文件描述符) DEVICE #指定磁盤的名稱 SIZE #文件的大小 NODE #索引節(jié)點(文件在磁盤上的標識) NAME #打開文件的確切名稱
最常用參數(shù):
-c #顯示某進程現(xiàn)在打開的文件 -p #顯示哪些文件被某pid進程打開 -g #顯示歸屬某gid的進程情況 -d #顯示目錄下被進程開啟的文件 -d #顯示使用fd為4的進程 -i:80 #顯示打開80端口的進程
恢復文件操作
環(huán)境:在/mnt下有一些文件,其中一個文件train.less正在被查看,然后另一個終端將其刪除
【1】lsof查看
查看正在使用刪除文件的進程號
lsof /mnt
【2】恢復
切換到/proc下,刪除文件對應的進程的pid下的文件描述符中的目錄中;將對應的內容重定向或cp到其他文件中。
重點關注:PID 與 FD
cd /proc/31284/fd/ cat 4 > /mnt/ferris_train.less
2、extundelete
原理:使用存儲在分區(qū)日志中的信息,嘗試恢復已從ext3或ext4的分區(qū)中刪除的文件
優(yōu)點:相比于ext3grep只能恢復ext3文件系統(tǒng)的文件,其適用范圍更廣,恢復速度更快
extundelete官方地址(官方文檔):http://extundelete.sourceforge.net
extundelete下載地址:http://downloads.sourceforge.net/project/extundelete/extundelete/0.2.4/extundelete-0.2.4.tar.bz2 (最新版本的extundelete是0.2.4,于2013年1月發(fā)布)
注意:
在數(shù)據(jù)刪除之后,要卸載被刪除數(shù)據(jù)所在的磁盤或是分區(qū)
如果是系統(tǒng)根分區(qū)遭到誤刪除,就要進入單用戶模式,將根分區(qū)以只讀的方式掛載,盡可能避免數(shù)據(jù)被覆蓋
數(shù)據(jù)被覆蓋后無法找回
恢復仍有一定的機率失敗,平時應對重要數(shù)據(jù)作備份,小心使用rm
安裝
1、依賴安裝
#centos安裝操作 yum install e2fsprogs-devel e2fsprogs* gcc* #ubuntu安裝操作 apt-get install build-essential e2fslibs-dev e2fslibs-dev
2、編譯安裝
wget http://downloads.sourceforge.net/project/extundelete/extundelete/0.2.4/extundelete-0.2.4.tar.bz2 tar xf extundelete-0.2.4.tar.bz2 cd extundelete-0.2.4 ./configure make make install
cd /root/extundelete-0.2.4/src
extundelete -v
執(zhí)行make命令會在src目錄下生成extundelete可執(zhí)行文件,可在此直接執(zhí)行恢復命令。
執(zhí)行make install會將程序安裝在/usr/local/bin/下
恢復文件操作
執(zhí)行extundelete命令的當前目錄必須是可寫的。
1、查看要恢復文件的分區(qū)的文件系統(tǒng)
df -Th
2、對要恢復文件的分區(qū)解除掛載
umount /mnt
3、查看可以恢復的數(shù)據(jù)
指定誤刪文件的分區(qū)進行查找,最后一列標記為Deleted的文件,即為刪除了的文件。
extundelete /dev/vdb1 --inode 2 (根分區(qū)的inode值是2)
4、恢復單個目錄
指定要恢復的目錄名,如果是空目錄,則不會恢復。
extundelete /dev/vdb1 --restore-directory ferris
當執(zhí)行恢復文件的命令后,會在執(zhí)行命令的當前的目錄下生成RECOVERED_FILES目錄,恢復的文件都會放入此目錄中。如未生成目錄,即為失敗。
5、恢復單個文件
指定要恢復的文件名,如果幾k大小的小文件,有很大幾率恢復失敗。
extundelete /dev/vdb1 --restore-file openssh-7.7p1.tar.gz
6、恢復全部刪除的文件
無需指定文件名或目錄名,恢復全部刪除的數(shù)據(jù)。
extundelete /dev/vdb1 --restore-all
上述就是小編為大家分享的Linux中怎么恢復誤刪文件了,如果剛好有類似的疑惑,不妨參照上述分析進行理解。如果想知道更多相關知識,歡迎關注創(chuàng)新互聯(lián)行業(yè)資訊頻道。