如何使用 testdisk 恢復已刪除的檔案

安全劍客發表於2020-10-20
在本篇文章中,我們就來看看如何使用 testdisk 恢復已刪除的檔案,以及該過程中的每一步是怎樣的。由於這個過程需要不少的步驟,所以當你做了幾次之後,你可能會覺得操作起來會更加得心應手。

當你在   系統上刪除一個檔案時,它不一定會永遠消失,特別是當你最近才剛剛刪除了它的時候。

除非你用 shred 等工具把它擦掉,否則資料仍然會放在你的磁碟上 —— 而恢復已刪除檔案的最佳工具之一 testdisk 可以幫助你拯救它。雖然 testdisk 具有廣泛的功能,包括恢復丟失或損壞的分割槽和使不能啟動磁碟可以重新啟動,但它也經常被用來恢復被誤刪的檔案。

安裝 testdisk

可以使用 apt install testdisk 或 yum install testdisk 等 安裝 testdisk。有趣的是,它不僅是一個 Linux 工具,而且還適用於 MacOS、Solaris 和 Windows。

文件可在 cgsecurity.org 中找到。

恢復檔案

首先,你必須以 root 身份登入,或者有 sudo 許可權才能使用 testdisk。如果你沒有 sudo 訪問許可權,你會在這個過程一開始就被踢出,而如果你選擇建立了一個日誌檔案的話,最終會有這樣的訊息:

TestDisk exited normally.
jdoe is not in the sudoers file.  This incident will be reported.

當你用 testdisk 恢復被刪除的檔案時,你最終會將恢復的檔案放在你啟動該工具的目錄下,而這些檔案會屬於 root。出於這個原因,我喜歡在 /home/recovery 這樣的目錄下啟動。一旦檔案被成功地還原和驗證,就可以將它們移回它們的所屬位置,並將它們的所有權也恢復。

在你可以寫入的選定目錄下開始:

$ cd /home/recovery
$ testdisk

testdisk 提供的第一頁資訊描述了該工具並顯示了一些選項。至少在剛開始,建立個日誌檔案是個好主意,因為它提供的資訊可能會被證明是有用的。下面是如何做的:

Use arrow keys to select, then press Enter key:
>[ Create ] Create a new log file
 [ Append ] Append information to log file
 [ No Log ] Don’t record anything

左邊的 > 以及你看到的反轉的字型和背景顏色指出了你按下Enter鍵後將使用的選項。在這個例子中,我們選擇了建立日誌檔案。

然後會提示你輸入密碼(除非你最近使用過 sudo)。

下一步是選擇被刪除檔案所儲存的磁碟分割槽(如果沒有高亮顯示的話)。根據需要使用上下箭頭移動到它。然後點兩次右箭頭,當 “Proceed” 高亮顯示時按Enter鍵。

Select a media (use Arrow keys, then press Enter):
 Disk /dev/sda - 120 GB / 111 GiB - SSD2SC120G1CS1754D117-551
>Disk /dev/sdb - 500 GB / 465 GiB - SAMSUNG HE502HJ
 Disk /dev/loop0 - 13 MB / 13 MiB (RO)
 Disk /dev/loop1 - 101 MB / 96 MiB (RO)
 Disk /dev/loop10 - 148 MB / 141 MiB (RO)
 Disk /dev/loop11 - 36 MB / 35 MiB (RO)
 Disk /dev/loop12 - 52 MB / 49 MiB (RO)
 Disk /dev/loop13 - 78 MB / 75 MiB (RO)
 Disk /dev/loop14 - 173 MB / 165 MiB (RO)
 Disk /dev/loop15 - 169 MB / 161 MiB (RO)
>[Previous]  [  Next  ]  [Proceed ]  [  Quit  ]

在這個例子中,被刪除的檔案在 /dev/sdb 的主目錄下。

此時,testdisk 應該已經選擇了合適的分割槽型別。

Disk /dev/sdb - 500 GB / 465 GiB - SAMSUNG HE502HJ
Please select the partition table type, press Enter when done.
 [Intel  ] Intel/PC partition
>[EFI GPT] EFI GPT partition map (Mac i386, some x86_64...)
 [Humax  ] Humax partition table
 [Mac    ] Apple partition map (legacy)
 [None   ] Non partitioned media
 [Sun    ] Sun Solaris partition
 [XBox   ] XBox partition
 [Return ] Return to disk selection

在下一步中,按向下箭頭指向 “[ Advanced ] Filesystem Utils”。

[ Analyse  ] Analyse current partition structure and search for lost partitions
>[ Advanced ] Filesystem Utils
 [ Geometry ] Change disk geometry
 [ Options  ] Modify options
 [ Quit     ] Return to disk selection

接下來,檢視選定的分割槽。

Partition                  Start        End    Size in sectors
> 1 P Linux filesys. data         2048  910155775  910153728 [drive2]

然後按右箭頭選擇底部的 “[ List ]”,按Enter鍵。

[  Type  ]  [Superblock] >[  List  ]  [Image Creation]  [  Quit  ]

請注意,它看起來就像我們從根目錄 / 開始,但實際上這是我們正在工作的檔案系統的基點。在這個例子中,就是 /home。

Directory /   <== 開始點
>drwxr-xr-x     0     0      4096 23-Sep-2020 17:46 .
 drwxr-xr-x     0     0      4096 23-Sep-2020 17:46 ..
 drwx———     0     0     16384 22-Sep-2020 11:30 lost+found
 drwxr-xr-x  1008  1008      4096  9-Jul-2019 14:10 dorothy
 drwxr-xr-x  1001  1001      4096 22-Sep-2020 12:12 nemo
 drwxr-xr-x  1005  1005      4096 19-Jan-2020 11:49 eel
 drwxrwxrwx     0     0      4096 25-Sep-2020 08:08 recovery...

接下來,我們按箭頭指向具體的主目錄。

drwxr-xr-x  1016  1016      4096 17-Feb-2020 16:40 gino
>drwxr-xr-x  1000  1000     20480 25-Sep-2020 08:00 shs

按Enter鍵移動到該目錄,然後根據需要向下箭頭移動到子目錄。注意,如果選錯了,可以選擇列表頂部附近的 .. 返回。

如果找不到檔案,可以按 /(就像在 vi 中開始搜尋時一樣),提示你輸入檔名或其中的一部分。

Directory /shs     <== current location
                                                   Previous
...
 -rw-rw-r—  1000  1000       426  8-Apr-2019 19:09 2-min-topics
>-rw-rw-r—  1000  1000     24667  8-Feb-2019 08:57 Up_on_the_Roof.pdf

一旦你找到需要恢復的檔案,按 c 選擇它。

注意:你會在螢幕底部看到有用的說明:

Use Left arrow to go back, Right to change directory, h to hide deleted files
    q to quit, : to select the current file, a to select all files
    C to copy the selected files, c to copy the current file <==

這時,你就可以在起始目錄內選擇恢復該檔案的位置了(參見前面的說明,在將檔案移回原點之前,先在一個合適的地方進行檢查)。在這種情況下,/home/recovery 目錄沒有子目錄,所以這就是我們的恢復點。

注意:你會在螢幕底部看到有用的說明:

Please select a destination where /shs/Up_on_the_Roof.pdf will be copied.
Keys: Arrow keys to select another directory
      C when the destination is correct
      Q to quit
Directory /home/recovery    <== 恢復位置

一旦你看到 “Copy done! 1 ok, 0 failed” 的綠色字樣,你就會知道檔案已經恢復了。

在這種情況下,檔案被留在 /home/recovery/shs 下(起始目錄,附加所選目錄)。

在將檔案移回原來的位置之前,你可能應該先驗證恢復的檔案看起來是否正確。確保你也恢復了原來的所有者和組,因為此時檔案由 root 擁有。

注意: 對於檔案恢復過程中的很多步驟,你可以使用退出(按 q 或“[ Quit ]”)來返回上一步。如果你願意,可以選擇退出選項一直回到該過程中的第一步,也可以選擇按下 ^c 立即退出。

恢復訓練

使用 testdisk 恢復檔案相對來說沒有痛苦,但有些複雜。在恐慌時間到來之前,最好先練習一下恢復檔案,讓自己有機會熟悉這個過程。

原文地址:

來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/31559985/viewspace-2728044/,如需轉載,請註明出處,否則將追究法律責任。

相關文章