reiserfs檔案系統反刪除(Undelete)操作的實踐(轉)
reiserfs檔案系統反刪除(Undelete)操作的實踐(轉)[@more@]一、關於Linux的檔案系統(Filesystem)請參考: 《Linux 檔案系統概述》二、reiserfs 檔案系統是否支援undelete操作來恢復資料;一般刪除資料有兩種情況,一種是透過rm 命令來刪除的;另一種是透過格式化銷燬資料的,在reiserfs 檔案系統中,恢復這兩種誤操作而引起的資料損失的情況還是有點區別;1、由於誤操作rm 刪除命令而造成資料的丟失的恢復情況;透過實踐來看,透過rm 刪除資料,我們能透過reiserfs的修復檢測工具來恢復,如果儲存裝置沒有任何問題,或者檔案系統沒有壞塊(bad block)的情況下是百分之百的恢復;2、由於格式化硬碟所帶來的資料損失的恢復情況;我測試了格式化儲存備來測試恢復reiserfs 檔案系統所丟失的資料,我是在行動硬碟上做的實踐;比如我的行動硬碟上只有一分割槽,並且是基於reiserfs 檔案系統的;我存放了一百多M的資料,然後再用mkreiserfs或mkfs.reiserfs 工具來格式化這個硬碟分割槽。如果這時我們發現重建了硬碟分割槽的檔案系統是誤操作。這時想透過reiserfs的修復工具來修復,能挽回大多數資料;但並不是百分百,有時也會是百分百的成功,就看你的運氣了;如果我是把這有reiserfs 檔案系統的分割槽,格式化為其它的檔案系統了,這時如果發現是誤操作,成功機率就極低了;或者說大多是不能成功;如果我們把硬碟的分割槽表也重建了,如果這時再想起是誤操作,恢復的reiserfs檔案系統的可能性也是極低的,或者說想透過reiserfs 檔案系統工具的恢復成功率為零;但有時或多或少也能恢復出一點,或者恢復的是很久很久以前的資料。呵,這事是有點怪;如果您是由於重新分割槽導致的資料損失,首先可能您要恢復分割槽表到以前狀態,可能Windows中有這方面的工具;在Linux系統下也應該有這樣的工具,但都是商業的。Windows中好的資料恢復工具也應該是商業性的。3、在reiserfs 檔案系統中,undelete恢復資料情況的約定;我們前面已經說過了,由於rm 指令的誤操作而引起的資料損失,是能恢復大多數,或百分之百,也就是第一種情況;另外如果原來的硬碟分割槽是reiserfs 的,由於您誤操作使用 mkreiserfs 或mkfs.reiserfs 格式化致使資料的損失也應該劃在這個約定之內,也是可以恢復大多數資料,但這種情況應該比較少;三、reiserfs 檔案系統恢復資料流程;1、準備修復盤和大容量儲存裝置;1)支援reiserfs 檔案系統的livecd 或系統修復盤;如果您用的是移動儲存,是reiserfs檔案系統上的損失,您就直接用您當前用的linux系統就能修復,但得支援reiserfs 檔案系統才行。呵,這不是廢話嗎?不支援reiserfs 檔案系統的Linux,我的行動硬碟用reiserfs 有什麼用。livecd 是最好的,只要支援reiserfs檔案系統的livecd 就OK;另外我發現slackware 安裝盤中的第一張是也是可以用;當然不排除其它發行版的安裝盤和修復盤,只要能用就行;2)儲存裝置;比如您損失資料的硬碟分割槽是 9G,所以您得找個最少得找個未使用空間是10G的硬碟(或硬碟分割槽)吧;否則怎麼能容得下資料損失的映象呢?所以最好找一個大容量的硬碟或硬碟分割槽做準備;如果您只是在幾百M的行動硬碟上的損失,是不是找個地方就容下了;這種情況就好辦多了;2、恢復資料的過程;1)用livecd 開機進入系統,或者用修復盤進入系統;livecd 比較好辦,他本來就是一個在光碟上執行的系統;您可以找一個發行版本下載;請到: 可以選擇slax 或 Knoppix ;您也可以用slackware的第一張盤,一路enter後,就出現 bash# 字樣,這樣就OK了;當然您也可以把硬碟掛在有Linux的機器上來恢復,總之方法多的是;我們無非是藉助一個支援reiserfs 檔案系統的Linux系統來恢復資料,這個道理我們應該理解;2)用dd 工具來做硬碟分割槽的映象;為什麼資料損失的硬碟分割槽的映象,能不能直接修復?直接修復也是可以的,但如果出現錯誤,恢復資料的可能性就很低了。除非我們能保證損失資料的硬碟分割槽沒有任何bad block ,或者在此硬碟分割槽上沒有任何物理和邏輯壞道;另外我們還要確保百分之百不會再次操作失誤;所以對硬碟分割槽映象是極為重要的,也就是說用映象盤來恢復資料,以保證原有資料的安全性和可靠性;還有一點值得一說的是,請不要掛載有資料損失的硬碟分割槽,也不要再次向其寫入資料;否則恢復資料的成功率會降低;檢視是否有自動掛載分割槽,請用df -h 來檢視;如果發現已經掛載了,就用 umount 解除安裝;我們要弄明白是哪個分割槽的資料損失了,您可以用fdisk -l 來檢視分割槽表;比如我十分明確的認為 /dev/sda1 的資料損失了;這時我們就要做/dev/sda1的映象;然後我們得準備一個有空間的分割槽,是linux的檔案系統的,比如ext3或reiserfs都行;只是為了儲存dd出來的分割槽映象;我們用 mount 來掛載用來儲存映象檔案的分割槽;這在準備工作中已經提到了;比如我想用 檔案系統為reiserfs 的硬碟分割槽/dev/hda8來存放/dev/sda1的映象,那就掛載/dev/hda8;bash# mkdir hda8 注:建立一個目錄bash# mount -t reiserfs /dev/hda8 hda8 注:把/dev/hda8 掛載到hda8目錄上;bash# df -h 注:檢視/dev/hda8是否掛載上了;bash# cd hda8 注:進入hda8目錄;bash# dd if=/dev/sda1 conv=noerror > sda1.img 注:做 /dev/sda1 的整個分割槽的映象;3)透過reiserfsck或fsck.reiserfs 映象來恢復資料;bash# losetup -f 注:查詢哪個loop裝置是空的;/dev/loop0 注:發現有一個空的是/dev/loop0 ;bash# losetup /dev/loop0 sda1.img注:把sda1.img 鏡象關聯到/dev/loop0的裝置中;bash# reiserfsck --rebuild-tree -S -l undelete.log /dev/loop0注:透過reiserfsck 來修復,-S 表示整個分割槽,-l 後面是接日誌輸出,最後是/dev/loop0裝置;因為我們前面把sda1.img 關聯到了/dev/loop0裝置中,這樣/dev/loop0就擁有了sda1.img的所有屬性;這和直接透過下面命令修復的效果是一樣的;但這樣透過映象裝載修復的方法主要是為了安全;bash# reiserfsck --rebuild-tree -S -l undelete.log /dev/sda1注:這樣直接操作也行,如果 /dev/sda1上有bad block就麻煩了;可能會損傷到/dev/sda1 資料的安全,明白了吧;然後會出現類似如下的提示:reiserfsck 3.6.19 (2003 )*************************************************************** Do not run the program with --rebuild-tree unless **** something is broken and MAKE A BACKUP before using it. **** If you have bad sectors on a drive it is usually a bad **** idea to continue using it. Then you probably should get **** a working hard drive, copy the file system from the bad **** drive to the good one -- dd_rescue is a good tool for **** that -- and only then run this program. **** If you are using the latest reiserfsprogs and it fails **** please email bug reports to reiserfs-list@namesys.com, **** providing as much information as possible -- your **** hardware, kernel, patches, settings, all reiserfsck **** messages (including version), the reiserfsck logfile, **** check the syslog file for any related information. **** If you would like advice on using this program, support **** is available for $25 at /support.html. ***************************************************************Will rebuild the filesystem (/dev/loop0) treeWill put log info to 'undelete.log'Do you want to run this program?[N/Yes] (note need to type Yes if you do): Yes注:請輸入Yes,這樣就進行修復了;詳細情況如下:Replaying journal..Reiserfs journal '/dev/loop0' in blocks [18..8211]: 0 transactions replayed###########reiserfsck --rebuild-tree started at Thu Dec 1 21:01:53 2005###########Pass 0:The whole partition (251984 blocks) is to be scannedSkipping 8218 blocks (super block, journal, bitmaps) 243766 blocks will be read0%....20%....40%....60%....80%....100% left 0, 6588 /sec"r5" hash is selectedFlushing..finishedRead blocks (but not data blocks) 243766Leaves among those 56Objectids found 77Pass 1 (will try to insert 56 leaves):Looking for allocable blocks .. finished0%....20%....40%....60%....80%....100% left 0, 56 /secFlushing..finished56 leaves read45 inserted11 not insertednon-unique pointers in indirect items (zeroed) 633Pass 2:0%....20%....40%....60%....80%....100% left 0, 0 /secFlushing..finishedLeaves inserted item by item 11Pass 3 (semantic):Flushing..finishedFiles found: 42Directories found: 12Pass 3a (looking for lost dir/files):Looking for lost directories:Looking for lost files:0 /secFlushing..finished 48, 0 /secObjects without names 16Dirs linked to /lost+found: 1Files linked to /lost+found 15Pass 4 - finished done 44, 0 /secFlushing..finishedSyncing..finished###########reiserfsck finished at Thu Dec 1 21:02:31 2005###########4)掛載loop 裝置,檢視資料恢復情況;bash# mkdir recoversda1 注:建立一個目錄;bash# mount /dev/loop0 recoversda1 注:把/dev/loop0掛載到 recoversda1 上;bash# more undelete.log 注:檢視恢復日誌;bash# cd recoversda1 注:進入recoversda1目錄檢視資料恢復情況;一般的情況下,如果您是rm 刪除的東西,大多會百分之百的恢復了,有些內容可能會恢復到lost+found的目錄中,要透過恢復日誌來對比檢視;如果您認為您的資料恢復的差不多了,這時就可以把損失資料的硬碟分割槽掛載上,然後複製已經恢復的資料過去;bash# cd .. 注:從 recoversda1 退出,返回上級目錄;bash# mkdir sda1 注:建立sda1目錄;bash# mount /dev/sda1 sda1 注:掛載 /dev/sda1 到sda1目錄上;下面的就是從recoversda1目錄中,把已經恢復的資料複製到資料損失的硬碟分割槽上;這個工作就簡單了吧;cp命令應該會用吧,如果真的不會,那我也沒有辦法了,看來你和我的水平真的差不多;哈哈。。。。5)恢復好資料的掃尾工作;要正常解除安裝一系列掛載的盤;bash# umount /dev/hda8bash# umount /dev/sda1bash# umount /dev/loop1bash# losetup -d /dev/loop0... ...如果出現裝置忙的提示,可能是您正處於掛載目錄中;退出就好了;四、關於本文;這篇實踐文件是根據洋人提供的方法實踐而來,如果您認為北南在抄襲,那您也一樣可以抄襲;五、參考文件;六、相關文件;《有關ext2檔案系統下反刪除(Undelete)操作恢復資料的文件》《Linux 檔案系統概述
來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/8225414/viewspace-945170/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- ZT:reiserfs檔案系統反刪除(Undelete)操作的實踐delete
- SCO UNIX下的反刪除(undelete)(轉)delete
- Linux檔案系統的反刪除方法簡介(轉)Linux
- ReiserFS檔案系統壞塊的處理(轉)
- AIX刪除檔案系統AI
- 實戰分析ext2檔案系統下恢復誤刪除檔案(轉)
- git的忽略檔案和刪除檔案操作Git
- win10系統driverstore檔案怎麼刪除_win10系統刪除driverstore檔案的方法Win10
- Vista反刪除系統更多資訊展示(轉)
- win10如何刪除系統更新臨時檔案_windows10更新刪除臨時檔案操作方法Win10Windows
- windows刪除檔案的批處理操作Windows
- 輕鬆玩轉Python檔案操作:移動、刪除Python
- Linux 5.12 的 exFAT 檔案系統更快刪除大檔案Linux
- win10系統刪除檔案提示檔案正在使用無法刪除如何解決Win10
- 怎麼清理c盤只留下系統檔案 怎麼刪除c盤除系統以外的檔案
- 華納雲:ubuntu系統怎麼刪除檔案?Ubuntu
- win10系統下刪除tmp檔案的方法Win10
- c盤爆紅了可以刪除哪些檔案 怎樣刪除c盤非系統檔案
- 檔案的刪除
- 轉:Oracle刪除資料檔案Oracle
- JS模擬陣列操作(新增、刪除、插入、排序、反轉)JS陣列排序
- linux中誤刪除oracle資料檔案的恢復操作(轉)LinuxOracle
- 檔案IO操作的最佳實踐
- 刪除Win8.1系統休眠檔案有妙招
- RM 刪除資料檔案恢復操作
- 【Solaris】Solaris檔案系統管理4 ZFS檔案系統備份、刪除與恢復
- 刪除某個檔案或資料夾時,系統提示無法刪除!
- win10系統C盤哪些檔案可以刪除?win10/win7系統刪除c盤無用檔案的方法Win10Win7
- 刪除檔案
- 如何刪除電腦系統中多餘的dll檔案
- thinkphp對檔案的上傳,刪除,下載操作PHP
- 如果再刪除檔名(2)的操作,linux系統檢測到Linux
- win10系統如何將檔案徹底刪除 win10電腦徹底刪除檔案的方法Win10
- UNIX系統被刪檔案的恢復策略(轉)
- win10 upgrade檔案能刪除嗎 win10系統怎麼刪除upgrade檔案Win10
- 恢復誤刪linux -ext3-ext2 檔案系統檔案的操作方法-轉載Linux
- windows10中的windows的系統舊檔案如何刪除Windows
- Linux基楚操作指引【檔案改名、檔案備份、檔案刪除】Linux