天天看點

Linux指令行删除檔案恢複

  在Linux下工作的很多人都有過這樣的尴尬經曆,辛辛苦苦寫了很久的代碼或者文檔,一個不小心就rm掉了,指令行删除一般不會進入資源回收筒,這時候是不是想死的心都有了。

         先說說活生生的悲劇是怎麼發生的。

         先是認認真真寫了一個下午腳本setup.sh,在coreV1.1中有一個舊版本但是同名的setup.sh,于是就想删了舊版本的,輸入指令:rm / coreV1.1/setup.sh ,結果多輸入一個空格。于是悲劇就發生了。舊版本的沒删除,目前目錄下寫了一個下午的setup.sh被徹底删除了!

Linux指令行删除檔案恢複

不過也不要太着急,因為不管是Windows還是Linux,檔案的删除隻是系統回收了該檔案的軟體資源,但是在實體上檔案的内容仍然保留在存儲媒體之上,直到下一次被覆寫,格式化了也可以被找回來,除非低格(直接擦除磁盤)了那就真沒辦法了,但是一般日志式的系統更容易恢複,我的Fedora是Ext4的系統,很容易恢複。

         下面就是找回這個setup.sh的過程。

1.安裝extundelete

Linux指令行删除檔案恢複

 先yum search extundelete 查找這個軟體包;

         再yum insta extundelete.i686安裝。

2. 找到被rm的檔案

(0)檢視檔案系統類型和分區

Linux指令行删除檔案恢複

檔案系統類型為ext4,extundelete支援的類型為ext3/ext4 ,

使用者檔案系統在/dev/mapper/fedora-root根檔案系統中,被rm的檔案也在這裡。

(1) 執行:extundelete --inode 2 /dev/mapper/fedora-root

--inode 2為查找目前目錄下的檔案和被rm掉的檔案。先從根目錄查起。

Linux指令行删除檔案恢複

要恢複的setup.sh就在home目錄下。

(3) 執行:extundelete --inode 393217 /dev/mapper/fedora-root

home的節點号為393217,--inode 393217就是檢視home目錄下的檔案及被删除的檔案。

         依次下去,知道找到setup.sh的節點号。

Linux指令行删除檔案恢複

(4) 執行:extundelete --restore-inode 542480 /dev/mapper/fedora-root

setup.sh的節點号為542480,--restore-inode 542480就是恢複這個節點檔案。

         (5)檢視恢複結果

Linux指令行删除檔案恢複

在原來setup.sh的目錄下産生了一個RECOVERED_FILES目錄,恢複的檔案就在這個目錄中。

file. 542480就是要恢複的setup.sh。

         下面是找回setup.sh全部過程的截圖:

Linux指令行删除檔案恢複

如果覺得麻煩,為了以後友善,也可以将以上步驟封裝成一個腳本,這樣下一次就可以直接執行腳本就行了,我就不封了。

繼續閱讀