11 12
发新话题
打印

[原创]实战:reiserfs文件系统误删文件 反删除操作

[原创]实战:reiserfs文件系统误删文件 反删除操作

今天玩find的时候玩出火了,一个不小心在find后面加了个-delete 结果用户目录瞬间全白了。当发现自己误删文件的时候我第一反应就是重启,还系统(把误删的分区umount 也是一样的效果).重启后进入debian(误删文件是arch里面的~/目录,里面可是存了我不少的东西),到网上找了下资料,按照linuxsir上南北老大写的文章“reiserfs文件系统反删除(Undelete)操作的实践"进行操作。
     首先是umount掉误删文件的分区,这一点已经做到了,我机器上两套系统(debian和arch,系统a的fstab里并没有写入对系统b所在的挂载,系统b里的fstab同样没有写入对系统a所在分区的挂载)。
     然后检查了一下debian系统所在分区的剩余空间还有多少
复制内容到剪贴板
代码:
df -h
结果发现剩余空间并不够作误删分区/dev/hdc9的镜像(debian里用的是2.6.18的内核,如果是2.6.2*的内核就应该是/dev/sda9),找朋友借来了一块20g的空硬盘挂上(在系统中,那块硬盘识别为hdb,只分有一个区,在系统中表示为/dev/hdb1)
复制内容到剪贴板
代码:
mkfs.reiserfs /dev/hdb1
将那块硬盘格式化为reiserfs文件系统(其实我也不知道是不是非得格式话为reiserfs,因为我误删的文件分区是reiserfs格式的,所以我把这块硬盘也格式化成了相同的格式。

接下来就是按照文档里面的步骤来了。
复制内容到剪贴板
代码:
mkdri /mnt/back



mount -t reiserfs /dev/hdc1 /mnt/back



dd if=/dev/hdc9 conv=noerror > /mnt/back/hdc9.img
等个几分钟镜像就作好了。
复制内容到剪贴板
代码:
losetup -f #检查哪个loop设备是空的(感觉好像每次都是/dev/loop0,貌似还没见过loop1,loop2空过







losetup /dev/loop0 /mnt/back/hdc9.img   #把hdc9.img 镜象关联到/dev/loop0的设备中
这样/dev/loop0就拥有了hdc9.img的所有属性,我们在loop0上进行修复操作,据说用loop0进行操作比直接对分区进行修复操作要来的安全:)

开始修复啦:
复制内容到剪贴板
代码:
reiserfsck --rebuild-tree -S -l undelete.log  /dev/loop0 #恢复的日志存在undelete.log里
这里有个选项让你选
复制内容到剪贴板
代码:
reiserfsck 3.6.19 (2003 www.namesys.com)



*************************************************************



** 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  www.namesys.com/support.html. **



*************************************************************



Will rebuild the filesystem (/dev/loop0) tree



Will put log info to 'undelete.log'



Do you want to run this program?[N/Yes] (note need to type Yes if you do):
要继续修复 当然得选Yes,注意Y要大写。
然后就是一个稍微有点漫长的等待过程了(时间应该是视误删文件所暂磁盘空间的大小来决定吧,不过和误删那个分区的总空间使用量也有一定的关系:
复制内容到剪贴板
代码:
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 scanned



Skipping 8218 blocks (super block, journal, bitmaps) 243766 blocks will be read



0%....20%....40%....60%....80%....100%                        left 0, 6588 /sec



        "r5" hash is selected



Flushing..finished



        Read blocks (but not data blocks) 243766



                Leaves among those 56



                Objectids found 77



Pass 1 (will try to insert 56 leaves):



Looking for allocable blocks .. finished



0%....20%....40%....60%....80%....100%                          left 0, 56 /sec



Flushing..finished



        56 leaves read



                45 inserted



                11 not inserted



        non-unique pointers in indirect items (zeroed) 633



Pass 2:



0%....20%....40%....60%....80%....100%                           left 0, 0 /sec



Flushing..finished



        Leaves inserted item by item 11



Pass 3 (semantic):



Flushing..finished



        Files found: 42



        Directories found: 12



Pass 3a (looking for lost dir/files):



Looking for lost directories:



Looking for lost files:0 /sec



Flushing..finished 48, 0 /sec



        Objects without names 16



        Dirs linked to /lost+found: 1



        Files linked to /lost+found 15



Pass 4 - finished      done 44, 0 /sec



Flushing..finished



Syncing..finished



###########



reiserfsck finished at Thu Dec  1 21:02:31 2005



###########
这样子,修复就差不多完成了,把loop0挂上看看恢复程度如何
复制内容到剪贴板
代码:
mkdir /mnt/back/loopback



mount /dev/loop0 /mnt/back/loopback
简单看了一下,恢复的程度应该还不算太失望,~/目录恢复了80%左右的样子,undelete.log也好长,用more看翻了几十页才翻完,没什么特重要的文件,我就没仔细去看他了。
这时候把原来误删的那个分区给挂上
复制内容到剪贴板
代码:
mount /dev/hdc9 /mnt/arch    #-t reiserfs好像加不加都一样,不加也可以挂上去,貌似现在mount比较智能了



cp -drpP /mnt/back/loopback/home/qwinding /mnt/arch/home
到了这里,基本上算是恢复了不少了,但是还有好多文件是恢复在lost+found里
看一下lost+found大概有多少文件
复制内容到剪贴板
代码:
du -sh /mnt/back/loopback/lost+found/
居然有2g之多。
那还真的得进去看下,应该还可以找出点什么来。
复制内容到剪贴板
代码:
cd /mnt/back/loopback/lost+found



find . -user qwinding|less
这时候慢慢看把 有的文件只是目录名变了你还可以认得出它来,需要的就cp回原来误删的那个分区里去吧。但是有些就直接是一行一行的数字了,看不出个所以然来,也没多大的办法了。
到这里基本就结束了。
把loop0 umount掉 /dev/hdc7 umount掉,重启系统进arch里面看看是否还正常。
不过这次还算运气比较好的,恢复过来的文档基本都没受到什么损害,不过很多音乐就有点倒霉了,好多都缩水了。放一半直接跳到下一首了。。不过有得恢复的总比没得恢复的好。:)
ps:在系统中执行命令的时候要小心谨慎,犯我这样错误可不好玩。建议在.barchrc里面加入
复制内容到剪贴板
代码:
alias rm = `rm -i`
[ 本帖最后由 qwinding 于 2007-6-8 20:37 编辑 ]
本帖最近评分记录
  • loveb +10 精品文章 2007-6-8 21:02
  • 盛忠良 +15 不错,支持实践. 2007-6-8 08:27
arch Duke +gnome2.18
debian etch  +xfce4

TOP

奇怪
复制内容到剪贴板
代码:

怎么不起作用,只好换颜色了
arch Duke +gnome2.18
debian etch  +xfce4

TOP

哈,我还原过n次了,老是误删除。

给大家个建议,备份用的分区,平时不要mount上来。
Fluke's Blog
I'm a user.

TOP

上次我也是把rm a*输成了 rm a *结果主目录下的东西全没了(不含子目录),好在没有什么重要的东西,我现在主目录下的都是符号连接了,已经不敢放普通文件了。

TOP

很好的教程阿  呵呵

目前的现状是会用linux的人动手能力很强 基本上自己都会
而不会用的人是再怎么教也教不会
邮箱 sanool at gmail.com  

TOP

早些时间我把一些重要资料给覆盖了,没能恢复了!!!唉!!想起就伤心!
邮箱:quanyan.chen@hotmail.com
博客:http://joson.lupaworld.com
生命满希望,前路由我创!

TOP

引用:
原帖由 sanool 于 2007-6-9 01:21 发表
很好的教程阿  呵呵

目前的现状是会用linux的人动手能力很强 基本上自己都会
而不会用的人是再怎么教也教不会
其实有些命令我也记不得,要用的时候就去查。
有些人看见命令就压力大,其实把这些命令等价想成easyrecovery的每一个按钮,
恢复linux的文件,不就跟恢复windows的文件一样简单而已。
而且了解这些命令,还能了解到一些如数据结构的知识,我觉得更有用。
http://scauos.cn
*nix学习捷径
项目孵化,资源整合,共享并汇聚知识与人才
陆续推出增值服务,就业前后的最佳伙伴
中国第一个生物信息学Wiki
世界第一个BioPerl中文百科
打造生物信息学系统生物学信息安全学高规格国际交流平台

TOP

上次想用mv的时候,不知道怎么的,打了个rm
-bigapple-
风吹哪页读哪页

TOP

哈哈.支持原创哟.

也误删过很多东东,不过都没用~嘿嘿~~
WEB : http://www.love-b.cn
OpenBSD FANS QQ群:27881338

TOP

TOP

 11 12
发新话题