首頁 >php教程 >PHP开发 >如何恢復Linux中的誤刪文件

如何恢復Linux中的誤刪文件

高洛峰
高洛峰原創
2016-11-18 09:10:201442瀏覽

 寫在前面的話

在開始教學之前我有必要提醒大家,使用視窗管理器(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 是一款用於恢復硬碟和光碟中遺失的影片、文件、壓縮套件等檔案的資料復原工具。除此之外,它還可以從數位相機的SD記憶卡中恢復遺失的圖片。因此,該軟體被命名為PhotoRecovery這個名字。 PhotoRec可以忽略檔案系統的類型,並直接從媒體底層復原資料。因此,在媒體的檔案系統受到嚴重破壞或被重新格式化後,它同樣能夠進行資料復原。 PhotoRec是一款開源、跨多平台的免費資料復原軟體,受GNUGeneral Public License (GPLV v2+) 的保護。

重要提示:一旦發現遺失或意外刪除了某個圖片、文件之後,請不要繼續往該儲存裝置或磁碟寫入新的文件,否則您可能會覆蓋原來的資料。這表示您在使用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的檔案復原流程如下圖所示:

如何恢復Linux中的誤刪文件

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

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

extundelete /dev/sda1 --restore-all

總結

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


陳述:
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn