如何恢復Linux中的誤刪檔案

2021-09-23 07:00:23 字數 2853 閱讀 6335

寫在前面的話

在開始教程之前我有必要提醒大家,使用視窗管理器(gui)刪除檔案和使用命令列工具(cli)刪除檔案這兩種方法之間是有區別的。

當我們使用視窗管理器來刪除檔案時,我們僅僅只是將檔案從某個目錄移動到了另乙個目錄中(**站)。在這種情況下,唯一得到更新的就是你檔案系統索引節點(inode)的元資料資訊,例如被刪除檔案的時間戳、檔案所佔儲存區塊和擴充套件屬性等資料。你可以使用tune2fs(調整和檢視ext2/ext3檔案系統的檔案系統引數)來檢視檔案系統的索引節點資訊,在命令列工具中輸入下列指令:

sudo tune2fs -l /dev/sda1 |grep -i inode 

執行之後,你將會得到類似下方所給出的示例資訊:

$ sudo tune2fs -l /dev/sda1 |grep -i inode  

filesystem features: has_journal ext_attr resize_inode dir_index filetype needs_recoveryextent flex_bg sparse_super large_file 

huge_file uninit_bg dir_nlinkextra_isize 

inode count

:             30007296 

free

inodes:             29382378 

inodes per group

:        8192 

inode blocks per group

:  512 

first

inode:             11 

inode size

:              256 

journal inode:           8 

first

orphan inode:      21628027 

journal backup:          inode blocks 

檔案刪除知多少

當你使用ssh遠端訪問你的計算機時,你可以在目錄「~/.local/share/trash」中看到所有被刪除的檔案。這樣一來,我們就可以直接使用gui視窗來還原被刪除的檔案,非常的簡單。但是,當你使用「rm」命令來刪除某個檔案時,這個檔案可就不僅僅是被移動到乙個隱藏目錄那麼簡單了。這個時候,你需要通過更新索引節點元資料來通知作業系統,這份檔案此前所占用的那部分磁碟空間已經可以繼續使用了,作業系統現在可以直接將其他的檔案寫入這部分儲存空間中。接下來,作業系統可能會在乙個小時之後就覆蓋這部分磁碟空間,但也有可能會在兩個月之後才會使用這部分儲存區域,具體將取決於作業系統以及檔案系統的設定。

當你在移除(安全刪除)你的檔案時,也就相當於你在讓檔案系統刪除這份檔案,然後再向這份檔案此前所占用的那部分儲存空間寫入隨機資料。對於「安全刪除」的情況來說,我們通常是無法恢復被刪除檔案的。所以最好的方法就是當你意識到你誤刪了某乙份檔案時,就立刻開始進行檔案恢復工作。你等的時間越久,成功恢復誤刪檔案的可能性也就越低。

如何恢復linux平台下的誤刪檔案?

目前我們有很多種方法可以恢復linux平台上的誤刪檔案,其中主流的兩個選項就是testdisk/photorec和extundelete。

photorec是testdisk套件的其中乙個元件,我們可以用它來恢復單獨的檔案。當然了,testdisk的功能更加強大,它可以幫助我們恢復檔案系統分割槽或磁碟啟動扇區。testdisk支援目前主流的檔案系統,而且目前主流的作業系統平台都可以使用這款工具。在這篇文章中我們主要以photorec為例來進行講解。

photorec

photorec支援的作業系統平台

-dos/win9x 

-windows nt 4/2000/xp/2003/vista 

-linux 

-freebsd, netbsd, openbsd 

-sun solaris 

-mac os x 

photorec支援的檔案系統

-fat 

-ntfs 

-exfat 

-ext2/ext3/ext4 

-hfs+ 

一般情況下,photorec的檔案恢復過程如下圖所示:

除了photorec之外,我們也可以選擇使用extundelete來完成資料恢復工作。extundelete針對的是ext3和ext4檔案系統,所以相較於testdisk而言,extundelete的使用範圍就有一定的限制了。

通常情況下,在進行檔案恢復工作的時候,我們要先將檔案系統重新掛載,然後給它分配唯讀許可權。完成之後,再將恢復的檔案寫入另外乙個檔案系統中,這樣可以避免原始資料所在的儲存區域被覆蓋。使用extundelete來恢復檔案的操作步驟非常的簡單,我們只需要選擇相應的檔案系統,然後執行下面這條命令即可:

extundelete /dev/sda1 

--restore-all

總結資料恢復是一項非常複雜的工作,而且由於作業系統、檔案系統以及人為因素的干擾,我們所恢復出來的檔案很有可能會出現資料丟失的情況。所以當你發現你誤刪了檔案時,請立刻停止使用你的電腦,並且盡快進行資料恢復工作,以免你的誤刪檔案被其他的資料覆蓋掉。

如何恢復Linux中的誤刪檔案

在開始教程之前我有必要提醒大家,使用視窗管理器 gui 刪除檔案和使用命令列工具 cli 刪除檔案這兩種方法之間是有區別的。當我們使用視窗管理器來刪除檔案時,我們僅僅只是將檔案從某個目錄移動到了另乙個目錄中 站 在這種情況下,唯一得到更新的就是你檔案系統索引節點 inode 的元資料資訊,例如被刪除...

linux恢復誤刪檔案

如果是ext2 參考實驗了一下,果然可行 拿一塊硬碟測試,比如是sdb2 mkfs.ext2 dev sdb2 mount dev sdb2 mnt sdb2 cd mnt sdb2 vim test i輸入haha wq儲存 rm test cd umount mnt sdb2 mount r n...

linux 恢復誤刪檔案

第一種 1 搞到root許可權切換root 2 安裝e2fsprogs,有的linux自帶,有的不自帶,需要安裝 3 debugfs dev sda3 檔案所在分割槽 4 等到出現debugs 輸入 lsdel 羅列被刪除的檔案 請等待 5 根據刪除時間,找到檔案的inode號 6 dumpmkdi...