在 linux 下 rm-rf 是一個很可怕的命令,因為下達這個命令意味著一旦刪除的檔案是無法挽回的,事實是如此嗎?真的沒有補救措施了嗎?答案是委婉了,在一定的條件下可以補救,大家可能熟悉 windows 下刪除的補救措施是通過相關的站羣軟件實現的,在 linux 下同樣可以做到補救,但是有個大前提:就是不能有覆蓋的動作(意思就是在嘗試恢復刪除的資料前,刪除檔案的目錄內不能存放新東西),不然覆蓋多少就損失多少!
這裏用到的套件是 ext3grep 、系統必須預設的安裝上 e2fsprogs-lib 、 2fsprogs-devel 、 e2fsprogs5 、 gcc 、 gcc++這些站羣軟件
[root@localhost~]#rpm-qa|grepe2fsprogs
e2fsprogs-libs-1.39-23.el5
e2fsprogs-devel-1.39-23.el5
e2fsprogs-1.39-23.el5
原始碼安裝 ext3grep
[root@localhost~]#llext3grep-0.10.2.tar.gz
-rw-r–r–1rootroot236364Oct172011ext3grep-0.10.2.tar.gz
[root@localhost~]#tarzxvfext3grep-0.10.2.tar.gz
[root@localhost~]#cdext3grep-0.10.2
[root@localhostext3grep-0.10.2]#./configure
[root@localhostext3grep-0.10.2]#make&&makeinstall
[root@localhost~]#ll/usr/local/bin
total2656
-rwxr-xr-x1rootroot2709704Oct1504:46ext3grep//www.linuxidc.com 這句是那個可執行檔案
接下來演示一個補救的過程例項
[root@localhost~]#mkdir/data//ixdba/
[root@localhostdata]#ddif=/dev/zeroof=data-diskbs=1Mcount=105
[root@localhostdata]#mkfs.ext3data-disk//格式為 ext3 的檔案系統,在出現的提示符處輸入 y
[root@localhostdata]#mount-oloop/data/data-disk/ixdba///掛載
[root@localhostdata]#cp/etc/host*/ixdba///往裏邊放檔案
[root@localhostdata]#cp/etc/passwd/ixdba/
[root@localhostdata]#cd/ixdba/
[root@localhostdata]#rm-rf*//製造刪除的動作
[root@localhostdata]#cd/data/
[root@localhostdata]#ext3grep/data/data-disk–ls–inode2//檢視丟失的檔案
[root@localhostdata]#ext3grep/data/data-disk–restore-filepasswd//僅僅恢復 passwd 這個檔案
[root@localhostdata]#ext3grep/data/data-disk–restore-all//恢復的動作,全部恢復
[root@localhostdata]#ls
data-diskdata-disk.ext3grep.stage1data-disk.ext3grep.stage2RESTORED_FILES
[root@localhostdata]#llRESTORED_FILES///所有恢復的檔案全在這個資料夾裏存放,都找回來了
total48
-rw-r–r–1rootroot17Oct1506:03host.conf
-rw-r–r–1rootroot187Oct1506:03hosts
-rw-r–r–1rootroot161Oct1506:03hosts.allow
-rw-r–r–1rootroot347Oct1506:03hosts.deny
drwx——2rootroot4096Oct1506:04lost+found
-rw-r–r–1rootroot1635Oct1506:03passwd
總結:這裏只能實現的是首次恢復的動作,並且不能有覆蓋的動作。
注意:
1.ext3grep 後面跟的是分割槽名稱,不是目錄名
2.–restore-file 恢復指定檔案,對路徑名有特殊要求,具體請自己用—help 檢視
3. 所有恢復的檔案放到該分割槽下的 RESTORED_FILES 目錄,不是原目錄
4. 關於所需的安裝包,可以在系統光碟、 SDK 光碟上找。例如我就在 suse11sp1 的系統光碟和 SDK 光碟中找到所需的所有 rpm 包(不過 ext3grep 的原始碼包還是在網上下的)。實在不行也可以到網上去下載。