为什么我恢复的文件打不开/打开全是乱码

来源:互联网 发布:中控考勤机 php接口 编辑:程序博客网 时间:2024/04/28 15:11
 

为什么我恢复的文件打不开/打开全是乱码

 

你是否遇到过这种情况,即明明找到了自己丢失的文件,但恢复出来就是打不开,或者打开全是乱码?下面我们来介绍一下出现这种情况的原因。

要了解这种现象出现的原因,首先我们要了解一个文件是怎么存放在硬盘分区中的。
例如,我们有一个叫“报表.doc”的文件存放于D盘,如图1

1

在分区中,为了存放一个文件,系统首先在分区中类似于书的目录的结构中(FAT32为目录项,NTFSMFT项)写入文件的文件名,大小,时间,属性等信息,并且从可用空间里分配一块区域用于存放文件内容,内容所占的位置也写在目录中,以便以后寻找。如上图,“报表.doc”占用了212223三块空间,并且在目录中有对它的描述。现在如果我们误删除这个文件,则会变成下图:

2

我们看到,当我们删除“报表.doc”时,系统只是在这个文件目录的位置加上了一个“已删”标记,而关于它的一切其他数据和内容都还完好的保存在分区中,此时,212223三块区域随着“报表.doc”的删除,变为了可用空间,用于存放文件位置信息的第10块区域因为被加了删除标记,系统在写入新文件时就可能重用这块区域。如果我们在数据恢复时是图2的这种情况,恢复成功率是100%,因为关于“报表.doc”的一切信息均完好。

但是,如果我们意识到文件误删的时间较慢,从删除文件到开始尝试恢复之间还进行过其他操作,比如,在D盘安装了其他程序,则图2的这种情况将可能变为图3所示:

3


    我们在D盘安装了新的程序,它的其中一个文件“a.exe”正好被分配到了2021块,这时,“报表.doc”文件的第一部分内容就被覆盖了,我们现在如果开始恢复文件,从第10块得到文件的内容在21-23,在把21-233块的信息保存成新文件,由于21已经被毫不相干的其他文件占据,所以文件被破坏,此时再用Word打开,就会提示文件损坏,或者直接显示乱码

为什么格式化可能无法恢复

 

首先我们了解下格式化与删除
  我们向硬盘里存放文件时,系统首先会在文件分配表内写上文件名称、大小,并根据数据区的空闲空间在文件分配表上继续写上文件内容在数据区的起始位置。然后开始向数据区写上文件的真实内容,一个文件存放操作才算完毕。
  删除操作却简单的很,当我们需要删除一个文件时,系统只是在文件分配表内在该文件前面写一个删除标志,表示该文件已被删除,他所占用的空间已被"释放", 其他文件可以使用他占用的空间。所以,当我们删除文件又想找回他(数据恢复)时,只需用工具将删除标志去掉,数据被恢复回来了。当然,前提是没有新的文件写入,该文件所占用的空间没有被新内容覆盖。
  格式化操作和删除相似,都只操作文件分配表,不过格式化是将所有文件都加上删除标志,或干脆将文件分配表清空,系统将认为硬盘分区上不存在任何内容。格式化操作并没有对数据区做任何操作,目录空了,内容还在,借助数据恢复知识和相应工具,数据仍然能够被恢复回来。
  注意:格式化并不是100%能恢复,有的情况磁盘打不开,需要格式化才能打开。如果数据重要,千万别尝试格式化后再恢复,因为格式化本身就是对磁盘写入的过程,只会破坏残留的信息

 

数据恢复成功率的几个影响因素

    第一条:NTFS分区的恢复概率比较高,一般删除或者格式化后绝大部分都可以完整恢复的。某些文件有时候无法恢复,例如文件长度非常大或者文件在编辑使用很长时间,这文件会形成很多的碎片信息,在删除文件后,这个文件就无法知道文件长度,很难恢复了,例如一些使用很多年的数据库文件,删除后用数据恢复软件扫描到的文件长度是0,无法恢复。定期做磁盘碎片整理可以减少这种情况的发生,但是直接做磁盘碎片整理也有风险,请参考上面需要注意的问题。


    第二条:FAT或者FAT32分区,删除或者格式化后,比较大的文件或者经常编辑修改的文件,恢复成功率要低一些,比如经常编辑修改的XLS或者CDR文件就很难完整恢复。那些文件拷进去后就不动的文件,恢复成功率比较高,比如PDF或者JPG,MPG等不经常修改的文件,恢复率还是比较高的。这是因为FAT和FAT32分区使用文件分配表来记录每个文件的簇链碎片信息,删除或者格式化后簇链碎片信息就被清空了,那些经常编辑修改的文件由于它们的文件长度动态增长,在文件系统中一般都不会连续存放,所以文件碎片信息就无法恢复,文件恢复也就不完整了。

    第三条:经过回收站删除的文件,有时候会无法找到文件。NTFS下,从回收站中删除的文件,文件名会被系统自动修改成De001.doc之类的名字,原来的文件名被破坏。当您的数据丢失后,不能直接找到文件名,记得别漏过这些被系统改名过的文件哦。直接Shift+Del删除的则不会破坏文件名。


    第四条:重新分区或者删除分区或者分区表破坏,一般后面的分区基本能完整恢复,越靠后的分区被破坏的可能性越低,所以重要数据最好放在比较靠后的分区里面,不要放在C,D盘里。

 

 

什么情况下丢失的数据不能或者不易恢复?(一)

数据恢复不是100%都能成功的,它依靠操作系统对硬盘写入数据时的一些特性来工作,下面来介绍一些造成丢失数据无法恢复的常见几种情况。


1、数据覆盖


假设我们一个文件叫A,他在硬盘里存放方式如图1


1A(x)表示A文件的第x部分,下同
A文件删除后,硬盘里的情况变为图2


2
可以看到,删除的文件并没有真正被“删除”,只是它原本所占用的空间被标记为未使用,此时恢复数据的几率就非常高。但如果我们没有及时恢复,继续使用计算机做别的事,硬盘里的情况就会发生变化,例如3


3
硬盘中写入了另一个文件B,因为这部分空间是磁盘的可用空间,所以B就可以占据这部分,此时原本的A文件前面3部分就被覆盖,这部分数据就永久性的丢失了。现在即使用数据恢复工具扫描出A文件,也会因为其前3部分数据丢失而损坏,表现出恢复后文件打不开,或者乱码。
在文件A删除后写入B,并不一定会覆盖原本A文件所在的区域,这取决于操作系统对文件写入的调度算法。但是,往磁盘里写入的内容越多,原A文件所在区域被覆盖的可能性就会越大,所以,当用户意识到自己的文件丢失后,应立刻停止对目标盘的操作,以免将本来能恢复的文件破坏,造成数据永久丢失。



2FAT32中文件不连续储存

在磁盘中,有可能遇到一个文件被分成很多部分,存储在磁盘的不同位置,这种情况称为文件不连续储存(也称磁盘碎片),例如:


4
此时,A文件就属于不连续储存。
FAT格式的磁盘分区中,系统使用FAT表(文件分配表)来描述A文件各部分所在位置,如下图:


5
当我们要访问A文件时,首先查找文件的目录项,A文件的目录项在12的位置,系统得知它起始于54,于是前往54获取到A文件的第一部分。接下来系统查找FAT表,看到54号指向55,于是前往55获取A文件的第2部分。继续查找FAT表,55号指向50,于是前往50获取A文件第3部分。以此类推,直到FAT表中指向0,则文件结束。
我们现在把文件A删除,磁盘中将会变化成图6所示:
6
删除A文件后,A文件目录项被标“已删”标记,内容完好,但是,FAT表中有关原本A文件的记录被清空了,现在我们再从12中获取关于A文件的信息,也只能知道它从54开始,而A文件以后的部分的位置就无从知晓了。多数数据恢复工具对于这种情况,都只能假设A文件是连续的,即根据文件大小,从54处读取5块,这样恢复出来的A文件只有前2块是正确的,最后1块也错了位,这样就直接导致恢复出的文件打不开,而A文件真正的第34部分就永久的沉睡在磁盘中了。
NTFS文件系统中,不使用FAT表,而在文件的MFT项(相当于FAT目录项)中直接记录文件内用所占位置的全部信息,如图7
7
在关于A文件的MFT项中,明确描述了A文件各个部分所占位置,即使被删除,只要数据没有被覆盖,恢复工具就能从原本A文件的MFT项中得到所有必要信息,从正确的位置恢复出A文件。所以,NTFS文件系统更有利于数据的恢复,并且该文件系统也是微软推荐使用的文件系统,而FAT由于年代久远,即使是FAT32也只能支持最大4GB的文件,所以作者在这里推荐大家尽量使用NTFS文件系统。

 

什么情况下丢失的数据不能或者不易恢复?(二)

3、文件的目录项(MFT项)被覆盖


在前面两种情况中我们都提到了一个叫“目录项(MFT项)”的东西,它是文件系统用来记录文件名,文件大小,文件创建、修改、访问时间,文件属性等等基本信息的数据结构,一般被储存在各分区的特殊区域。访问一个文件时,系统必定从这些数据中找到目标文件,根据其中信息才能获取文件的内容。

当一个文件被删除时,它原来内容所占的区域会变为可用空间,它的目录项(MFT项)也会标为未使用,也就是说,以后创建的新文件的目录项(MFT)项就可能会占据这个位置。我们还是以上面NTFS文件系统中的一个例子进行说明,如图8


 

8
此时A文件MFT项所在的12号区域中记录了A文件的名字,大小,时间,属性等信息,当我们删除它后,则变为图9


 

9
可以看到,12号区域被标记为删除了,但它原本所记录的A文件信息并没有丢失。现在这块硬盘继续使用,在分区里继续创建新文件,上图所表示的区域就可能变为图10这种情况:


 

10
此时,磁盘中有一个新文件C,它的MFT项正好被系统分配在了12,因为12号已经被删除,可以重用。此时,A文件原本所有的基本信息则永久丢失。
这种情况,一般数据恢复工具就无法得知A文件的存在,即使它的内容完好无损。
发生这种情况时,A文件原本内容所占区域一定会在磁盘的可用空间中,因为如果是已用,则原本的内容必定被覆盖。部分高级数据恢复工具提供磁盘深度搜索功能,可以在磁盘可用空间中通过对常用文件格式的特征进行比对,得知原本有一个文件起始于54号区域。但除此之外一无所知,包括文件名,大小,时间,属性等,更不可能得知文件各部分所在位置了。数据恢复工具一般将此类搜索结果根据文件类型分类并加以序号命名(例如:10012.jpg),但由于连最基本的文件大小都未知,用户一般需提供一个估计大小值,并且该文件是否能恢复成功,还是取决于文件是否连续储存。像上面的例子,A文件原本是分散的,即使找到它起始于54,但对于一个丢失了前后位置关联信息的文件的恢复是非常困难的,专业人士有时可以凭借自己经验,使用WinHex等工具获取一些文件前后关联线索帮助恢复文件。



4、错误的格式化分区,或使用分区镜像工具还原了分区


从上面3种情况我们了解到,一个文件是否能恢复成功,取决于数据时候被覆盖,文件前后关联信息是否完好。下面我们来分析一下格式化分区或者用分区镜像工具(例如:ghost)还原分区后数据恢复的情况。

(1)     FAT分区格式化,破坏力:*****
FAT分区进行格式化时,系统将会清空所有的FAT表,这对不连续储存文件的恢复来说是毁灭性的。FAT分区格式化后,大部分数据恢复工具都能搜索出之前文件,但只有那些连续储存的文件能够正常恢复。

(2)     FAT分区镜像还原,破坏力:*****
在进行分区还原时,镜像工具写入了镜像分区中的数据,导致一部分数据被彻底覆盖,镜像越大,覆盖的数据区域也就越大,有恢复希望的数据就越少。并且在还原时,FAT表中会写入镜像分区的内容,有时就会使一部分数据恢复工具误认为FAT表有效,而将文件指向了错误的地方。

(3)     NTFS分区格式化,破坏力:**
NTFS格式化时会重写MFT项的前十几个,而这些项目是文件系统内部的隐藏文件,与用户数据关系不大,原本的用户文件的MFT项依然存在,数据恢复的可能性就非常大。一般如果没有在格式化后的磁盘写入数据,并且原本分区并不是很满的话,数据是能全部恢复的。如果原本分区很满,那么MFT项本身可能分段,造成格式化后找不到一部分MFT项。

(4)     NTFS分区镜像还原,破坏力:****
NTFS还原分区后也会被覆盖部分数据,根据被覆盖部分的大小决定能恢复的数据多少。还原分区时也写入的新的MFT项,造成靠前的MFT项被覆盖,从而是数据恢复变得困难。

从这里仍然看出,NTFS文件系统更有利于数据的恢复。使用镜像还原分区后,由于新数据的写入,恢复难度也大大增加。格式化分区时如果选择的不是“快速格式化”,则系统会清理掉大量原本分区的数据,而使数据恢复陷入困境。


    总结:数据恢复永远离不开一个本质——即数据是否被覆盖。一旦原本数据被覆盖,一切恢复手段都是浮云。

 

 

 

原创粉丝点击