CN105786653A - 基于fat32文件系统的文件恢复方法及其系统 - Google Patents

基于fat32文件系统的文件恢复方法及其系统 Download PDF

Info

Publication number
CN105786653A
CN105786653A CN201610115295.6A CN201610115295A CN105786653A CN 105786653 A CN105786653 A CN 105786653A CN 201610115295 A CN201610115295 A CN 201610115295A CN 105786653 A CN105786653 A CN 105786653A
Authority
CN
China
Prior art keywords
fdt
directory entry
sector number
start sector
next effective
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Granted
Application number
CN201610115295.6A
Other languages
English (en)
Other versions
CN105786653B (zh
Inventor
邵炳阳
沈长达
吴少华
赵庸
滕达
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Xiamen Meiya Pico Information Co Ltd
Original Assignee
Xiamen Meiya Pico Information Co Ltd
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Xiamen Meiya Pico Information Co Ltd filed Critical Xiamen Meiya Pico Information Co Ltd
Priority to CN201610115295.6A priority Critical patent/CN105786653B/zh
Publication of CN105786653A publication Critical patent/CN105786653A/zh
Application granted granted Critical
Publication of CN105786653B publication Critical patent/CN105786653B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/07Responding to the occurrence of a fault, e.g. fault tolerance
    • G06F11/14Error detection or correction of the data by redundancy in operation
    • G06F11/1402Saving, restoring, recovering or retrying
    • G06F11/1446Point-in-time backing up or restoration of persistent data
    • G06F11/1448Management of the data involved in backup or backup restore
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/10File systems; File servers
    • G06F16/11File system administration, e.g. details of archiving or snapshots

Abstract

本发明公开了一种基于FAT32文件系统的文件恢复方法及其系统,方法包括:获取当前分区内各个FDT目录项的起始簇号和起始扇区号;将第一个有效的FDT目录项的起始簇号和起始扇区号分别记录为当前分区的根目录的起始簇号和起始扇区号;确定下一有效的FDT目录项;计算当前分区的簇大小;计算根目录的偏移扇区数;计算下一有效的FDT目录项的理论起始扇区号;若下一有效的FDT目录项的起始扇区号和所述理论起始扇区号不相等,则确定存在新的分区;对之前的FDT目录项进行恢复处理;本发明在磁盘存在多个分区,且分区被格式化删除的情况下,实现了对各个分区的文件的恢复,可提高数据恢复效果。

Description

基于FAT32文件系统的文件恢复方法及其系统
技术领域
本发明涉及计算机数据恢复技术领域,尤其涉及一种基于FAT32文件系统的文件恢复方法及其系统。
背景技术
FAT32文件系统是Windows操作系统中应用最为广泛的文件系统之一,在SD卡与U盘等存储介质上使用的更多。FAT32文件系统由保留扇区(DBR)、文件分配表区(FAT)、根目录区(ROOT)以及数据区(DATA)组成;保留扇区位于FAT32文件系统起始位置,保留扇区的第一个扇区为FAT32文件系统的DOS引导记录,即DBR,保存着FAT32文件系统在磁盘上的簇大小、保留扇区数、总扇区数、根目录起始位置,FAT表的大小与数目等信息;FAT表用以描述数据区中的簇的分配状态以及用以描述文件或者目录的数据在磁盘中存储的位置,每个FAT表项由4个字节组成,记录着数据区每个簇的地址;根目录区位于数据区域的第一个数据簇,当在文件系统根目录下创建文件或者目录的时候,需要在根目录区中写入相应的文件或者目录的目录项;数据区域存储的所有数据的目录项信息以及实际的文件数据。
目录项FDT是FAT32文件系统至关重要的数据结构,在FAT32文件系统中,所有的文件和文件夹都会被分配一个32字节的目录项,用以存储文件或者文件夹的元数据信息,FAT32文件系统的目录项分为短文件名目录项、长文件名目录项、“.”与“..”目录项和卷标目录项。
FAT32文件系统删除文件的恢复技术在计算机安全领域中一直是备受关注的热点。目前,市面上已经有了许多较为成熟的FAT32文件系统删除数据恢复的技术以及相关的数据恢复软件,这些恢复技术与恢复软件都只是简单的对FAT32文件系统的FDT目录项进行简单的查找与分析。因此,若被删除的磁盘中包含多个FAT32文件系统分区,这些恢复软件都无法正确的将各自FAT32分区的数据给恢复出来。
现有的FAT32文件系统的恢复算法主要有两种,其一是通过在FAT表中查找删除文件的文件记录并解析达到恢复删除文件的目的,其二是直接在磁盘中搜索FDT表并解析达到恢复删除文件的目的。如果原磁盘中存在多个FAT32分区,并且对这些分区都进行格式化并删除操作,那么通过上述两个方法都无法正确的恢复出被删除的文件。
在公开号为102937924A的专利文件中,公开了一种综合文件特征与文件系统的FAT数据恢复方法,包括:获取当前待恢复文件的FDT信息,根据该FDT信息获取该文件的起始簇号;根据该FDT信息确定其总簇数并设置该文件的特征尾;扫描该文件的起始簇并将其数据存储到文件数据缓冲区内;根据FAT表依次扫描该文件的当前簇后的空闲簇,并以该文件的总簇数或特征尾作为文件结束的依据,得到该文件的完整数据。但该方法无法正确地将被删除分区的数据给恢复出来。
发明内容
本发明所要解决的技术问题是:提供一种基于FAT32文件系统的文件恢复方法及其系统,正确恢复被删除的分区中的文件,提高恢复效果。
为了解决上述技术问题,本发明采用的技术方案为:一种基于FAT32文件系统的文件恢复方法,包括
获取当前分区的扇区集合;
遍历所述扇区集合内的扇区,分别获取当前分区内各个FDT目录项的起始簇号和起始扇区号;
确定当前分区内第一个有效的FDT目录项;
将所述第一个有效的FDT目录项的起始簇号和起始扇区号分别记录为当前分区的根目录的起始簇号和起始扇区号;
确定下一有效的FDT目录项;
根据所述下一有效的FDT目录项的起始簇号和起始扇区号以及所述根目录的起始簇号和起始扇区号,计算当前分区的簇大小;
根据所述簇大小以及所述根目录的起始簇号和起始扇区号,计算所述根目录的偏移扇区数;
根据所述下一有效的FDT目录项的起始簇号、所述簇大小和所述偏移扇区数,计算所述下一有效的FDT目录项的理论起始扇区号;
若所述下一有效的FDT目录项的起始扇区号和所述理论起始扇区号不相等,则确定所述当前分区中存在新的分区;
对所述下一有效的FDT目录项之前的FDT目录项进行恢复处理;
将所述下一有效的FDT目录项的起始簇号和起始扇区号分别记录为所述新的分区的根目录的起始簇号和起始扇区号;
清除计算获取的所述簇大小和所述偏移扇区数;
返回继续执行所述确定下一有效的FDT目录项的步骤。
本发明还涉及一种基于FAT32文件系统的文件恢复系统,其特征在于,包括
第一获取模块,用于获取当前分区的扇区集合;
第二获取模块,用于遍历所述扇区集合内的扇区,分别获取当前分区内各个FDT目录项的起始簇号和起始扇区号;
第一确定模块,用于确定当前分区内第一个有效的FDT目录项;
第一记录模块,用于将所述第一个有效的FDT目录项的起始簇号和起始扇区号分别记录为当前分区的根目录的起始簇号和起始扇区号;
第二确定模块,用于确定下一有效的FDT目录项;
第一计算模块,用于根据所述下一有效的FDT目录项的起始簇号和起始扇区号以及所述根目录的起始簇号和起始扇区号,计算当前分区的簇大小;
第二计算模块,用于根据所述簇大小以及所述根目录的起始簇号和起始扇区号,计算所述根目录的偏移扇区数;
第三计算模块,用于根据所述下一有效的FDT目录项的起始簇号、所述簇大小和所述偏移扇区数,计算所述下一有效的FDT目录项的理论起始扇区号;
第三确定模块,用于若所述下一有效的FDT目录项的起始扇区号和所述理论起始扇区号不相等,则确定所述当前分区中存在新的分区;
第一恢复模块,用于对所述下一有效的FDT目录项之前的FDT目录项进行恢复处理;
第二记录模块,用于将所述下一有效的FDT目录项的起始簇号和起始扇区号分别记录为所述新的分区的根目录的起始簇号和起始扇区号;
清除模块,用于清除计算获取的所述簇大小和所述偏移扇区数;
第一执行模块,用于返回继续执行所述确定下一有效的FDT目录项的步骤。
本发明的有益效果在于:通过将第一个有效的FDT目录项记录为根目录,并假设下一有效的FDT目录项属于当前分区,计算出下一有效的FDT目录项的理论起始扇区号,通过比较实际的起始扇区号和理论起始扇区号,判断下一有效的FDT目录项是否属于当前分区,根据判断结果判定下一有效的FDT目录项实际所属的分区,可在原磁盘中存在多个分区且分区被删除的情况下,正确恢复出被删除的分区中的文件,提高文件数据恢复效果。
附图说明
图1为本发明一种基于FAT32文件系统的文件恢复方法的流程图;
图2为本发明实施例一的方法流程图;
图3为本发明实施例二的方法流程图;
图4为本发明一种基于FAT32文件系统的文件恢复系统的结构示意图;
图5为本发明实施例五的系统结构示意图。
标号说明:
1、第一获取模块;2、第二获取模块;3、第一确定模块;4、第一记录模块;5、第二确定模块;6、第一计算模块;7、第二计算模块;8、第三计算模块;9、第一判断模块;10、第三确定模块;11、第一恢复模块;12、第二记录模块;13、清除模块;14、第一执行模块;15、第二执行模块;16、第二判断模块;17、第四确定模块;18、第三判断模块;19、第二恢复模块。
具体实施方式
为详细说明本发明的技术内容、所实现目的及效果,以下结合实施方式并配合附图详予说明。
本发明最关键的构思在于:通过动态计算,判断出各个有效FDT目录项实际所属的分区,从而正确恢复出各个分区中的文件数据。
请参阅图1,一种基于FAT32文件系统的文件恢复方法,包括
获取当前分区的扇区集合;
遍历所述扇区集合内的扇区,分别获取当前分区内各个FDT目录项的起始簇号和起始扇区号;
确定当前分区内第一个有效的FDT目录项;
将所述第一个有效的FDT目录项的起始簇号和起始扇区号分别记录为当前分区的根目录的起始簇号和起始扇区号;
确定下一有效的FDT目录项;
根据所述下一有效的FDT目录项的起始簇号和起始扇区号以及所述根目录的起始簇号和起始扇区号,计算当前分区的簇大小;
根据所述簇大小以及所述根目录的起始簇号和起始扇区号,计算所述根目录的偏移扇区数;
根据所述下一有效的FDT目录项的起始簇号、所述簇大小和所述偏移扇区数,计算所述下一有效的FDT目录项的理论起始扇区号;
若所述下一有效的FDT目录项的起始扇区号和所述理论起始扇区号不相等,则确定所述当前分区中存在新的分区;
对所述下一有效的FDT目录项之前的FDT目录项进行恢复处理;
将所述下一有效的FDT目录项的起始簇号和起始扇区号分别记录为所述新的分区的根目录的起始簇号和起始扇区号;
清除计算获取的所述簇大小和所述偏移扇区数;
返回继续执行所述确定下一有效的FDT目录项的步骤。
从上述描述可知,本发明的有益效果在于:通过计算FDT目录项的理论起始扇区号,并与实际的起始扇区号进行比较,可判断出是否存在新的分区并判断出FDT目录项实际所属的分区,可在分区被删除的情况下正确恢复出被删除分区中的文件,提高文件数据恢复效果。
进一步地,所述“对所述下一有效的FDT目录项之前的FDT目录项进行恢复处理”具体为:依次对所述下一有效的FDT目录项之前的各个FDT目录项与其起始簇号进行关联。
由上述描述可知,通过将FDT目录项与其起始簇号进行关联,构建目录结构,恢复相关文件。
进一步地,所述“确定下一有效的FDT目录项”之后,进一步包括:
判断所述下一有效的FDT目录项是否为卷标FDT目录项;
若是,则确定所述当前分区中存在新的分区;
对所述下一有效的FDT目录项之前的FDT目录项进行恢复处理;
将所述下一有效的FDT目录项的起始簇号和起始扇区号分别记录为所述新的分区的根目录的起始簇号和起始扇区号;
清除计算获取的所述簇大小和所述偏移扇区数;
返回继续执行所述确定下一有效的FDT目录项的步骤。
由上述描述可知,通过判断下一有效的FDT目录项是否为卷标FDT目录项,可直接判断是否存在新的分区,提高恢复效率。
进一步地,所述“计算所述下一有效的FDT目录项的理论起始扇区号”之后,进一步包括:
若所述下一有效的FDT目录项的起始扇区号和所述理论起始扇区号相等,则返回继续执行所述确定下一有效的FDT目录项的步骤。
由上述描述可知,若所述下一有效的FDT目录项的起始扇区号和所述理论起始扇区号相等,则判定所述下一有效的FDT目录项属于当前分区,继续对下一有效的FDT目录项进行判断,判断是否存在新的分区。
进一步地,所述“确定下一有效的FDT目录项”之前,进一步包括:
判断是否还存在下一有效的FDT目录项;
若否,则对所述根目录及其之后的FDT目录项进行恢复处理。
由上述描述可知,若不存在下一有效的FDT目录项,即已经遍历完所有有效的FDT目录项,即确定当前分区内不存在新的分区,也就是说,当前分区中的所有FDT目录项均属于当前分区,则对当前分区的所有FDT目录项进行恢复处理,实现当前分区内文件的恢复。
进一步地,所述“根据所述下一有效的FDT目录项的起始簇号和起始扇区号以及所述根目录的起始簇号和起始扇区号,计算当前分区的簇大小”具体为:
根据公式C=(S-RS)/(L-RL)计算当前分区的簇大小;其中,C为当前分区的簇大小,S为所述下一有效的FDT目录项的起始扇区号,L为所述下一有效的FDT目录项的起始簇号,RS为所述根目录的起始扇区号,RL为所述根目录的起始簇号。
进一步地,所述“根据所述簇大小以及所述根目录的起始簇号和起始扇区号,计算所述根目录的偏移扇区数”具体为:
根据公式P=RS-C*(RL-2)计算所述根目录的偏移扇区数;其中,P为所述根目录的偏移扇区数,RS为所述根目录的起始扇区号,RL为所述根目录的起始簇号,C为所述簇大小,2为每个分区第一个簇的簇号。
进一步地,所述“根据所述下一有效的FDT目录项的起始簇号、所述簇大小和所述偏移扇区数,计算所述下一有效的FDT目录项的理论起始扇区号”具体为:
根据公式TS=(L-2)*C+P计算所述下一有效的FDT目录项的理论起始扇区号;其中,TS为所述下一有效的FDT目录项的理论起始扇区号,L为所述下一有效的FDT目录项的起始簇号,C为所述簇大小,2为每个分区第一个簇的簇号。
由上述描述可知,通过假设下一有效的FDT目录项与所述根目录同属于当前分区,计算出当前分区的簇大小和根目录的偏移扇区数,并根据计算出的簇大小和偏移扇区数,计算出下一有效的FDT目录项的理论起始扇区号,即若假设成立,所述下一有效的FDT目录项应该所在位置的起始扇区号。
请参照图4,本发明还提出了一种基于FAT32文件系统的文件恢复系统,包括
第一获取模块,用于获取当前分区的扇区集合;
第二获取模块,用于遍历所述扇区集合内的扇区,分别获取当前分区内各个FDT目录项的起始簇号和起始扇区号;
第一确定模块,用于确定当前分区内第一个有效的FDT目录项;
第一记录模块,用于将所述第一个有效的FDT目录项的起始簇号和起始扇区号分别记录为当前分区的根目录的起始簇号和起始扇区号;
第二确定模块,用于确定下一有效的FDT目录项;
第一计算模块,用于根据所述下一有效的FDT目录项的起始簇号和起始扇区号以及所述根目录的起始簇号和起始扇区号,计算当前分区的簇大小;
第二计算模块,用于根据所述簇大小以及所述根目录的起始簇号和起始扇区号,计算所述根目录的偏移扇区数;
第三计算模块,用于根据所述下一有效的FDT目录项的起始簇号、所述簇大小和所述偏移扇区数,计算所述下一有效的FDT目录项的理论起始扇区号;
第三确定模块,用于若所述下一有效的FDT目录项的起始扇区号和所述理论起始扇区号不相等,则确定所述当前分区中存在新的分区;
第一恢复模块,用于对所述下一有效的FDT目录项之前的FDT目录项进行恢复处理;
第二记录模块,用于将所述下一有效的FDT目录项的起始簇号和起始扇区号分别记录为所述新的分区的根目录的起始簇号和起始扇区号;
清除模块,用于清除计算获取的所述簇大小和所述偏移扇区数;
第一执行模块,用于返回继续执行所述确定下一有效的FDT目录项的步骤。
进一步地,所述第一恢复模块具体用于依次对所述下一有效的FDT目录项之前的各个FDT目录项与其起始簇号进行关联。
实施例一
请参照图2,本发明的实施例一为:一种基于FAT32文件系统的文件恢复方法,磁盘被格式化且分区被删除之后,相应的FAT表与根目录被清除,但是子目录的FDT目录项数据不会被清除。由于所有子目录的FDT目录项的位置都是记录在根目录中,格式化后根目录被清空,无法直接访问到之前分区的FDT目录项,因此只能直接通过搜索查找磁盘中残留的FDT目录项,并进行分析,才能恢复出相应的文件。也就是说,FAT32文件系统被格式化且被删除之后,文件所处的分区被删除了,虽然FDT目录项仍然存在,但无法判断出其原来所属的分区,因此可能无法正确地恢复被删除的文件数据。
本实施例提供一种基于FAT32文件系统的文件恢复方法,能够基于原磁盘存在多个分区,并且这些分区都被格式化且删除的情况下,实现文件数据的正确恢复,包括如下步骤:
S1:解析当前磁盘文件系统的文件信息,并获取磁盘残留区的空扇区集合,虽然待恢复文件所处的分区均被删除,但磁盘残留区可以当作一个分区,因此也可以当作是获取当前分区的扇区集合。
S2:遍历扇区集合内的扇区。
S3:判断是否遍历完所有扇区,若否,则执行S4,若是,则执行步骤S16。
S4:获取下一扇区内的所有FDT目录项,包括获取各个FDT目录项的起始簇号和起始扇区号;所述起始扇区号可以很容易地根据遍历到的扇区获得,所述起始簇号可以根据存储在目录项属性中的起始簇号高16位和起始簇号低16位,简单结合之后获得。
S5:判断所述下一扇区的第一个FDT目录项是否为有效的FDT目录项,若是,则执行S6,若否,则执行步骤S3。若FDT目录项为有效FDT,则必定是以下情况:其一,FDT目录项为属于目录的FDT目录项,此种情况下,第一条FDT目录项与第二条FDT目录项必定为“.”目录与“..”目录;其二,FDT目录项是卷名FDT目录项,此种情况下对FDT目录项中的部分属性进行有效性判断,如判断某些值必须符合某种规则。
S6:判断所述有效的FDT目录项是否为卷标FDT目录项,若是,则表示所述有效的FDT目录项属于一个新的分区,即之前被格式化删除的分区,执行S14,若否则执行S7。
S7:判断所述有效的FDT目录项是否属于在格式化之前被删除的文件记录,若是,则执行S3,若否,则执行S8。可选地,可根据文件名和文件属性来进行该判断;当文件被删除时候,文件记录的簇标志高位被清零,同时文件名记录序列号也会被清零,因此,若所述有效的FDT目录项的簇标志高位为零且记录序列号为零,则表示所述有效的FDT目录项是在磁盘格式化之前被删除的文件记录,而不是在格式化时被删除的,因为格式化时不会删除子目录的FDT目录项,因此判定所述有效的FDT目录项属于当前分区。
S8:判断所述有效的FDT目录项是否为当前分区中第一个有效的FDT目录项,若是,则执行S9,若否,则执行S10。
S9:将所述有效的FDT目录项的起始簇号L和起始扇区号S分别记录为当前分区的根目录的起始簇号RL和起始扇区号RS;即令RL=L,RS=S;执行步骤S3。
S10:根据所述有效的FDT目录项的起始簇号L和起始扇区号S以及根目录的起始簇号RL和起始扇区号RS,计算当前分区的簇大小C;具体计算公式为:C=(S-RS)/(L-RL)。
S11:根据所述簇大小C以及根目录的起始簇号RL和起始扇区号RS,计算根目录的偏移扇区数P;具体计算公式为:P=RS-C*(RL-2);其中,2为FAT32文件系统的起始簇号,即对于FAT32文件系统,每个分区第一个簇的簇号为2。
S12:根据所述有效的FDT目录项的起始簇号L、所述簇大小C和所述偏移扇区数P,计算所述有效的FDT目录项的理论起始扇区号TS;具体计算公式为:TS=(L-2)*C+P;其中,2为每个分区第一个簇的簇号。
S13:判断所述有效的FDT目录项的起始扇区号S和理论起始扇区号TS是否相等,若是,则表示所述有效的FDT目录项属于当前分区,执行步骤S3,若否,则表示所述有效的FDT目录项属于一个新的分区,执行步骤S14。
S14:对所述有效的FDT目录项之前的FDT目录项进行恢复处理,即依次将属于当前分区的各个FDT目录项与其起始簇号进行关联,构建目录结构,恢复出相关的文件。
S15:清除计算获取的所述簇大小和所述偏移扇区数,即将所述簇大小和所述偏移扇区数清零。
S16:将所述有效的FDT目录项的起始簇号和起始扇区号分别记录为新的分区的根目录的起始簇号和起始扇区号,执行步骤S3。
S17:对当前分区内的FDT目录项进行恢复处理。
可选地,也可以先对扇区进行遍历,一次性获取所有的FDT目录项,再遍历FDT目录项,分别对各个FDT目录项进行相应判断。但本实施例先对扇区进行遍历,再分别对各个扇区内第一个FDT目录项进行相应判断,而对扇区内的其余FDT目录项则不进行判断,大大减少了判断量,进一步提高了数据恢复的效率。
本实施例在确定出新分区时才对属于当前分区的FDT目录项进行恢复处理,可选地,也可以在遍历完一个扇区后立即对该扇区的FDT目录项进行恢复处理。
本实施例可运用在原磁盘中存在多个分区的情况,通过在某一分区被删除的情况下正确恢复出被删除的分区内存储的文件,从而提高文件数据恢复效果。
实施例二
请参照图3,本实施例是实施例一中步骤S10-S11的改进,即在步骤S10和S11之前分别各加一个判断的步骤S101和S111,相同之处不再累述。
S101:判断之前是否有计算出的当前分区的簇大小,若有,则执行步骤S111,若否,则执行步骤S10。
S111:判断之前是否有计算出的根目录的偏移扇区数,若有,则执行S12,若否,则执行S11。
本实施例通过增加这两个判断,可不用对每个有效的FDT目录项都进行簇大小和偏移扇区数的计算,可在数据恢复过程中减少计算量,提高文件数据恢复的效率。
实施例三
本实施例也是实施例一的一种改进,在步骤S10之后增加一个判断的步骤S102,相同之处不再累述。
S102:判断所述簇大小是否为整数,若是,则执行步骤S11,若否,则表示所述有效的FDT目录项属于一个新的分区,执行步骤S14。
本实施例可在计算出簇大小之后直接判断所述有效的FDT目录项是否属于新的分区,在某些情况下可不用计算偏移扇区数和理论起始扇区号,减少计算量,进一步提高文件数据恢复的效率。
实施例四
本实施例是实施例一的另一种改进,在步骤S5之后增加一个判断的步骤。因为对于FAT32文件系统,每个分区第一个簇的簇号为2,而根目录一般处于分区的第一个簇,因此在获取FDT目录项的簇号并判断出其有效之后,即步骤S5之后,可以直接判断有效的FDT目录项的簇号是否为2,若是,则表示所述有效的FDT目录项属于新的分区并执行步骤S14,若否,则继续执行步骤S6。
本实施例可进一步提高文件数据恢复的效率。
实施例五
请参照图5,本实施例为一种基于FAT32文件系统的文件恢复系统,包括
第一获取模块1,用于获取当前分区的扇区集合;
第二获取模块2,用于遍历所述扇区集合内的扇区,分别获取当前分区内各个FDT目录项的起始簇号和起始扇区号;
第一确定模块3,用于确定当前分区内第一个有效的FDT目录项;
第一记录模块4,用于将所述第一个有效的FDT目录项的起始簇号和起始扇区号分别记录为当前分区的根目录的起始簇号和起始扇区号;
第二确定模块5,用于确定下一有效的FDT目录项;
第一计算模块6,用于根据所述下一有效的FDT目录项的起始簇号和起始扇区号以及所述根目录的起始簇号和起始扇区号,计算当前分区的簇大小;具体用于根据公式C=(S-RS)/(L-RL)计算当前分区的簇大小;其中,C为当前分区的簇大小,S为所述下一有效的FDT目录项的起始扇区号,L为所述下一有效的FDT目录项的起始簇号,RS为所述根目录的起始扇区号,RL为所述根目录的起始簇号;
第二计算模块7,用于根据所述簇大小以及所述根目录的起始簇号和起始扇区号,计算所述根目录的偏移扇区数;具体用于根据公式P=RS-C*(RL-2)计算所述根目录的偏移扇区数;其中,P为所述根目录的偏移扇区数,RS为所述根目录的起始扇区号,RL为所述根目录的起始簇号,C为所述簇大小,2为每个分区第一个簇的簇号;
第三计算模块8,用于根据所述下一有效的FDT目录项的起始簇号、所述簇大小和所述偏移扇区数,计算所述下一有效的FDT目录项的理论起始扇区号;具体用于根据公式TS=(L-2)*C+P计算所述下一有效的FDT目录项的理论起始扇区号;其中,TS为所述下一有效的FDT目录项的理论起始扇区号,L为所述下一有效的FDT目录项的起始簇号,C为所述簇大小,2为每个分区第一个簇的簇号;
第一判断模块9,用于判断所述下一有效的FDT目录项的起始扇区号和所述理论起始扇区号是否相等,得到第一判断结果;
第三确定模块10,用于若第一判断结果为否,则确定所述当前分区中存在新的分区;
第一恢复模块11,用于对所述下一有效的FDT目录项之前的FDT目录项进行恢复处理;具体用于依次对所述下一有效的FDT目录项之前的各个FDT目录项与其起始簇号进行关联;
第二记录模块12,用于将所述下一有效的FDT目录项的起始簇号和起始扇区号分别记录为所述新的分区的根目录的起始簇号和起始扇区号;
清除模块13,用于清除计算获取的所述簇大小和所述偏移扇区数;
第一执行模块14,用于返回继续执行所述确定下一有效的FDT目录项的步骤。
还包括
第二执行模块15,用于若第一判断结果为是,则返回继续执行所述确定下一有效的FDT目录项的步骤。
还包括
第二判断模块16,用于判断所述下一有效的FDT目录项是否为卷标FDT目录项,得到第二判断结果;
第四确定模块17,用于若第二判断结果为是,则确定所述当前分区中存在新的分区;
第三判断模块18,用于判断是否还存在下一有效的FDT目录项,得到第三判断结果;
第二恢复模块19,用于若第三判断结果为否,则对所述根目录及其之后的FDT目录项进行恢复处理。
综上所述,本发明提供的通过将第一个有效的FDT目录项记录为根目录,并假设下一有效的FDT目录项属于当前分区,计算出下一有效的FDT目录项的理论起始扇区号,通过比较实际的起始扇区号和理论起始扇区号,判断下一有效的FDT目录项是否属于当前分区,根据判断结果判定下一有效的FDT目录项实际所属的分区,可在原磁盘中存在多个分区且分区被删除的情况下正确恢复出被删除的分区中的文件,提高文件数据恢复效果;通过判断下一有效的FDT目录项是否为卷标FDT目录项,可直接判断是否存在新的分区,提高恢复效率。
以上所述仅为本发明的实施例,并非因此限制本发明的专利范围,凡是利用本发明说明书及附图内容所作的等同变换,或直接或间接运用在相关的技术领域,均同理包括在本发明的专利保护范围内。

Claims (10)

1.一种基于FAT32文件系统的文件恢复方法,其特征在于,包括
获取当前分区的扇区集合;
遍历所述扇区集合内的扇区,分别获取当前分区内各个FDT目录项的起始簇号和起始扇区号;
确定当前分区内第一个有效的FDT目录项;
将所述第一个有效的FDT目录项的起始簇号和起始扇区号分别记录为当前分区的根目录的起始簇号和起始扇区号;
确定下一有效的FDT目录项;
根据所述下一有效的FDT目录项的起始簇号和起始扇区号以及所述根目录的起始簇号和起始扇区号,计算当前分区的簇大小;
根据所述簇大小以及所述根目录的起始簇号和起始扇区号,计算所述根目录的偏移扇区数;
根据所述下一有效的FDT目录项的起始簇号、所述簇大小和所述偏移扇区数,计算所述下一有效的FDT目录项的理论起始扇区号;
若所述下一有效的FDT目录项的起始扇区号和所述理论起始扇区号不相等,则确定所述当前分区中存在新的分区;
对所述下一有效的FDT目录项之前的FDT目录项进行恢复处理;
将所述下一有效的FDT目录项的起始簇号和起始扇区号分别记录为所述新的分区的根目录的起始簇号和起始扇区号;
清除计算获取的所述簇大小和所述偏移扇区数;
返回继续执行所述确定下一有效的FDT目录项的步骤。
2.根据权利要求1所述的一种基于FAT32文件系统的文件恢复方法,其特征在于,所述“对所述下一有效的FDT目录项之前的FDT目录项进行恢复处理”具体为:依次对所述下一有效的FDT目录项之前的各个FDT目录项与其起始簇号进行关联。
3.根据权利要求1所述的一种基于FAT32文件系统的文件恢复方法,其特征在于,所述“确定下一有效的FDT目录项”之后,进一步包括:
判断所述下一有效的FDT目录项是否为卷标FDT目录项;
若是,则确定所述当前分区中存在新的分区;
对所述下一有效的FDT目录项之前的FDT目录项进行恢复处理;
将所述下一有效的FDT目录项的起始簇号和起始扇区号分别记录为所述新的分区的根目录的起始簇号和起始扇区号;
清除计算获取的所述簇大小和所述偏移扇区数;
返回继续执行所述确定下一有效的FDT目录项的步骤。
4.根据权利要求1所述的一种基于FAT32文件系统的文件恢复方法,其特征在于,所述“计算所述下一有效的FDT目录项的理论起始扇区号”之后,进一步包括:
若所述下一有效的FDT目录项的起始扇区号和所述理论起始扇区号相等,则返回继续执行所述确定下一有效的FDT目录项的步骤。
5.根据权利要求1所述的一种基于FAT32文件系统的文件恢复方法,其特征在于,所述“确定下一有效的FDT目录项”之前,进一步包括:
判断是否还存在下一有效的FDT目录项;
若否,则对所述根目录及其之后的FDT目录项进行恢复处理。
6.根据权利要求1所述的一种基于FAT32文件系统的文件恢复方法,其特征在于,所述“根据所述下一有效的FDT目录项的起始簇号和起始扇区号以及所述根目录的起始簇号和起始扇区号,计算当前分区的簇大小”具体为:
根据公式C=(S-RS)/(L-RL)计算当前分区的簇大小;其中,C为当前分区的簇大小,S为所述下一有效的FDT目录项的起始扇区号,L为所述下一有效的FDT目录项的起始簇号,RS为所述根目录的起始扇区号,RL为所述根目录的起始簇号。
7.根据权利要求1所述的一种基于FAT32文件系统的文件恢复方法,其特征在于,所述“根据所述簇大小以及所述根目录的起始簇号和起始扇区号,计算所述根目录的偏移扇区数”具体为:
根据公式P=RS-C*(RL-2)计算所述根目录的偏移扇区数;其中,P为所述根目录的偏移扇区数,RS为所述根目录的起始扇区号,RL为所述根目录的起始簇号,C为所述簇大小,2为每个分区第一个簇的簇号。
8.根据权利要求1所述的一种基于FAT32文件系统的文件恢复方法,其特征在于,所述“根据所述下一有效的FDT目录项的起始簇号、所述簇大小和所述偏移扇区数,计算所述下一有效的FDT目录项的理论起始扇区号”具体为:
根据公式TS=(L-2)*C+P计算所述下一有效的FDT目录项的理论起始扇区号;其中,TS为所述下一有效的FDT目录项的理论起始扇区号,L为所述下一有效的FDT目录项的起始簇号,C为所述簇大小,2为每个分区第一个簇的簇号。
9.一种基于FAT32文件系统的文件恢复系统,其特征在于,包括
第一获取模块,用于获取当前分区的扇区集合;
第二获取模块,用于遍历所述扇区集合内的扇区,分别获取当前分区内各个FDT目录项的起始簇号和起始扇区号;
第一确定模块,用于确定当前分区内第一个有效的FDT目录项;
第一记录模块,用于将所述第一个有效的FDT目录项的起始簇号和起始扇区号分别记录为当前分区的根目录的起始簇号和起始扇区号;
第二确定模块,用于确定下一有效的FDT目录项;
第一计算模块,用于根据所述下一有效的FDT目录项的起始簇号和起始扇区号以及所述根目录的起始簇号和起始扇区号,计算当前分区的簇大小;
第二计算模块,用于根据所述簇大小以及所述根目录的起始簇号和起始扇区号,计算所述根目录的偏移扇区数;
第三计算模块,用于根据所述下一有效的FDT目录项的起始簇号、所述簇大小和所述偏移扇区数,计算所述下一有效的FDT目录项的理论起始扇区号;
第三确定模块,用于若所述下一有效的FDT目录项的起始扇区号和所述理论起始扇区号不相等,则确定所述当前分区中存在新的分区;
第一恢复模块,用于对所述下一有效的FDT目录项之前的FDT目录项进行恢复处理;
第二记录模块,用于将所述下一有效的FDT目录项的起始簇号和起始扇区号分别记录为所述新的分区的根目录的起始簇号和起始扇区号;
清除模块,用于清除计算获取的所述簇大小和所述偏移扇区数;
第一执行模块,用于返回继续执行所述确定下一有效的FDT目录项的步骤。
10.根据权利要求9所述的一种基于FAT32文件系统的文件恢复系统,其特征在于,所述第一恢复模块具体用于依次对所述下一有效的FDT目录项之前的各个FDT目录项与其起始簇号进行关联。
CN201610115295.6A 2016-03-01 2016-03-01 基于fat32文件系统的文件恢复方法及其系统 Active CN105786653B (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN201610115295.6A CN105786653B (zh) 2016-03-01 2016-03-01 基于fat32文件系统的文件恢复方法及其系统

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN201610115295.6A CN105786653B (zh) 2016-03-01 2016-03-01 基于fat32文件系统的文件恢复方法及其系统

Publications (2)

Publication Number Publication Date
CN105786653A true CN105786653A (zh) 2016-07-20
CN105786653B CN105786653B (zh) 2018-09-11

Family

ID=56386796

Family Applications (1)

Application Number Title Priority Date Filing Date
CN201610115295.6A Active CN105786653B (zh) 2016-03-01 2016-03-01 基于fat32文件系统的文件恢复方法及其系统

Country Status (1)

Country Link
CN (1) CN105786653B (zh)

Cited By (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN109471756A (zh) * 2018-11-16 2019-03-15 深圳市得微电子有限责任公司 数据恢复方法、装置及计算机可读存储介质
CN109710455A (zh) * 2018-11-22 2019-05-03 厦门市美亚柏科信息股份有限公司 基于fat32文件系统的删除文件恢复方法及系统
CN110781160A (zh) * 2019-10-15 2020-02-11 北亚企安科技(北京)有限公司 基于VMware虚拟化文件系统损坏的数据恢复方法
CN112379839A (zh) * 2020-11-13 2021-02-19 万兴科技集团股份有限公司 数据恢复方法、装置、计算机设备及存储介质

Citations (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
EP1103895A2 (en) * 1999-11-17 2001-05-30 Finaldata Inc. Disk data recovery method
CN1945571A (zh) * 2006-08-16 2007-04-11 珠海金山软件股份有限公司 Fat卷中重建目录结构和恢复数据的方法
CN102254048A (zh) * 2011-08-24 2011-11-23 深圳市万兴软件有限公司 数据恢复方法和系统
CN102360318A (zh) * 2011-09-27 2012-02-22 深圳市万兴软件有限公司 Fat文件系统中被删除文件的恢复方法及装置
CN102937924A (zh) * 2012-10-30 2013-02-20 厦门市美亚柏科信息股份有限公司 一种综合文件特征与文件系统的fat数据恢复方法
CN104331348A (zh) * 2014-11-27 2015-02-04 四川效率源信息安全技术有限责任公司 一种还原fat32目录项的起始簇号恢复文件的方法

Patent Citations (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
EP1103895A2 (en) * 1999-11-17 2001-05-30 Finaldata Inc. Disk data recovery method
CN1945571A (zh) * 2006-08-16 2007-04-11 珠海金山软件股份有限公司 Fat卷中重建目录结构和恢复数据的方法
CN102254048A (zh) * 2011-08-24 2011-11-23 深圳市万兴软件有限公司 数据恢复方法和系统
CN102360318A (zh) * 2011-09-27 2012-02-22 深圳市万兴软件有限公司 Fat文件系统中被删除文件的恢复方法及装置
CN102937924A (zh) * 2012-10-30 2013-02-20 厦门市美亚柏科信息股份有限公司 一种综合文件特征与文件系统的fat数据恢复方法
CN104331348A (zh) * 2014-11-27 2015-02-04 四川效率源信息安全技术有限责任公司 一种还原fat32目录项的起始簇号恢复文件的方法

Cited By (7)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN109471756A (zh) * 2018-11-16 2019-03-15 深圳市得微电子有限责任公司 数据恢复方法、装置及计算机可读存储介质
CN109710455A (zh) * 2018-11-22 2019-05-03 厦门市美亚柏科信息股份有限公司 基于fat32文件系统的删除文件恢复方法及系统
WO2020103493A1 (zh) 2018-11-22 2020-05-28 厦门市美亚柏科信息股份有限公司 基于fat32文件系统的删除文件恢复方法及系统
CN110781160A (zh) * 2019-10-15 2020-02-11 北亚企安科技(北京)有限公司 基于VMware虚拟化文件系统损坏的数据恢复方法
CN110781160B (zh) * 2019-10-15 2021-07-27 北亚企安科技(北京)有限公司 基于VMware虚拟化文件系统损坏的数据恢复方法
CN112379839A (zh) * 2020-11-13 2021-02-19 万兴科技集团股份有限公司 数据恢复方法、装置、计算机设备及存储介质
CN112379839B (zh) * 2020-11-13 2022-12-02 万兴科技集团股份有限公司 数据恢复方法、装置、计算机设备及存储介质

Also Published As

Publication number Publication date
CN105786653B (zh) 2018-09-11

Similar Documents

Publication Publication Date Title
US10108543B1 (en) Efficient physical garbage collection using a perfect hash vector
JP5500309B2 (ja) ストレージ装置
US10191934B2 (en) De-duplication system and method thereof
Twigg et al. Stratified b-trees and versioned dictionaries
KR101403305B1 (ko) 백업부트레코드 정보를 이용한 파티션 복구 장치 및 방법
Wang et al. Vchunkjoin: An efficient algorithm for edit similarity joins
US8099401B1 (en) Efficiently indexing and searching similar data
CN109710455B (zh) 基于fat32文件系统的删除文件恢复方法及系统
CN106021031B (zh) 一种btrfs文件系统的删除数据恢复方法和装置
CN105786653A (zh) 基于fat32文件系统的文件恢复方法及其系统
CN102289526B (zh) 一种hfs+文件系统数据恢复方法及装置
CN111045857B (zh) 数据备份和恢复的方法、电子设备和计算机可读存储介质
CN110569147B (zh) 一种基于索引的删除文件恢复方法、终端设备及存储介质
CN102937924B (zh) 一种综合文件特征与文件系统的fat数据恢复方法
KR101549220B1 (ko) 데이터베이스 관리 방법, 시스템 및 데이터베이스 트리 구조
CN111104377B (zh) 文件管理的方法、电子设备和计算机可读存储介质
Amur et al. Design of a write-optimized data store
CN111400101B (zh) 一种jfs2文件系统数据删除时的数据恢复方法及系统
CN104035822A (zh) 一种低开销的高效内存去冗余方法及系统
US9886446B1 (en) Inverted index for text searching within deduplication backup system
CN111309677B (zh) 一种分布式文件系统的文件管理方法及装置
CN108021472B (zh) ReFS文件系统的格式化恢复方法及存储介质
Gao et al. A forensic method for efficient file extraction in HDFS based on three-level mapping
KR101583283B1 (ko) Db2 데이터베이스에서 데이터를 복원하는 방법 및 장치
Dubeyko SSDFS: Towards LFS Flash-Friendly File System without GC operation

Legal Events

Date Code Title Description
C06 Publication
PB01 Publication
C10 Entry into substantive examination
SE01 Entry into force of request for substantive examination
GR01 Patent grant
GR01 Patent grant