線上書籍

Home

網管技術

http://www.cnblogs.com/edwardcmh/archive/2013/05/30/3108741.html

 

“慎用rm -rf命令,除非你知道此命令帶來的後果。”這是一條Linux用戶守則,雖然大多數用戶都明白這條語句的含義,但是我覺得還需要完善一下,為這條語句加上一個使用前提:在你確認自己擁有清醒頭腦,並且輸入沒有誤差的時候可以使用rm -rf命令。這次驚心動魄的起因就是我將rm –rf log* 命令錯誤的輸成了rm –rf log *,造成了當前目錄下的所有項目文件全部被誤刪除。

ls了兩回,確定自己不是眼花後開始尋找解決辦法,昔日在Windows下有很多次數據恢復經歷,但在Linux下這還是第一次,在網上發現了神器extundelete,事後也證明它確實是神器,於是馬上準備下載安裝,但是問題來了,數據恢復成功的鐵律就是舊數據不被覆蓋,開髮用的Linux安裝在VMware中,使用默認磁盤分區結構,只單獨掛載了/boot和/,用戶數據在/home/user,無法單獨umount這個目錄啊,這也說明了安裝時為什麼最好將/home單獨mount為一個設備,找了一些資料後發現更不能輕易變更分區結構了,於是乾脆就死馬當活馬醫,準備直接安裝extundelete,不直接修改/home/user的內容,也許文件還有救。

安裝extundelete:

extundelete需要依賴e2fsprogs和e2fslibs,真慶幸當初我把RHEL配置了CentOS的yum,不然又要為了依賴包耗費腦細胞了。。。

1

2

<font><font>yum install e2fsprogs*</font></font><font></font><font><font>

yum install e2fslibs*</font></font>

安裝完成後解壓extundelete-0.2.4.tar.bz2,用三步走方法安裝extundelete:

1

2

3

<font><font>./configure</font></font><font></font><font><font>

make</font></font><font></font><font><font>

make install</font></font>

恢復誤刪的文件:

先用df看一眼/掛載到哪裡了,然後直接輸入要恢復文件的目錄:

1

2

3

4

5

6

7

<font><font>[edward@www 桌面]$ df -Th</font></font><font></font><font><font>

文件系統類型容量已用可用已用%% 掛載點</font></font><font></font><font><font>

/dev/mapper/VolGroup-lv_root</font></font><font></font><font><font>

              ext4 18G 6.8G 9.7G 42% /</font></font><font></font><font><font>

tmpfs tmpfs 504M 420K 504M 1% /dev/shm</font></font><font></font><font><font>

/dev/sda1 ext4 485M 43M 417M 10% /boot</font></font><font></font><font><font>

.host:/ vmhgfs 386G 334G 53G 87% /mnt/hgfs</font></font>

1

<font><font>[root@www ~]# extundelete /dev/mapper/VolGroup-lv_root --restore-directory '/home/edward/WtvSKTrans'</font></font>

extundelete會自動掃描指定目錄下所有已刪除的文件,這裡因為我沒有umount根目錄,有一些文件已經被覆蓋\破壞而無法恢復了,慶幸的是都不是什麼重要的文件,項目的主要源文件都恢復了,這是最讓我感到欣慰的。

QQ截圖20130530162355

恢復後的文件保存在當前目錄下的RECOVERED_FILES目錄中,不知神馬原因恢復後的文件名凌亂了,具體應該說是文件名錯位了,不過這已經是最好的結果了,真心感謝extundelete的作者。

QQ截圖20130415150948QQ截圖20130415151024

事後思考:

用rm -rf時必須保持清醒的頭腦,這個前面已經說過了,不然後果就是心驚肉跳,如果再因為數據恢復不了出了業務事故而丟了工作,那可太得不償失了。從防範的角度,不如把rm -rf這個命令換成mv .trash,google找到了一些用腳本改寫rm的方法,但是實際嘗試後發現不盡人意,於是找到了trash-cli命令行回收站,trash -cli能將rm與圖形界面回收站結合,既直觀又安全,使用方法請參考我的這篇博文

參考資料(感謝原作者分享):

1、EXT4中恢復使用rm命令誤刪除的文件

2、Extundelete文件誤刪找回工具

3、避免誤刪文件:Linux回收站機制