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. Windows 10 安全移动 MySQL 数据库的存储位置
  2. Android 安卓 四大组件
  3. Python列表元素操作相关的2个函数和匿名函数
  4. html元素一行显示不完收缩_这些常用的HTML标签,你还不知道吗?
  5. Android Builder模式在开发中的应用
  6. Python 中的 sys 库 和 os 库
  7. aso优化师是什么_2019最新ASO优化常见问题精选(下)
  8. dom4j读取XML文件内容
  9. ubuntu linux mac地址,Ubuntu下修改mac地址
  10. mysql datetime 比较大小_【知识点】分布式事务数据库 —-MySQL 数据库开发规范(第一节)...
  11. malloc函数的使用以及内存泄露情况
  12. Elasticsearch如何做到亿级数据查询毫秒级返回
  13. 数据库原理及应用教程(第4版|微课版)陈志泊-第一章习题
  14. 测试用例--测试大纲(提纲)法
  15. win10 网卡驱动正常搜索不到WiFi信号 解决方法
  16. [词根词缀]dic/dign/divid/doc/dom由来及词源D故事
  17. 高性能ORM数据访问组件Deft,比dapper快20%以上
  18. 女朋友要求道歉100遍:普通人和程序员的做法分别是:
  19. lwip-SNMP移植
  20. 安卓10侧边返回_向返回键说拜拜,安卓10向全面屏手势继续迈进

热门文章

  1. srv蓝屏补丁_srv.sys蓝屏?高危预警——您的系统存在重大安全漏洞
  2. unity Invoke
  3. 问道手游安卓服务器维护公告,问道手游安卓服务器8月2日6点临时维护公告
  4. php include怎么用,include()使用方法
  5. 支付宝沙箱测试-ALI40247
  6. .net core GBK 编码问题
  7. 【天坑< 四 >】快递 E 站 (持续更新)
  8. 计蒜客 A组模拟赛 青出于蓝胜于蓝(dfs序,树状数组)
  9. 连载七 奖学金文章更新 张文军 北京IOS第38期学员
  10. python实现贪吃蛇100行代码