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 比较好办,他本来就是一个在光盘上运行的系统;您可以找一个发行版本下载;请到: http://www.frozentech.com/content/livecd.php可以选择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 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) 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... ...如果出现设备忙的提示,可能是您正处于挂载目录中;退出就好了;四、关于本文;这篇实践文档是根据洋人提供的方法实践而来,如果您认为北南在抄袭,那您也一样可以抄袭;五、参考文档;http://www.martian.org/marty/archives/000888.htmlhttp://marc.theaimsgroup.com/?l=reiserfs&m=104861318421306&w=2http://www.antrix.net/journal/techtalk/reiserfs_data_recovery_howto.html六、相关文档;《有关ext2文件系统下反删除(Undelete)操作恢复数据的文档》《Linux 文件系统概述

来自 “ ITPUB博客 ” ,链接:http://blog.itpub.net/8225414/viewspace-945170/,如需转载,请注明出处,否则将追究法律责任。

转载于:http://blog.itpub.net/8225414/viewspace-945170/

reiserfs文件系统反删除(Undelete)操作的实践(转)相关推荐

  1. ext3文件系统反删除利器ext3grep应用实战

    推荐:10年技术力作:<高性能Linux服务器构建实战Ⅱ>全网发行,附试读章节和全书实例源码下载! 一."rm –rf"带来的困惑 国外一份非常著名的Linux系统管理 ...

  2. ext3文件系统反删除利器-ext3grep

    Linux作为企业级服务器,数据的安全性至关重要,任何数据德尔丢失和误删都是不可容忍的!最近我接触到一款软件-ext3grep,它可以恢复误删的数据,下面简单讲解一下这个软件. ext3grep的恢复 ...

  3. linux下反删除软件,浅谈Linux文件系统反删除方法(二)

    列出的档有很多(这里找到2692个),第一字段是档节点号,第二字段是档所有者,第三字段是读写权限,接下来是档大小,占用块数,删除时间.然后就可以根据档大小和删除日期判断那些是我们需要的.比如我们要恢复 ...

  4. 【服务器数据恢复】服务器reiserfs文件系统损坏的数据恢复案例

    服务器数据恢复环境: 文件系统是reiserfs的服务器: 4块146G SAS硬盘组成的RAID5: 分区结构:一个几十M的boot分区,一个271G的LVM卷,一个2G的swap分区,LVM卷中直 ...

  5. 恢复linux reiserfs文件系统损坏丢失的数据

    在介绍恢复过程之前先简单说明一下故障情况,发生故障的是一台IBM X3850服务器,这个服务器是由4块146G SAS硬盘组成的RAID5作为存储介质,操作系统是SUSE LINUX,文件系统全都是r ...

  6. 苹果文件系统数据删除后数据恢复技术难度大

    苹果主流文件系统是HFS/HFS+/HFSX,广泛应用于苹果硬件产品,其中包括MAC机器.IPHONE.IPAD.IPOD系列.在数据恢复业务中,经常会碰到苹果设备的数据恢复案例,例如MAC机器误删除 ...

  7. 【服务器数据恢复】服务器reiserfs文件系统数据恢复案例

    服务器数据恢复环境: 某品牌服务器中4块SAS硬盘组建RAID5. boot分区+LVM卷+swap分区(按照先后顺序),LVM卷中划分了一个reiserfs文件系统,作为根分区. 服务器故障: 服务 ...

  8. 解决Reiserfs文件系统损坏的问题我们是认真的

    一.故障设备信息: 服务器:X3850服务器 硬盘类型:SAS,容量:146G    4块硬盘组成RAID5 文件系统:Reiserfs 二.Reiserfs文件系统故障分析: 1.经过分析发现了之前 ...

  9. linux reiserfs文件系统损坏的数据恢复方法

    在介绍恢复过程之前先简单说明一下故障情况,发生故障的是一台IBM X3850服务器,这个服务器是由4块146G SAS硬盘组成的RAID5作为存储介质,操作系统是SUSE LINUX,文件系统全都是r ...

最新文章

  1. 配置mysql使其允许外部ip进行登录
  2. Microsoft Deployment Toolkit 2010 新功能实战之一
  3. filter和map的区别
  4. vector,list,deque容器的迭代器简单介绍
  5. 谁来帮帮只想救人的医生呢? | 凌云时刻
  6. java简单烟花代码_JavaScript实现的简单烟花特效代码
  7. 高通WLAN驱动分析
  8. 亲爱的我拿什么拯救你的木讷?
  9. 一键修改Windows密码批处理
  10. Gerrit报错:Permission denied publickey的解决办法
  11. 高3米直径10的半圆形求面积是多少
  12. 第14章传智书城前台程序设计
  13. 【渝粤题库】陕西师范大学165205 组织设计与人力资源规划 作业(专升本)
  14. luogu P1373 小a和uim之大逃离
  15. 【数据结构】带头结点的单链表
  16. javascript高级程序设计阅读收获(5.4.2)——Math
  17. linux调试MCX314AL过程
  18. 如何测量无人机电机和螺旋桨的效率?
  19. c语言读取文件字节数,怎么在C语言中利用fstat函数获取文件的大小
  20. 计算道路曲线要素的小程序

热门文章

  1. QT 中遇到QPixmap::scaled: Pixmap is a null pixmap 的解决办法
  2. 响应式个人导航主页源码
  3. 微博转发话题js代码
  4. SQLi-Labs 学习笔记(Less 51-65)
  5. 图像目标检索:基于Opencv的颜色空间匹配法
  6. 企业战略与项目管理那些事:从单项目到组合管理
  7. Linux 内核console设备实现详解
  8. SAP FICO自动清账程序(程序代码仅作参考,不保证一定可以运行)
  9. Pinyin4j入门教程---识别中文
  10. 【转】【中级财管精华】递延年金现值公式的理解