操作系統:Linux 誤刪文件恢復命令及方法


無論在哪個系統中,刪除文件都是必須謹慎的操作。


因爲如果不小心刪除了重要文件,就會導致個人或公司出現重大的損失。


類似於windows系統誤刪了文件,可以使用一些軟件進行恢復操作。


Linux也是有幾款軟件可以做到誤刪恢復的。


注意事項:雖然有軟件可以對誤刪的數據進行恢復,但是完全恢復數據的概率並不是百分百的。


因此,使用rm命令刪除文件的時候,一定要小心;重要的數據一定要有備份;並且恢復刪除的數據前,刪除文件的目錄內不能往進存放新東西,否則覆蓋掉的信息無法找回。


下面介紹的就是對Linux中誤刪文件的恢復操作。


1、lsof


原理:


這個命令實際上並不能直接用來恢復文件,不過它可以列出被各種進程打開的文件信息。


配合其他命令,從/proc目錄下的信息中恢復“文件已刪除,但進程仍保持打開該文件的狀態”的文件。


/proc目錄是掛載的是在內存中所映射的一塊區域,當我們對這些文件進行讀取和寫入時,實際上是在從內存中獲取相關信息。


因此,當我們對文件進行讀取或寫入時(即有進程正使用文件時),哪怕硬盤中的該文件已刪除,還可以從內存中的信息恢復文件。


注意:


必須以 root 用戶的權限運行, 因爲lsof 需要訪問核心內存和各種文件。


只能恢復“文件已刪除,但進程仍保持打開該文件的狀態”的文件。


如果誤刪了目錄,目錄中的其他文件未被進程打開,沒有進行使用的文件將無法使用此方法恢復。


lsof輸出信息的意義:




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





2、extundelete


原理:


使用存儲在分區日誌中的信息,嘗試恢復已從ext3或ext4的分區中刪除的文件


優點:


相比於ext3grep只能恢復ext3文件系統的文件,其適用範圍更廣,恢復速度更快


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月發佈)


注意:


  • 在數據刪除之後,要卸載被刪除數據所在的磁盤或是分區

  • 如果是系統根分區遭到誤刪除,就要進入單用戶模式,將根分區以只讀的方式掛載,儘可能避免數據被覆蓋

  • 數據被覆蓋後無法找回

  • 恢復仍有一定的機率失敗,平時應對重要數據作備份,小心使用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.bz2tar xf  extundelete-0.2.4.tar.bz2cd  extundelete-0.2.4./configuremakemake install




cd /root/extundelete-0.2.4/src




extundelete -v



執行make命令會在src目錄下生成extundelete可執行文件,可在此直接執行恢復命令。


執行make install會將程序安裝在/usr/local/bin/下


恢復文件操作


執行extundelete命令的當前目錄必須是可寫的。


1、查看要恢復文件的分區的文件系統



df  -Th



2、對要恢復文件的分區解除掛載



umount /mnt



3、查看可以恢復的數據


指定誤刪文件的分區進行查找


最後一列標記爲Deleted的文件,即爲刪除了的文件



extundelete /dev/vdb1 --inode 2 (根分區的inode值是2



4、恢復單個目錄


指定要恢復的目錄名


如果是空目錄,則不會恢復



extundelete /dev/vdb1 --restore-directory  ferris




當執行恢復文件的命令後,會在執行命令的當前的目錄下生成RECOVERED_FILES目錄,恢復的文件都會放入此目錄中。


如未生成目錄,即爲失敗。


5、恢復單個文件


指定要恢復的文件名


如果幾k大小的小文件,有很大機率恢復失敗


    
    
    

extundelete /dev/vdb1 --restore-file openssh-7.7p1.tar.gz



6、恢復全部刪除的文件


無需指定文件名或目錄名,恢復全部刪除的數據



extundelete /dev/vdb1 --restore-all




IT技術分享社區


個人博客網站:https://programmerblog.xyz


文章推薦 程序員效率:畫流程圖常用的工具 程序員效率:整理常用的在線筆記軟件 遠程辦公:常用的遠程協助軟件,你都知道嗎? 51單片機程序下載、ISP及串口基礎知識 硬件:斷路器、接觸器、繼電器基礎知識




本文分享自微信公衆號 - IT技術分享社區(gh_a27c0758eb03)。
如有侵權,請聯繫 [email protected] 刪除。
本文參與“OSC源創計劃”,歡迎正在閱讀的你也加入,一起分享。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章