如何恢復Linux中的誤刪文件
寫在前面的話
在開始教程之前我有必要提醒大家,使用窗口管理器(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的文件恢復過程如下圖所示:
extundelete-【工具下載】
除了PhotoRec之外,我們也可以選擇使用extundelete來完成數據恢復工作。extundelete針對的是ext3和ext4文件系統,所以相較于TestDisk而言,extundelete的使用范圍就有一定的限制了。
通常情況下,在進行文件恢復工作的時候,我們要先將文件系統重新掛載,然后給它分配只讀權限。完成之后,再將恢復的文件寫入另外一個文件系統中,這樣可以避免原始數據所在的存儲區域被覆蓋。使用extundelete來恢復文件的操作步驟非常的簡單,我們只需要選擇相應的文件系統,然后運行下面這條命令即可:
- extundelete /dev/sda1 --restore-all
總結
數據恢復是一項非常復雜的工作,而且由于操作系統、文件系統以及人為因素的干擾,我們所恢復出來的文件很有可能會出現數據丟失的情況。所以當你發現你誤刪了文件時,請立刻停止使用你的電腦,并且盡快進行數據恢復工作,以免你的誤刪文件被其他的數據覆蓋掉。