首頁 > 軟體

怎樣在 Linux 系統中恢復已刪除檔案

2020-06-16 18:07:10

當使用者意外地刪除了一個仍然需要的檔案時,大多數情況下,是沒有簡便的方法可以重新找回或重建這個檔案。不過,幸運的是檔案是可以通過一些方法恢復的。當使用者刪除了一個檔案,該檔案並沒有消失,只是被隱藏了一段時間。

這裡將解釋它是如何工作的。在一個檔案系統中,有一個叫做 檔案分配表 的東西,這個表跟蹤檔案在儲存單元(如硬碟, MicroSD 卡,快閃記憶體驅動器等等)中的位置。當一個檔案被刪除,檔案系統將會在檔案分配表中執行以下兩個任務之一:這個檔案在檔案分配表上的條目被標記為 “自由空間” 或刪除檔案分配表裡這個檔案的條目,且將相應的空間被標記為自由空間 。現在,如果有一個新的檔案需要被放置在一個儲存單元上,作業系統將會把這個檔案放置到標記為空位的地方。在新檔案被寫入到這個空位後,被刪除的檔案就徹底消失了。當需要恢復一個已經刪除的檔案時,使用者絕對不能再對任何檔案進行操作,因為假如該檔案對應的“空位”被占用,這個檔案就永遠也不能恢復了。

恢復軟體是如何工作的?

大多數的檔案系統(在刪除檔案時)只是標記空間為空白。在這些檔案系統下,恢復軟體檢視檔案分配表這個檔案,然後複製被刪除的檔案到另外的儲存單元中。假如該檔案被複製到其它需要恢復的被刪除的儲存單元中,那麼使用者將有可能會失去那個所需的刪除檔案。

檔案系統很少會擦除檔案分配表中的條目。假如檔案系統真的這樣做了, 這便是恢復軟體在恢復檔案了。恢復軟體在儲存單元中掃描檔案頭,所有檔案都擁有一個特殊的編碼字串,它們位於檔案的最前面,也被叫做 魔法數位。例如,一個編譯的 JAVA 類檔案的魔法數位在十六進位制中是“CAFEBABE”。所以,假如要恢復該型別的檔案,恢復軟體會查詢 “CAFEBABE” 然後複製檔案到另一個儲存單元。一些恢復軟體可以查詢某種特殊的檔案型別。若使用者想恢復一個 PDF 檔案,則恢復軟體將會查詢十六進位制的魔法數位 “25504446”,這恰恰是 ASCII 編碼中的 “%PDF”。恢復軟體將會查詢所有的魔法數位,然後使用者可以選擇恢復哪個已刪除的檔案。

假如一個檔案的部分被覆寫了,則整個檔案就會被損壞。通常這個檔案可以被恢復,但是其中的內容可能已經沒有什麼用處。例如,恢復一個已損壞的 JPEG 檔案將會是無意義的,因為圖片檢視器不能從這個損壞的檔案產生一幅圖片。因此,即使使用者擁有了這個檔案,該檔案也將毫無用處。

裝置的位置:

在我們繼續之前,下面的一些資訊將會對指引恢復軟體找到正確的儲存單元起到一定的幫助。所有的裝置均掛載在 /dev/ 目錄下。作業系統賦予每個裝置的名稱(並不是管理員給予每個分割區或裝置的名稱)遵循一定的命名規律。

第一個 SATA 硬碟的第二個分割區的名稱將會是 sda2。名稱的第一個字母暗示了儲存型別,在這裡指的是 SATA,但字母 “s” 也可能指的是 SCSI、 FireWire(火線埠)或 USB。第二個字母 “d” 指的是 disk(硬碟)。第三個字母指的是裝置序數,即字母 “a” 指的是第一個 SATA 而 “b” 指的是第二個。最後的數位代表分割區。沒有分割區數位的裝置名代表該設定的所有分割區。對於上面的例子,對應的名稱為 sda 。作為命名的第一個字母還可能是 “h” ,這對應 PATA 硬碟(IDE)。

以下為命名規律的一些例子。假如一個使用者有一個 SATA 硬碟(sda),這個裝置有 4 個分割區- sda1、 sda2、 sda3 和 sda4 。該使用者刪除了第三個分割區,但直到格式化第四個分割區之前,第四個分割區名 sda4 都將保留不變。然後該使用者插入了一個帶有一個分割區 - 即sdb1- 的 usb 記憶卡(sdb),又增加了一個帶有一個分割區 -hda1- 的 IDE 硬碟 ,接著該使用者又增加了一個 SCSI 硬碟 - sdc1 。接著使用者移除了 USB 記憶卡(sdb)。現在,SCSI 硬碟的名稱仍然為 sdc,但如果這個 SCSI 被移除接著再被插入,則它的名稱將變為 sdb。雖然還有其他的儲存裝置存在, 那個 IDE 硬碟的名稱仍會有一個 “a”, 因為它是第一個 IDE 硬碟,IDE 裝置的命名與 SCSI、 SATA、 FireWire 和 USB 裝置要分開計數。

使用 TestDisk 進行恢復:

每個恢復軟體有其不同的功能,特徵及支援的不同檔案系統。下面是一些關於 使用 TestDisk 在各種檔案系統中恢復檔案的指南。

FAT16、 FAT32、 exFAT (FAT64)、 NTFS 以及 ext2/3/4:

TestDisk 是一個執行在 Linux、 *BSD、 SunOS、 Mac OS X、 DOS 和 Windows 等作業系統下的開源的自由軟體。 TestDisk 可以從下面的連結中找到 :http://www.cgsecurity.org/wiki/TestDisk。TestDisk 也可以通過鍵入 sudo apt-get install testdisk 來安裝。TestDisk 有著許多的功能,但這篇文章將只關注恢復檔案這個功能。

使用 root 許可權從終端中開啟 TestDisk 可以通過鍵入 sudo testdisk 命令。

現在, TestDisk 命令列應用將會被執行。終端的顯示將會改變。TestDisk 詢問使用者它是否可以保留紀錄檔,這完全由使用者決定。假如一個使用者正從系統儲存中恢復檔案,則不必保留紀錄檔。可選擇的選項有“生成”、 “追加” 和 “無紀錄檔”。假如使用者想保留紀錄檔,則紀錄檔將會保留在該使用者的主目錄。

在接著的螢幕中,儲存裝置以 /dev/*的方式被羅列出來。對於我的系統,系統的儲存單元為 /dev/sda,這意味著我的儲存單元為 一個 SATA硬碟(sd)且它是第一個硬碟(a)。每個儲存單元的容量以 Gigabyte(千兆位元組)為單位顯示的。使用上下鍵來選擇一個儲存裝置然後點選進入。

下一屏顯示出一個列有分割區表(也叫做分割區對映表)的清單。正如檔案有檔案設定表,分割區有著分割區表。分割區是儲存裝置上的分段。例如在幾乎所有的 Linux 系統中,至少存在兩種分割區型別 - EXT3/4 和 Swap 。每一個分割區表將會在下面被簡要地描述。TestDisk 並不支援所有型別的分割區表,所以這並不是完整的列表。

  • Intel - 這類分割區表在 Windows 系統和許多的 Linux 系統中非常普遍,它也常常稱作 MBR 分割區表。
  • EFI GPT - 這種型別的分割區表通常用在 Linux 系統中。對於 Linux 系統,這種分割區表是最為推薦的, 因為邏輯分割區或擴充套件分割區的概念並不適用於 GPT (GUID Partition Table) 分割區表。 這意味著,如果每個分割區中有一個 Linux 系統,一個 Linux 使用者可以從多種型別的 Linux 系統中進行多重新啟動動。當然使用 GPT 分割區表還有其他的優勢,但那些已超出了本文的討論範圍。
  • Humax - Humax 分割區對映表適用於韓國公司 Humax 生產的裝置。
  • Mac - Apple 分割區對映表 (APM) 適用於 Apple 的裝置。
  • None - 某些裝置並沒有分割區表。例如,許多 Subor 遊戲控制台不使用分割區對映表。如果一個使用者試圖以其它分割區表型別從這類裝置中恢復檔案,使用者就會困擾 TestDisk 為何找卟到任何的檔案系統或者檔案。
  • Sun - Sun 分割區表適用於 Sun 系統。
  • Xbox -Xbox 適用於使用 Xbox 分割區對映表的儲存裝置。

假如使用者選擇了 “Xbox” ,儘管他的系統使用了 GPT 分割區表, 那麼 TestDisk 將不能找到任何分割區或檔案系統。假如 TestDisk 按照使用者的選擇執行,則它可能猜測錯誤。(下面的圖片顯示的是當分割區表型別錯誤時的輸出)

當使用者為他們的裝置選擇了正確的選項,則在下一屏中,選擇 “高階” 選項。

更多詳情見請繼續閱讀下一頁的精彩內容http://www.linuxidc.com/Linux/2015-02/113991p2.htm


IT145.com E-mail:sddin#qq.com