首頁 > 系統教程 > Linux > 告別在 Linux 中誤刪檔案的憂慮,媽媽再也不用擔心

告別在 Linux 中誤刪檔案的憂慮,媽媽再也不用擔心

WBOY
發布: 2023-12-30 15:55:12
轉載
600 人瀏覽過

使用終端機恢復你 Linux 系統上仍在運行進程的已刪除檔案的快速指南。

許多情況下,刪除的檔案都可以恢復,例如在該檔案有活動的進程在操作它,並且目前被單一或多個使用者使用時。在 Linux 系統中,每個目前正在運行的進程都會獲得 ID,其稱為進程標識符 “PID”,並將它們存放在 /proc 目錄中。這正是我們恢復仍在運行的進程中(具有PID)已刪除的檔案所需要的。

計算原始檔案的 MD5 哈希

刪除之前,我們將計算該檔案的 MD5。這樣我們可以將原來的 MD5 雜湊值與恢復檔案的 MD5 雜湊進行比較。這個過程將保證我們恢復的壓縮檔案的完整性是一樣的,它沒有被破壞。

md5sum opengapps.zip >> md5-opengapps.txt
登入後複製

要顯示文字檔的內容。

cat md5-opengapps.txt

86489b68b40d144f0e00a0ea8407f7c0 opengapps.zip
登入後複製

檢查壓縮檔案的 MD5 雜湊值之後。我們將壓縮檔案保持開啟(LCTT 譯註:這裡是使用file-roller 這個圖形介面的解壓縮程式保持對該壓縮檔案的打開,其內建在GNOME 環境中;在桌面環境中,使用桌面工具開啟一個壓縮包也能起到同樣的作用。又及,本文舉例不是很恰當,如果是刪除了某個服務進程的已經打開的配置文件,那麼這種恢復就很有意義),並將其刪除。之後,我們將從檔案的復原過程開始,步驟如下:

rm opengapps.zip
登入後複製
刪除檔案的復原過程

正如我們前面提到的,運行的進程在 /proc 目錄中。我們可以使用以下命令搜尋該目錄中所需的進程:

由於我們已經知道檔案名稱包含 .zip 副檔名,因此我們可以使用 .zip 副檔名進行搜尋。它將限制輸出結果並顯示所需的進程。

ps -axu | grep .zip

m 13119 0.8 1.0 121788 30788 ? Sl 06:17 0:00 file-roller

/home/m/Downloads/Compressed/opengapps.zip

m 13164 0.0 0.0 5108 832 pts/20 S+ 06:18 0:00 grep --color=auto .zip
登入後複製

然後我們將進入到包含 PID 13119 的目錄並開啟 fd 子目錄。

cd /proc/13119/fd
登入後複製

fd (文件描述符)目錄包含多個文件,包括我們需要恢復的文件。該文件以硬連結的方式連結到原始文件。

fd 目錄中的所有檔案都以數字連結到「檔案名稱」。因此,要確定這些文件中的哪一個連結到該原始文件,我們將用詳細清單選項列出 /fd 目錄。

ls -l

total 0

lr-x------ 1 m m 64 Jul 14 06:17 0 -> /dev/null

lrwx------ 1 m m 64 Jul 14 06:17 1 -> socket:[26161]

lrwx------ 1 m m 64 Jul 14 06:17 10 -> anon_inode:[eventfd]

lr-x------ 1 m m 64 Jul 14 06:17 11 -> anon_inode:inotify

lrwx------ 1 m m 64 Jul 14 06:17 12 -> socket:[5752671]

lr-x------ 1 m m 64 Jul 14 06:17 13 -> /home/m/Downloads/Compressed/opengapps.zip (deleted)

lrwx------ 1 m m 64 Jul 14 06:17 2 -> socket:[26161]

lrwx------ 1 m m 64 Jul 14 06:17 3 -> anon_inode:[eventfd]

lrwx------ 1 m m 64 Jul 14 06:17 4 -> anon_inode:[eventfd]

lrwx------ 1 m m 64 Jul 14 06:17 5 -> socket:[5751361]

lrwx------ 1 m m 64 Jul 14 06:17 6 -> anon_inode:[eventfd]

lrwx------ 1 m m 64 Jul 14 06:17 7 -> anon_inode:[eventfd]

lrwx------ 1 m m 64 Jul 14 06:17 8 -> socket:[5751363]

lrwx------ 1 m m 64 Jul 14 06:17 9 -> socket:[5751365]
登入後複製

如你在終端輸出中看到的,原始檔案 “opengapps.zip” 已被刪除,但它仍然連結到一個檔案名稱 13,其進程 PID 13119。但是,我們仍然可以透過將連結的檔案複製到安全的地方來恢復它。

cp 13 /home/m/Downloads/Compressed
登入後複製

檔案複製後。我們將返回包含恢復檔案的目錄,並使用以下命令重命名它。

mv 13 opengapps-recovered.zip
登入後複製
計算恢復檔案的 MD5 哈希

由於我們已經恢復了該檔案。讓我們檢查該文件的完整性,這只是為了確保文件沒有損壞,並且和原來一樣。早先我們保存了原始檔案的 MD5 雜湊值。

md5sum opengapps-recovered.zip >> md5-opengapps.txt
登入後複製

此指令將檢查檔案的 MD5 雜湊值,並在檔案中追加新復原檔案的 MD5 雜湊值,以輕鬆比較兩個 MD5 雜湊值。

可以顯示文字檔案的內容來比較原始檔案和還原檔案的 MD5 雜湊值。

cat md5-opengapps.txt

86489b68b40d144f0e00a0ea8407f7c0 opengapps.zip

86489b68b40d144f0e00a0ea8407f7c0 opengapps-recovered.zip
登入後複製

恢復檔案的 MD5 哈希是一樣的。所以,我們成功地恢復了我們以前刪除的文件,並且恢復後文件完整性一致,並且工作正常。

妈妈再也不用担心在 Linux 中误删除文件了

#注意: 在某些情況下,某些檔案無法透過 ps -axu 指令看到。所以,嘗試檢查運行的程序,並從中恢復檔案。

假設我們有一個使用 Totem 媒體播放器播放中的以 .avi 為擴展名的影片。你需要做的就是檢查 Totem 的 PID,並按照本範例中提到的相同說明進行操作。

要尋找正在執行的程式的 PID,請使用以下命令,後面跟著程式的名稱。

pidof 程序名
登入後複製

以上是告別在 Linux 中誤刪檔案的憂慮,媽媽再也不用擔心的詳細內容。更多資訊請關注PHP中文網其他相關文章!

來源:linuxprobe.com
本網站聲明
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn
熱門教學
更多>
最新下載
更多>
網站特效
網站源碼
網站素材
前端模板