恢复数据的原理和方法



发觉硬盘故障,需要恢复数据的时候,第一步所要做的就是检测,判断磁盘的故障原因和数据损坏程度
只有明确磁盘的损坏程度和故障原因,才能采取正确的步骤恢复数据:
硬盘内部故障,表现形式一般是CMOS不能识别硬盘,硬盘异响,那么可能的故障原因物理磁道损坏、内电路芯片击穿、磁头损坏等等,可以采用的修复手段有:内电路检修、在超净间内打开盘腔修复,这种情况只能送到专业的数据恢复公司。
硬盘外电路故障,如果CMOS不能识别硬盘,硬盘无异响,那么可能的故障原因是外电路板损坏、芯片击穿、电压不稳烧毁等等,可以采取的手段是外电路检修,或者更换相同型号的硬盘的电路板,一般需要送到专业的数据恢复公司。
软故障,如果CMOS能识别硬盘,一般是硬盘软故障,破坏原因一般是系统错误造成数据丢失,误分区、误删除、误克隆、软件冲突、病毒破坏等等,可以采用的方法有专用数据恢复软件或者人工方式。
下面具体讲解软故障的数据恢复方法
1.         确认数据丢失的故障原因 
1.         硬盘数据丢失,故障原因包括:
取其中数据,硬盘零磁道损坏),硬盘误分区,盘片逻辑坏区,硬盘存在物理坏区。 
2.         文档数据损坏,如Office 系列数据文件损坏,Zip、MPEG、asf、RM 等文件数据损坏。
2.         根据故障原因,采用相应的手段和步骤 
1.         备份数据,根据数据的重要程度,决定是否需要备份数据,备份数据的一般步骤是
1.         卸下损坏硬盘,接到另外一台完好的机器,注意新机器上有足够的硬盘空间备份 
2.         使用ghost的原始模式(raw),一个扇区一个扇区的把损坏磁盘备份到一个镜像文件中。如果硬盘上有物理坏道,最好是采用ghost的方式制作一个磁盘镜像,然后所有的*作都在磁盘镜像上进行,这样可以最大限度的保护原始磁盘不被进一步损坏,可以最大限度的恢复数据。 ——我猜想作者是说把磁盘内容克龙到另一块磁盘上做恢复的做作,以避免在原磁盘的写*作。
3.         修复硬盘数据。修复硬盘数据有2种类型,一种直接在原始硬盘修改,一种是把读出数据存储到其他的硬盘上。基本思路就是就是根据磁盘现有的信息最大限度的推断出丢失的分区和文件系统系统的信息,把受损的文件和系统还原,所以如果信息损失太多,那么是不可能恢复数据的。比如错误删除一个文件后,随即又拷贝了较大的文件过来,那么多半是被删除的文件被新拷贝过来的文件所覆盖,几乎是无法恢复了。病毒破坏,误克隆,硬盘误格式化,分区表失丢,误删除文件,移动硬盘盘符认不出来(无法读 
一个常识就是,如果想要恢复数据,那么不要在出问题的磁盘上运行scandisk或者Norton Disk Doctor等直接修复文件系统错误的软件,切记。

零磁道,MBR和分区表DPT:
零磁道处于硬盘上一个非常重要的位置,硬盘的主引导记录区(MBR)就在这个位置上。零磁道一旦受损,将使硬盘的主引导程序和分区表信息遭到严重破坏,从而导致硬盘无法自举。
MBR:
当通过Fdisk或其他分区工具对硬盘进行分区时,分区软件会在硬盘0柱面0磁头1扇区建立MBR(Main Boot Record),即为主引导记录区,位于整个硬盘的第一个扇区,在总共512字节的主引导扇区中,主引导程序只占用了其中的446个字节,64个字节交给了DPT(Disk Partition Table硬盘分区表),最后两个字节(55 AA)属于分区结束标志。主引导程序的作用就是检查分区表是否正确以及确定哪个分区为引导分区,并在程序结束时把该分区的启动程序调入内存加以执行。
DPT:
分区表DPT(Disk Partition Table),把硬盘空间划分为几个独立的连续的存储空间,也就是分区盘中的分区数量,每个分区的起始及终止扇区、大小以及是否为活动分区等。
通过破坏DPT,即可轻易地损毁硬盘分区信息。分区表分为主分区表和扩展分区表。
主分区表位于硬盘MBR的后部。从1BEH字节开始,共占用64个字节,包含四个分区表项,这也就是为什么一个磁盘的主分区和扩展分区之和总共只能有四个的原因。每个分区表项的长度为16个字节,它包含一个分区的引导标志、系统标志、起始和结尾的柱面号、扇区号、磁头号以及本分区前面的扇区数和本分区所占用的扇区数。其中”引导标志”表明此分区是否可引导,即是否活动分区。当引导标志为”80″时,此分区为活动分区;”系统标志”决定了该分区的类型,如”06″为DOS FAT16分区,”0b”为DOS FAT32分,”63″为UNIX分区等;起始和结尾的柱面号、扇区号、磁头号指明了该分区的起始和终止位置。
分区表项的16个字节分配如下:
第1字节: 引导标志 
第2字节: 起始磁头
第3字节: 低6位为起始扇区, 高2位与第4字节为起始柱面
第4字节: 起始柱面的低8位
第5字节: 系统标志
第6字节: 终止磁头
第7字节: 低6位为终止扇区, 高2位与第8字节为终止柱面
第8字节: 终止柱面的低8位

第9-12字节: 该分区前的扇区数目
第13-16字节: 该分区占用的扇区数目
扩展分区作为一个主分区占用了主分区表的一个表项。在扩展分区起始位置所指示的扇区(即该分区的第一个扇区)中,包含有第一个逻辑分区表,同样从1BEH字节开始,每个分区表项占用16个字节。逻辑分区表一般包含两个分区表项,一个指向当前的逻辑分区,另一个则指向下一个扩展分区。下一个扩展分区的首扇区又包含了一个逻辑分区表,这样以此类推,扩展分区中就可以包含多个逻辑分区。为方便说明,我们把这一系列扩展分区和逻辑分区分别编号,主扩展分区为 1号扩展分区,第一个逻辑分区表所包含的两个分区分别标为 1号逻辑分区和 2号扩展分区,依次类推。
主分区表中的分区是主分区,而扩展分区表中的是逻辑分区,并且只能存在一个扩展分区。
FS即文件系统,位于分区之内,用于管理分区中文件的存储以及各种信息,包括文件名字,大小,时间,实际占用的磁盘空间等。windows 目前常用的文件系统包括FAT12,FAT16,FAT32和NTFS系统。
DBR(Dos Boot Record)是*作系统引导记录区。它位于硬盘的每个分区的第一个扇区,是*作系统可以直接访问的第一个扇区,它一般包括一个位于该分区的*作系统的引导程序和相关的分区参数记录表。
簇,是文件系统中最小的数据存储单元,由若干个连续的扇区组成,硬盘的扇区的大小是512字节(几乎是用于所有的。分区表DPT则以80H或00H为开始标志,以55AAH为结束标志。分区表决定了硬盘),也就是既是一个字节的文件也要分配给它1个簇的空间,剩余的空间都被浪费了,簇越小,那么对小文件的存储的效率越高,簇越大,文件访问的效率高,但是浪费空间比较严重。
FAT(file allocation table)即文件分配表,记录了分区中簇的的使用情况,FAT表的大小与硬盘的分区的大小有关,为了数据安全起见,FAT一般做两个, 二FAT为第一FAT的备份,用于FAT12,FAT16,和FAT32文件系统。
DIR是DIRECTORY即根目录区的简写,根目录区存储了文件系统的根目录中的文件或者目录的信息(包括文件的名字,大小,所在的磁盘空间等等),FAT12,FAT16的DIR紧接在第二FAT表之后,而FAT32的根目录区可以在分区的任何一个簇。
MFT(Master File Table)是NTFS中存储有关文件的各种信息的数据结构,包括文件的大小,时间,所占据的数据空间等等。
以FAT32为例,FAT32分区的的0-2扇区为FAT32文件系统的DBR即引导扇区,3-5扇区为0-2扇区的备份。6-31扇区为空,32扇区开始为第一个FAT表,FAT表的大小与硬盘的分区的大小有关。随后是第2个FAT表,剩余的空间都是实际的文件所占用的,包括目录和文件。FAT32文件系统的根目录并不一定是数据区的第一个簇,它可以位于数据区的任何一个簇,这也是FAT32的根目录大小不在受255个文件限制的原因,这也是FAT32的文件名可以支持长文件名的原因之一。
分区表丢失,表现为硬盘原先所有分区或者部分分区没了,在磁盘管理器(winxp win2000 win2003)看到未分区的硬盘或者未分区的空间。有多种可能:
病毒,当年的cih病毒会用无效的数据填充分区表和第一个分区的数据,这种情况下,从前面介绍的分区的性质来看,c盘的数据很难恢复,而随后d盘和e盘等分区的实际数据并没有被破坏,而仅仅是分区表丢失而已,所以只要找到D盘和E盘等分区的正确的起始和结束位置,很容易恢复。
重新分区,使用fdisk对磁盘重新划分空间分布,那么原来的分区表被新的分区表取代,这个时候,同样是原来分区的数据没有损坏,仅仅是分区表指向了不正确的位置。

误删除文件的恢复

误删除文件的恢复的原理是什么呢?为什么删除文件后,又可以恢复回来?是不是所有的删除的文件都可以恢复?
当我们存储一个文件的时候,*作系统首先在一个记录所有空间使用情况的表格中,找到足够容纳我们的新文件的空间,然后把文件内容写到相对应的硬盘扇区上,最后在表格中标出该空间被占用了。
当我们删除一个文件的时候,一般并不对实际文件所占用的扇区进行*作,而是仅仅在该表格中指明那些空间是空白的了,可以分配给别的文件使用。在这个时候,被删除的文件的实际内容并没有受到破坏,可以恢复回来。如果我们删除一个文件后,又重新创建了一个文件,那么被删除文件所占用的扇区就有可能被新创建的文件所使用,这时候就无法恢复原来被删除的文件了。所以一旦错误的删除了文件,必须注意的就是不要对该文件所在的分区进行写*作了,否则有可能覆盖原来删除的文件,从而导致数据无法恢复。
对于误删除的文件,我们有很多选择,如finaldata,recover4all,easyrecovery,这些软件使用很简单,直接按照向导的指示就可以了。
下面介绍一种手工恢复被删除数据的方法,特别是使用这种自动化的方法恢复无效的时候,这种方法适合恢复有明显特征的结构简单的文件,如文本文件,如果格式复杂,就需要写一个类似的程序来恢复了。原理就是直接在分区中寻找被删除的文件的内容。
一个实例就是微软公司的vc6,vc6的ide有一个bug,一直没有修复,就是存储写好的程序代码的时候,偶然会弹出一个对话框说无法存储文件,这个时候必须再存一次才可以,如果你直接关闭vc6,就会发现刚才那个文件被删除了(这个bug是微软确认的,一直到vc6的sp5补丁也没有修复)。
我的一个朋友使用vc6的时候遇到了这个bug,而且他以为vc6出了问题,直接关闭了vc6,结果很费劲才调试好的很长的一的文件就失踪了。我首先试用了finaldata和easyrecovery,结果找出很多以前删除的文件,就是没有需要的。没有办法的情况下,只好使用强行搜索的方法了

1.         运行winhex,选择tools菜单中的opendisk,选择误删除的文件所在的逻辑盘c盘, 
2.         选择search菜单,使用find text命令,在打开的c盘上直接搜索程序代码中的特征串“增加了处理Reg_Expand_SZ”,
3.         经过一段时间后,把找到的代码所在扇区的前后几个扇区全部复制下来,拷贝到一个新的文件中,这样就找回了原来的代码。 
对于恢复结构性很强的文档,如果自动化的方式不起作用,可以写一个小程序来搜索的同时加以判断,或者直接利用winhex提供的接口写一个脚本,如果数据很重要,这样的手段也是很需要的。如果文件分散在分区的多个位置,还需要根据文档的内部结构来重新组织文档,才能彻底恢复数据。
误格式化的原理也是非常类似,仅仅是快速格式化的时候,并没有覆盖原来的数据,所以可以恢复

推荐几款数据恢复软件  

安易硬盘数据恢复软件  超级硬盘数据恢复软件   superRecovery   DiskGenius V3.2.2010.7 32Bit   finaldate,    DiskGenius

转载地址:http://bbs.cfanclub.net/thread-648570-1-1.html

你可能感兴趣的:(恢复数据的原理和方法)