不管在哪一個系統中,刪除文件都是必須謹慎的操做。由於若是不當心刪除了重要文件,就會致使我的或公司出現重大的損失。相似於windows系統誤刪了文件,可使用一些軟件進行恢復操做。Linux也是有幾款軟件能夠作到誤刪恢復的。node
注意事項:雖然有軟件能夠對誤刪的數據進行恢復,可是徹底恢復數據的機率並非百分百的。ubuntu
所以,使用rm命令刪除文件的時候,必定要當心;重要的數據必定要有備份;而且恢復刪除的數據前,刪除文件的目錄內不能往進存放新東西,不然覆蓋掉的信息沒法找回。windows
下面介紹的就是對Linux中誤刪文件的恢復操做。centos
原理:這個命令實際上並不能直接用來恢復文件,不過它能夠列出被各類進程打開的文件信息。app
配合其餘命令,從/proc目錄下的信息中恢復「文件已刪除,但進程仍保持打開該文件的狀態」的文件。less
/proc目錄是掛載的是在內存中所映射的一塊區域,當咱們對這些文件進行讀取和寫入時,其實是在從內存中獲取相關信息。ssh
所以,當咱們對文件進行讀取或寫入時(即有進程正使用文件時),哪怕硬盤中的該文件已刪除,還能夠從內存中的信息恢復文件。ui
注意:spa
lsof輸出信息的意義:.net
COMMAND #進程的PID(進程標識符) USER #進程全部者 FD #用來識別該文件(文件描述符) DEVICE #指定磁盤的名稱 SIZE #文件的大小 NODE #索引節點(文件在磁盤上的標識) NAME #打開文件的確切名稱
最經常使用參數:
` -c #顯示某進程如今打開的文件 -p #顯示哪些文件被某pid進程打開 -g #顯示歸屬某gid的進程狀況 -d #顯示目錄下被進程開啓的文件 -d #顯示使用fd爲4的進程 -i:80 #顯示打開80端口的進程
環境:在/mnt下有一些文件,其中一個文件train.less正在被查看,而後另外一個終端將其刪除
【1】lsof查看
查看正在使用刪除文件的進程號
lsof /mnt
【2】恢復
切換到/proc下,刪除文件對應的進程的pid下的文件描述符中的目錄中;將對應的內容重定向或cp到其餘文件中。
重點關注:PID 與 FD
cd /proc/31284/fd/ cat 4 > /mnt/ferris_train.less
原理:使用存儲在分區日誌中的信息,嘗試恢復已從ext3或ext4的分區中刪除的文件
優勢:相比於ext3grep只能恢復ext3文件系統的文件,其適用範圍更廣,恢復速度更快
extundelete官方地址(官方文檔):http://extundelete.sourceforg...
extundelete下載地址:http://downloads.sourceforge.... (最新版本的extundelete是0.2.4,於2013年1月發佈)
注意:
安裝
一、依賴安裝
#centos安裝操做 yum install e2fsprogs-devel e2fsprogs* gcc* #ubuntu安裝操做 apt-get install build-essential e2fslibs-dev e2fslibs-dev
二、編譯安裝
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
執行extundelete命令的當前目錄必須是可寫的。
一、查看要恢復文件的分區的文件系統
df -Th
二、對要恢復文件的分區解除掛載
umount /mnt
三、查看能夠恢復的數據
指定誤刪文件的分區進行查找,最後一列標記爲Deleted的文件,即爲刪除了的文件。
extundelete /dev/vdb1 --inode 2 (根分區的inode值是2)
四、恢復單個目錄
指定要恢復的目錄名,若是是空目錄,則不會恢復。
extundelete /dev/vdb1 --restore-directory ferris
當執行恢復文件的命令後,會在執行命令的當前的目錄下生成RECOVERED_FILES目錄,恢復的文件都會放入此目錄中。如未生成目錄,即爲失敗。
五、恢復單個文件
指定要恢復的文件名,若是幾k大小的小文件,有很大概率恢復失敗。
extundelete /dev/vdb1 --restore-file openssh-7.7p1.tar.gz
六、恢復所有刪除的文件
無需指定文件名或目錄名,恢復所有刪除的數據。
extundelete /dev/vdb1 --restore-all
做者:漠效
_原文: https://blog.csdn.net/GX_1_11...