linux ext2 檔案系統恢複被刪除的檔案
發布日期:2002-08-08
文章內容:
------------------------------------------------------------------------
--------
by deepin@nsfocus.com
http://www.nsfocus.com
來源於一次緊急響應,客戶通過foxmail收取了qmail 郵件伺服器上的100多封郵件
後刪除了,
但是發現這些郵件很重要,求助我們在郵件伺服器上進行恢複。
由於是遠端資料恢複,只能通過網路進行,不可能做到像傳統資料恢複那樣卸下硬
盤,先全盤
拷貝備份(實際工作中,幾乎沒有這樣的條件),再mount成唯讀進行恢複等等步
驟。只能根據現有的條件進行。
分區狀況不是很好,只是把把硬碟分為了/boot /兩個分區,郵件系統在
/var/qmail下,實際
上也在/分區
距離被刪除已經2-3個小時,郵件系統又一直在工作,刪除以後想要100%恢複這些
郵件,除非上
帝保佑。我也只能儘儘人道。
首先把郵件系統停止,主要是他們的smtp服務(主要是那些可能寫盤的內容),然
後選擇工具進行恢複
目前有如下工具可以在linux下使用進行檔案恢複
http://www.fish.com/tct/
可以在多種unix作業系統的不同檔案分區類型上進行恢複(當然效果並不一樣),
包括ufs,ffs,ex2等。
功能最強大,體積也最龐大,操作也最麻煩。
http://recover.sourceforge.net/linux/recover/
功能單一,使用比較方便
http://e2undel.sourceforge.net
http://unc.dl.sourceforge.net/sourceforge/e2undel/e2undel-0.8.tgz
有一個可作一定操作選擇的互動介面,這個工具需要安裝一個e2undel的運行庫,
如果
需要恢複的檔案在/usr所在地分區上,最好不用,免得安裝它以後進一步破壞了待
恢複的
檔案(當然可以把運行庫它安裝到其他檔案系統,但是根據它的安裝要求,還比較
麻煩)。
unrm
http://packetstormsecurity.com/UNIX/utilities/unrm-0.92.tar.gz
一個小工具,實際上使用了linux下的debugfs命令,簡化了手工使用debugfs的步
驟,
沒有什麼互動的介面,恢複的檔案直接放倒一個固定目錄下面
根據這一次的情況,那些體積龐大,需要安裝的工具不在選擇範圍。我使用了
unrm,為了
不破壞資料盤內容,我把這個小工具放倒/boot區展開.假設我們需要恢複的是
aaa
這個使用者的郵件
這個使用者的郵件
修改一下這個指令碼中mount的路徑(原來是/usr/sbin/mount ,這個系統是
/usr/bin)
看看/所在地分區裝置為 /dev/sda2
./unrm /dev/sda2 -u qmail -s aaa
恢複使用者qmail被刪除的檔案,檔案中有aaa這個字串。
實際發現這個-s參數沒有作用
使用./unrm /dev/sda2 -u qmail 後,自動在目前的目錄下生了一個unrm.recover的
目錄
各個被恢複的檔案以unrm.xxxxxx 方式存放在裡面
經過過濾
grep aaa * | cut -d : -f 1 | uniq
找到這些檔案名稱,然後cp到原來的qmail郵件用目錄中(Maildir/new)
這次的結果是恢複了35個檔案,但是有4個已經基本被破壞了,完整恢複的只有31
個
試著收取郵件,一切正常。
從這次恢複工作來看,在linux的ex2檔案系統下恢複,比以前在solairs下恢複
ufs系統要
使用./unrm /dev/sda2 -u qmail 後,自動在目前的目錄下生了一個unrm.recover的
方便很多,主要ufs在刪除以後,各個檔案區塊都沒有連結關係,而ex2有點類似與
fat系統,小檔案只是丟失了第一個區塊的inode號,後面的區塊還是有連結關係的
,大的檔案好像在一定數目的區塊後,才沒有連結關係。
在ufs下恢複檔案,可能還是tct相對效果要好一些。
歡迎訪問我們的網站http://www.nsfocus.com/
綠盟科技給您安全的保障
-----------------------------------------------------
http://www.linuxidc.com/Linux/2008-08/14744.htm
對於rm,很多人都有慘痛的教訓。我也遇到一次,一下午寫的程式就被rm掉了,幸好只是一個檔案,第二天很快又重新寫了一遍。但是很多人可能就不像我這麼幸運了。本文收集了一些在Linux下恢複rm刪除的檔案的方法,給大家作為參考。
首先,最好的方法是避免這個問題,以下是幾點建議:
1、rm -rf誤操作的後果是可怕的,rm -f也要三思而行,不能輕易使用。
2、做好資料備份。
3、用一些策略避免出錯:
提倡在shell下用 TAB 補全,用指令碼執行任務,減少出錯的機會。或者編寫一個指令碼,起名rm,在指令碼裡將真實的rm改為mv ,將刪除的都mv到一個指定的目錄裡面,定期清理。
那麼rm刪除的檔案還能恢複嗎?
rm的man裡面有如下說法:
請注意,如果使用 rm 來刪除檔案,通常仍可以將該檔案恢複原狀。如果想保證該檔案的內容無法還原,請考慮使用 shred。
所以理論上rm刪除的檔案是還能恢複的。刪掉檔案其實只是將指向資料區塊的索引點(information nodes)釋放,只要不被覆蓋,資料其實還在硬碟上,關鍵在於找出索引點,然後將其所指資料區塊內的資料抓出,再儲存到另外的分區。在用rm誤刪除檔案後,我們要做的第一件事就是保證不再向誤刪檔案的分區寫資料。
通常我們可以有以下幾種選擇:
1、藉助工具。
2、自己寫程式。你需要會編程並瞭解對應的檔案系統。
3、如果資料很有用,也許可以找專業公司搶救。
工具
1、The Sleuth Kit http://www.sleuthkit.org/sleuthkit/(Autopsy是它的一個圖形前端)
2、Foremost http://foremost.sourceforge.net
3、一個全能的工具,Finaldata,可以恢複unix/linux/dos下誤刪的檔案。對於unix,支援這些產品, Solaris、AIX和HP-UX。對於linux,支援EXT2的檔案系統。對於dos,支援FAT 12/16/32, NTFS 4/5/5.1 的檔案系統。
4、如果檔案系統是ext2(對ext3無效):
ext3的刪除機制是直接把 inode data 刪除了,所以造成 ext3 無法反刪除(ext3設計為無法恢複被刪除的檔案)。
unrm
ext2ed
debugfs(undel lsdel )
recover
Midnight Commander(mc)
e2undel
tct
5、如果檔案系統是FAT32或者NTFS:
EasyRecovery
Finaldata
6、freebsd如果使用了rm,可以試一下undelete這個命令.
7、當進程開啟了某個檔案時,只要該進程保持開啟該檔案,lsof可以用來恢複刪除檔案。