如何使用 testdisk 在 Linux 上恢復已刪除的文件

已發表: 2022-01-29
Linux 計算機上的終端窗口插圖。
Fatmawati Achmad Zaenuri/Shutterstock

您是否曾經刪除過文件並立即後悔? 你需要它回來,而且快! 但是,如果文件太新,還沒有備份怎麼辦? 幸運的是,您可以採取一些措施。

rm:悔恨的縮寫?

使用rm命令太容易了,然後發現自己盯著終端窗口,感到越來越遺憾。 通配符的一個小錯誤,你可以消除比你想要的更多的東西。

默認的 Linux 文件系統ext4使用 inode 保存有關每個文件的數據,並使用 inode 表來跟踪 inode。 inode 包含有關文件的元數據,例如它的名稱、誰擁有它、權限是什麼等等。

它還包含指向文件的硬鏈接的入口點。 每個文件至少有一個硬鏈接。 每次創建新的硬鏈接時,硬鏈接計數都會增加 1。 每次刪除硬鏈接時,inode 中的硬鏈接計數都會減一。

當您刪除 inode 標記為未使用(並準備好重新使用)的文件時,最後一個硬鏈接將被刪除。 發生這種情況時,該文件將不會出現在目錄列表中,並且無法使用或訪問。

廣告

但是,構成文件內容的數據仍然存在於硬盤驅動器上。 但是,如果您可以修補 inode 以使其包含正確的信息,則該文件將被恢復。 當然,這只有在構成硬盤驅動器上文件的數據保持完整且未被覆蓋時才有效。

或者,您可以創建一個新的 inode,從舊的 inode 複製倖存的數據,然後替換丟失的位。

這些都是不平凡的活動。 通常,當您錯誤地刪除文件時,這是最糟糕的時刻。 它總是在您需要該文件的時候,而您現在就需要它。 您沒有時間沉迷於部門編輯器和其他實用程序。 另外,如果它是您剛剛創建的文件,它可能尚未備份,因此這些也對您沒有幫助。

這就是testdisk的用武之地。它易於使用,不需要文件系統的詳細、低級知識。 一起來看看如何使用吧!

相關:你想知道的關於 Linux 上的 inode 的一切

安裝測試盤

要在 Ubuntu 上安裝testdisk ,請使用以下命令:

 sudo apt-get install testdisk 

在 Fedora 上,您需要輸入:

 須藤 dnf 安裝測試磁盤

在 Manjaro 上,您必須使用pacman

 sudo pacman -Sy testdisk 

使用測試磁盤

儘管它在終端窗口中運行, testdisk確實有一個基本的界面。 您使用箭頭鍵進行導航並使用 Enter 進行選擇。 為了保持整潔,最好為恢復的文件創建一個目錄。

我們鍵入以下內容為我們恢復的文件創建一個名為“restored”的目錄:

 mkdir 已恢復

廣告

我們鍵入以下內容以切換到新目錄並從那裡啟動testdisk

 cd恢復/ 

我們必須使用sudotestdisk ,所以我們輸入以下內容:

 須藤測試磁盤

testdisk提出的第一個問題是關於日誌記錄的。 它可以創建一個新的日誌文件,使用一個現有的,或者根本不記錄任何東西。 您選擇哪個選項都沒有關係; 它不會影響testdisk的運行方式。

您只需按 Enter 即可接受突出顯示的選項並創建一個新的日誌文件。 它將在您啟動testdisk的目錄中創建。 當您做出選擇時, testdisk詢問哪個硬盤驅動器包含您要在其上工作的文件系統。

它列出了它可以找到的硬盤驅動器,以及squashfs “/dev/loop” 文件。 您從snap安裝的每個應用程序都會有其中一個。 它們是只讀的,因此您不應該設法從這些文件系統中刪除任何內容。

這台測試計算機中只有一個物理硬盤驅動器,因此我們使用向下箭頭突出顯示“/dev/sda”選項。 然後我們使用右箭頭選擇“繼續”,然後按 Enter。

廣告

testdisk還需要知道分區類型。 它顯示了一個選項菜單,以及它在底部自動檢測到的分區類型。

除非您有充分的理由不這樣做,否則請突出顯示自動檢測到的分區類型,然後按 Enter。

在出現的功能菜單中,突出顯示“高級”,然後按 Enter。

將出現分區選擇菜單。

我們要查找的文件位於 Linux 文件系統分區中。 我們的硬盤上只有一個 Linux 分區,但您可能有更多。

選擇文件所在的分區,使用左右箭頭鍵選擇“列表”,然後按 Enter。 將出現文件選擇菜單。

使用向上和向下箭頭或 PgUp 和 PgDn 鍵導航文件和目錄列表。 按向右箭頭或 Enter 進入目錄,向左箭頭或 Esc 退出目錄。

廣告

我們正在尋找dave擁有的文件。 所有用戶帳戶的文件都在“Home”目錄中。 因此,我們突出顯示“Home”目錄,然後我們可以按右箭頭或 Enter 進入該目錄。

然後為我們列出所有用戶帳戶。 我們突出顯示dave ,然後按右箭頭或 Enter 進入該目錄。

我們現在可以看到屬於dave帳戶的文件。 紅色的條目已被刪除。 我們瀏覽文件和目錄,直到找到要恢復的文件。

要恢復文件,只需突出顯示它,然後按 c(小寫)。

顯示發生變化並告訴您為恢復的文件選擇目標。 因為我們創建了一個名為“Restored”的目錄並從中啟動了testdisk ,所以列表中的第一個條目 (.) 就是那個目錄。 要將這個已刪除的文件恢復到該目錄,我們按 C(大寫)。

完成此操作後,您將返回到文件選擇顯示。 如果要恢復更多文件,只需重複該過程。 突出顯示已刪除的文件,按 c(小寫)複製它,然後按 C(大寫)恢復它。

使用恢復的文件

恢復文件後,會將目錄樹重建到其原始位置,這很有用,因為它會提醒您原始文件在硬盤驅動器上的位置。 這意味著如果您需要將其複制回來,您知道將其放在哪裡。

廣告

如果您從碰巧具有相同文件名的不同文件系統位置恢復多個文件,則無論如何它們都需要單獨存儲。

您可以鍵入以下內容以查看“已恢復”目錄的內容:

 ls

如果您要求testdisk創建一個日誌文件,它將位於“Restored”目錄中。 因為我們恢復的文件位於“/home/dave”,所以它們已被複製到我們的“Restored”目錄中,嵌套在同名目錄中。

我們可以使用cd進入複製的“dave”目錄。 確保您沒有在路徑中包含前導正斜杠 ( / ) — 您想要更改為本地“home”,而不是系統“/home”。

我們輸入以下內容:

 cd home/戴夫

恢復的文件位於該目錄中,因此我們鍵入:

 ls 

廣告

讓我們再看一下使用-l (長列表)選項恢復的文件:

ls -l

因為我們使用sudo啟動testdisk ,所以恢復的文件已經以“root”作為所有者進行了恢復。 我們可以使用chown將所有者改回“dave”:

 sudo chown dave.dave * 

我們鍵入以下內容以確保已恢復正確的所有權:

 ls -l 

testdisk:救濟代碼

恢復重要文件後的那種解脫感,就在片刻之前,感覺無法挽回地丟失,這是您永遠欣賞的東西。

這就是為什麼testdisk是一個如此方便的實用程序。 在您通過菜單並可以開始恢復文件後,很容易陷入高亮,c,C,重複的節奏。

相關:適合開發人員和愛好者的最佳 Linux 筆記本電腦