数据恢复方法和系统
【技术领域】
本发明涉及计算机领域,更具体地说,涉及一种在exFat分区格式化之后,恢复分区中数据的方法和系统。
【背景技术】
扩展文件分配表exFat(Extended File Allocation Table File System)是微软公司在2006年发布的一种可以代替Fat16、Fat32的文件系统。
exFat文件系统与Fat16、Fat32文件系统在存储结构上相似,其基本结构如图1所示。其中DBR(DOS BOOT RECORD)为DOS引导记录;$Bitmap是exFat文件系统用于存储簇的占用情况的系统文件;FAT表是文件在磁盘中存储位置记录;$UpCase文件是大小写字符转换的系统文件。DBR中保存分区非常重要的信息,文件系统进行读写文件的一些参数就是从DBR获取,进行格式化操作后,DBR与备份DBR就都会被破坏,造成磁盘中的文件无法找回。
现有对exFat分区格式化后数据恢复的方法,一般采用对DBR和备份的DBR进行修复,来实现数据恢复。但这种方法实现的技术难度大。如果不对DBR和备份的DBR进行修改,就必须通过繁琐的计算来实现数据恢复。不仅成本高,而且效率低下。
【发明内容】
本发明要解决的技术问题在于,针对exFat分区格式化后,数据恢复过程繁琐复杂的问题,提供一种简洁高效的数据恢复的方法和系统。
为实现上述目的,本发明采用的技术方案为:提供一种数据恢复方法,包括以下步骤:
S1、根据$UpCase文件特征,从被格式化的exFat分区第1扇区开始,在整个exFat分区内按扇区扫描$UpCase文件,获取$UpCase文件后读取$UpCase文件所在扇区号;
S2、根据根目录的特征,从被格式化的exFat分区第1扇区开始,在整个exFat分区内按扇区扫描根目录,获取根目录所在扇区号,并读出$UpCase文件目录项,根据$UpCase文件目录项的数据结构获取$UpCase文件的起始簇号;
S3、根据步骤S1和S2中获取的$UpCase文件所在扇区号、根目录所在扇区号和$UpCase文件起始簇号,计算每簇扇区数和2号簇所对应扇区号;
S4、扫描出卷中所有需要恢复的正常文件和删除文件;
S5、以步骤S3计算出的2号簇所对应扇区号为参照,标定步骤S4中扫描出的需要恢复的文件的位置,通过磁盘读操作,从exFat分区把文件恢复出来。优选地,步骤S3包括:将步骤S1和S2中获取的$UpCase文件所在扇区号、根目录所在扇区号和$UpCase文件起始簇号代入下列公式,计算每簇扇区数和2号簇所对应扇区号:
每簇的扇区数=根目录所在扇区号-$UpCase文件所在扇区号;
2号簇所对应扇区号=$UpCase文件所在扇区号-($UpCase文件起始簇号-2)×每簇的扇区数。
优选地,步骤S4包括:根据正常文件和删除文件的特征,以及根目录和Fat表,扫描出卷中所有需要恢复的正常文件和删除文件;
所述步骤S5中标定步骤S4中扫描出的需要恢复的文件的位置具体为:标定步骤S4中扫描出的需要恢复的正常文件和删除文件位置。
本发明提供的一种数据恢复的系统,包括:
用于扫描根目录所在扇区号、$UpCase文件所在扇区号和$UpCase文件起始簇号和需要恢复的文件的扫描单元;
用于计算每簇的扇区数和2号簇所对应扇区号的计算单元;以及
用于数据恢复的处理单元;
所述扫描单元将扫描到的根目录所在扇区号、$UpCase文件所在扇区号和$UpCase文件的起始簇号传送到计算单元,将扫描到的需要恢复的文件传送到处理单元;计算单元根据接收到的根目录所在扇区号、$UpCase文件所在扇区号和$UpCase文件的起始簇号计算出每簇的扇区数和2号簇所对应扇区号,并将2号簇对应扇区号传送到处理单元,处理单元以2号簇所对应扇区号为参照,标定需要恢复的文件的位置,从exFat分区中把文件恢复出来。
优选地,计算单元具体将接收到的根目录所在扇区号、$UpCase文件所在扇区号和$UpCase文件的起始簇号代入下列公式,计算每簇扇区数和2号簇所对应扇区号:
每簇的扇区数=根目录所在扇区号-$UpCase文件所在扇区号;
2号簇所对应扇区号=$UpCase文件所在扇区号-($UpCase文件起始簇号-2)×每簇的扇区数。
优选地,需要恢复的文件为根据正常文件和删除文件的特征,以及根目录和Fat表,从exFat分区中扫描出的所有需要恢复的正常文件和删除文件。
本发明的一种数据恢复的方法和系统,具有以下有益效果:在不用修复DBR和备份DBR的情况下,根据$UpCase文件和根目录文件的特征,扫描到$UpCase文件和根目录文件,根据其位置关系计算每簇扇区数,并读取UpCase目录项,从而计算出2号簇所对应的扇区号;然后根据计算出2号簇所对应的扇区号标定需要恢复的文件的位置,再通过磁盘读操作,从exFat分区把文件恢复出来,步骤简单。
【附图说明】
图1为exFat文件系统存储结构示意图;
图2为按照本发明提供的一种数据恢复方法实施例的流程示意图;
图3为$UpCase文件特征图;
图4为按照本发明的一种数据恢复系统实施例的流程示意图。
【具体实施方式】
以下结合附图,详细说明本发明。
为了实现在不修复DBR和备份DBR的情况下,恢复被格式化的exFat分区上无法找回的文件数据,本发明的数据恢复方法和系统,利用exFat文件系统存储结构中的$UpCase文件以及根目录文件,根据它们之间的位置关系来计算出每簇扇区数,并读出$UpCase文件目录项,从而计算出2号簇对应的扇区号。计算出的2号簇对应的扇区号是需要恢复的文件在exFat分区中位置的参照,通过2号簇对应的扇区号可以标定需要恢复的文件在exFat分区中的位置,从而将需要恢复的文件恢复到exFat分区没被格式化之前,它们原来的位置上。
其中,$UpCase文件是大小写字符转换的系统文件,它在exFat分区上的位置如图1所示,$UpCase文件前部分的特征如图3所示,可以根据$UpCase文件前部分的特征在exFat分区上扫描出$UpCase文件。
根目录的特征如下:
A.根目录项(0x03)+Bitmap目录项(0x81)+$UpCase文件目录项(0x82);
B.卷名目录项(0x83)+Bitmap目录项(0x81)+$UpCase文件目录项(0x82)。
可以根据根目录上述特征,在exFat分区上扫描出根目录。
本发明的数据恢复的方法中,还涉及到每簇扇区数和2号簇所对应扇区号的计算公式:
每簇的扇区数=根目录所在扇区号-$UpCase文件所在扇区号;
2号簇所对应扇区号=$UpCase文件所在扇区号-($UpCase文件起始簇号-2)×每簇的扇区数。
通过公式,首先计算出每簇的扇区数,然后再计算2号簇所对应扇区号。
在被格式化的exFat分区中,需要恢复的文件包括正常文件和删除文件,正常文件特征为“0x85 0xc0 0xc1”,删除文件特征为“0x05 0x40 0x41”。根据正常文件和删除文件的特征,在exFat分区中扫描正常文件和删除文件的方法,会出现一些未被删除的文件扫描不出的现象,为了保证将所有需要恢复的文件找出,本发明的数据恢复方法采用两种扫描方法协同扫描的方式。这两种扫描方法为:
根据正常文件和删除文件的特征,在exFat分区中扫描正常文件和删除文件的方法;以及
根据根目录及Fat表,扫描出所有未被删除文件的方法。
其中,根据根目录及Fat表,扫描出所有未被删除文件的方法对数据几乎不会造成破坏。最后扫描得到的正常文件和删除文件包含了两种扫描方法扫描出的所有文件,即使需要恢复的所有正常文件和删除文件。
本发明的一种数据恢复的方法流程图如图2所示,其中
步骤S1:
根据$UpCase文件前部分的特征,从exFat分区第1扇区开始,在整个exFat分区中按扇区扫描$UpCase文件,找到$UpCase文件后,记录$UpCase文件所在扇区号;如果没有找到$UpCase文件,则停止扫描。
步骤S2:
根据根目录的特征,从exFat分区第1扇区开始,在整个exFat分区中按扇区扫描根目录,找到根目录之后,记录根目录所在扇区号,并读出$UpCase文件目录项,由于$UpCase文件目录项的数据结构中有$UpCase文件起始簇号,可以根据$UpCase文件目录项的数据结构,记录下$UpCase文件的起始簇号;如果没有找到根目录,则停止扫描。
步骤S3:
将步骤S1和步骤S2获得的$UpCase文件所在扇区号和根目录所在扇区号,代入上述每簇的扇区数的计算公式中,计算出每簇的扇区数;将计算出的每簇的扇区数和步骤S1、S2得到的$UpCase文件所在扇区号和$UpCase文件起始簇号代入上述2号簇所对应扇区号的计算公式中,计算出2号簇所对应扇区号。
步骤S4:
根据正常文件和删除文件的特征,在exFat分区卷中扫描正常文件和删除文件;根据根目录及Fat表,在exFat分区卷中扫描出所有没有删除文件。将上述两个扫描的结果进行逻辑或,得到所有需要恢复的文件。
步骤S5:
通过步骤S3计算出的2号簇所对应扇区号为参照,标定所有需要恢复的文件在exFat分区中的位置,通过磁盘读操作,将文件从被格式化的exFat分区中恢复出来。
本发明的一种数据恢复的系统的流程图如图4所示,其中扫描单元100根据$UpCase文件和根目录的特征,从被格式化的exFat分区第1扇区开始,在整个exFat分区内,按扇区扫描$UpCase文件和根目录。在获得$UpCase文件和根目录之后,读取$UpCase文件所在扇区号和根目录所在扇区号,并读出$UpCase文件目录项,根据$UpCase文件目录项的数据结构获取$UpCase文件的起始簇号。扫描单元100将读取到的$UpCase文件所在扇区号和根目录所在扇区号,以及$UpCase文件的起始簇号传送到计算单元200。
扫描单元100根据正常文件和删除文件特征,以及根目录和Fat表,扫描出卷中所有的正常文件和删除文件,将它们传送到处理单元300。
计算单元200根据上述每簇扇区数及2号簇所对应扇区号的计算公式和由扫描单元100传送来的$UpCase文件所在扇区号、根目录所在扇区号以及$UpCase文件的起始簇号,先计算得到每簇扇区数,再计算得到2号簇所对应扇区号,并将2号簇所对应扇区号传送到处理单元300。
处理单元300根据分别从扫描单元100和计算单元200传送来的所有需要恢复的正常文件和删除文件,以及2号簇所对应扇区号来实现数据的恢复。具体来说,处理单元300根据2号簇所对应扇区号来标定所有需要恢复的正常文件和删除文件在exFat分区中的位置,最后通过磁盘读操作,把数据从exFat分区中恢复出来。