pst文件的修复方法、设备及存储介质
技术领域
1.本发明涉及文件修复领域,尤其涉及一种pst文件的修复方法、设备及存储介质。
背景技术:
2.在日常办公和商务沟通中,经常是通过邮件进行信息沟通,邮件信息对我们而言极其重要。如果我们使用软件进行收、发邮件时,可能会因为程序崩溃、系统崩溃或者误删除操作导致我们的邮件数据被损坏,无法打开邮件而丢失许多重要的数据和信息,这对用户的工作资源造成巨大浪费,降低了用户的工作效率。
3.目前用户可以使用microsoft outlook自带的修复工具进行pst邮件文件的修复,但是官方自带的工具只能实现对误操作的邮件进行恢复,一旦文件是因软件崩溃等其他因素被损坏,该官方自带的工具就无法修复pst文件。因此,针对当前pst文件在程序崩溃、系统崩溃下的数据损坏无法修复的技术问题,需要一种新的技术来解决当前问题。
技术实现要素:
4.本发明的主要目的在于解决当前pst文件在程序崩溃、系统崩溃下的数据损坏无法修复的技术问题。
5.本发明第一方面提供了一种pst文件的修复方法,所述pst文件的修复方法包括:接收待修复的pst文件;读取所述pst文件的文件头数据,根据所述文件头数据,查询所述pst文件中的根记录数据,其中,所述根记录数据包括:brefnbt数据、brefbbt数据;解析所述brefnbt数据的数据结构,得到所述brefnbt数据对应的bid数据集;根据所述bid数据集,对所述brefbbt数据进行blcoks btree数据块校验处理,得到异常bid数据集;基于所述异常bid数据集,对所述brefbbt数据、所述brefnbt数据进行异常数据删除处理,得到更新brefbbt数据、更新brefnbt数据;基于所述更新brefbbt数据和所述更新brefnbt数据,对所述pst文件进行修复处理,生成修复后的pst文件。
6.可选的,在本发明第一方面的第一种实现方式中,所述解析所述brefnbt数据的数据结构,得到所述brefnbt数据对应的bid数据集包括:解析所述brefnbt数据的所有节点对应bid数据,组合生成bid数据集。
7.可选的,在本发明第一方面的第二种实现方式中,所述根据所述bid数据集,对所述brefbbt数据进行blcoks btree数据块校验处理,得到异常bid数据集包括:提取所述bid数据集中的目标bid数据;根据所述目标bid数据,在所述brefbbt数据进行blcoks btree数据查询处理,得到查询结果;当所述查询结果为空时,则将所述目标bid数据写入预置收集框架集中,生成异常
bid数据集;当所述查询结果不为空时,则读取所述目标bid数据对应blcoks btree数据的存储占用值;判断所述存储占用值是否小于预置占用阈值;若小于预置占用阈值,则将所述目标bid数据写入预置收集框架集中,生成异常bid数据集。
8.可选的,在本发明第一方面的第三种实现方式中,所述解析所述brefnbt数据的数据结构,得到所述brefnbt数据对应的bid数据集包括:读取所述brefnbt数据的i个顶部节点数据,其中,所述顶部节点数据包括:顶部bid数据、ni个子节点bid,i=1,2,
…
,m,ni、m为正整数;根据所述ni个子节点bid,对所述brefnbt数据中递归检索处理,得到递归bid数据集;将i个所述顶部bid数据添加至所述递归bid数据集,生成所述brefnbt数据对应的bid数据集。
9.可选的,在本发明第一方面的第四种实现方式中,所述基于所述异常bid数据集,对所述brefbbt数据、所述brefnbt数据进行异常数据删除处理,得到更新brefbbt数据、更新brefnbt数据包括:读取所述异常bid数据集的异常bid数据;将所述异常bid数据在所述brefnbt数据中对应的节点信息进行删除处理,得到更新brefnbt数据;将所述异常bid数据在所述brefbbt数据中对应的blcoks btree数据块进行删除处理,得到更新brefbbt数据。
10.可选的,在本发明第一方面的第五种实现方式中,所述基于所述更新brefbbt数据和所述更新brefnbt数据,对所述pst文件进行修复处理,生成修复后的pst文件包括:将所述更新brefbbt数据覆写进所述pst文件中每个blcoks btree数据块,将所述更新brefnbt数据覆写进所述pst文件中的节点数据树,生成覆写pst文件;修改所述覆写pst文件的头文件数据,生成修复后的pst文件。
11.可选的,在本发明第一方面的第六种实现方式中,所述将所述更新brefbbt数据覆写进所述pst文件中每个blcoks btree数据块,将所述更新brefnbt数据覆写进所述pst文件中的节点数据树,生成覆写pst文件包括:将所述更新brefbbt数据覆写进所述pst文件中每个blcoks btree数据块,并修改每个blcoks btree数据块的数据偏移量,生成第一pst文件,以及记录每个blcoks btree数据块的修改后数据偏移量;将所述更新brefnbt数据覆写进所述第一pst文件中的节点数据树,并修改节点数据树对应的数据偏移量,生成第二pst文件,以及记录所述节点数据树的修改后数据偏移量;基于所述blcoks btree数据块的修改后数据偏移量、所述节点数据树的修改后数据偏移量,对所述第二pst文件的根记录数据进行修改,生成覆写pst文件。
12.可选的,在本发明第一方面的第七种实现方式中,所述修改所述覆写pst文件的头
文件数据,生成修复后的pst文件包括:读取所述覆写pst文件的文件存储值,以及基于所述文件存储值,计算所述覆写pst文件的头部crc校验码;基于所述头部crc校验码,修改所述覆写pst文件的文件头数据,生成修复后的pst文件。
13.本发明第二方面提供了一种pst文件的修复设备,包括:存储器和至少一个处理器,所述存储器中存储有指令,所述存储器和所述至少一个处理器通过线路互连;所述至少一个处理器调用所述存储器中的所述指令,以使得所述pst文件的修复设备执行上述的pst文件的修复方法。
14.本发明的第三方面提供了一种计算机可读存储介质,所述计算机可读存储介质中存储有指令,当其在计算机上运行时,使得计算机执行上述的pst文件的修复方法。
15.在本发明实施例中,通过对因程序崩溃、系统崩溃损坏而无法打开的pst文件进行解析拆分,再删除异常数据,最后重构pst文件的操作,实现对损坏的pst文件的修复,恢复原有的邮件信息,解决了当前pst文件在程序崩溃、系统崩溃下的数据损坏无法修复的技术问题。
附图说明
16.图1为本发明实施例中pst文件的修复方法的第一个实施例示意图;图2为本发明实施例中pst文件的修复方法的103步骤的一个实施例示意图;图3为本发明实施例中pst文件的修复方法的104步骤的一个实施例示意图;图4为本发明实施例中pst文件的修复方法的105步骤的一个实施例示意图;图5为本发明实施例中pst文件的修复方法的106步骤的一个实施例示意图;图6为本发明实施例中pst文件的修复方法的1061步骤的一个实施例示意图;图7为本发明实施例中pst文件的修复方法的1062步骤的一个实施例示意图;图8为本发明实施例中pst文件的修复设备的一个实施例示意图。
具体实施方式
17.本发明实施例提供了一种pst文件的修复方法、设备及存储介质。
18.下面将参照附图更详细地描述本发明公开的实施例。虽然附图中显示了本发明公开的某些实施例,然而应当理解的是,本发明公开可以通过各种形式来实现,而且不应该被解释为限于这里阐述的实施例,相反提供这些实施例是为了更加透彻和完整地理解本公开。应当理解的是,本发明公开的附图及实施例仅用于示例性作用,并非用于限制本发明公开的保护范围。
19.在本发明公开的实施例的描述中,术语“包括”及其类似用语应当理解为开放性包含,即“包括但不限于”。术语“基于”应当理解为“至少部分地基于”。术语“一个实施例”或“该实施例”应当理解为“至少一个实施例”。术语“第一”、“第二”等等可以指代不同的或相同的对象。下文还可能包括其他明确的和隐含的定义。
20.为便于理解,下面对本发明实施例的具体流程进行描述,请参阅图1,本发明实施例中pst文件的修复方法的一个实施例包括:
101、接收待修复的pst文件;在本实施例中,接收互联网、无线传输、本地磁盘中的待修复的pst文件。
21.102、读取所述pst文件的文件头数据,根据所述文件头数据,查询所述pst文件中的根记录数据,其中,所述根记录数据包括:brefnbt数据、brefbbt数据;在本实施例中,首先解析pst文件,读取损坏的pst文件,读取到文件的十六进制数据。先解析pst文件的文件头数据,头文件数据中带有pst文件的编码格式和根记录数据,根记录数据中包含有brefnbt(bref the node btree)数据和brefbbt(bref the block btree)数据的数据结构内容,nbt包含了指向pst文件中所有可访问结点的指针,b树的高效搜索方式能够快速的定位任意结点(nodes)。
22.103、解析所述brefnbt数据的数据结构,得到所述brefnbt数据对应的bid数据集;在本实施例中,brefnbt数据的数据结构是包含有多个顶点节点的2级btree数据,顶点节点数据包含有bid数据(数据的网桥id)和子节点bid(子节点的网桥id),而数据树的底部节点只包含有bid数据(数据的网桥id)而没有子节点bid,利用bid数据可以在brefbbt数据中检索到对应数据块进行访问数据。
23.进一步的,图2为本发明实施例中pst文件的修复方法的103步骤的一个实施例,103步骤可以包括以下步骤:1031、读取所述brefnbt数据的i个顶部节点数据,其中,所述顶部节点数据包括:顶部bid数据、ni个子节点bid,i=1,2,
…
,m,ni、m为正整数;1032、根据所述ni个子节点bid,对所述brefnbt数据中递归检索处理,得到递归bid数据集;1033、将i个所述顶部bid数据添加至所述递归bid数据集,生成所述brefnbt数据对应的bid数据集。
24.在1031-1033步骤中,读取brefnbt数据的总共5个顶部节点数据,每个顶点数据都有一个顶部bid数据以及每个顶部节点可以分别有1、2、3、4、5个字节点bid,利用1、2、3、4、5个字节点bid递归读取bid数据直至底部节点数据的bid数据,将1、2、3、4、5个字节点bid递归读取到的bid数据写入至递归bid数据集,子节点可以递归的包含任意数量的子节点级别,通过这种方式可以获取全部node btree数据信息,blcoks btree也是同理可全部数据信息。
25.然后将原有的5个顶部节点数据的顶部bid数据也写入所述递归bid数据集,最终生成所述brefnbt数据对应的bid数据集。
26.进一步的,103步骤可以包括以下步骤:1034、解析所述brefnbt数据的所有节点对应bid数据,组合生成bid数据集。
27.在1034步骤中,解析brefnbt数据的所有节点,提取所有节点对应bid数据不分先后顺序一并组合得到bid数据集。
28.104、根据所述bid数据集,对所述brefbbt数据进行blcoks btree数据块校验处理,得到异常bid数据集;在本实施例中,对brefbbt数据对应的blcoks btree数据块进行依次检索,把bid数据集中的每个bid数据在blcoks btree数据块中进行检索,判断该bid数据是否有数据或者数据是否受损是否可以被检索到,将检索到异常bid数据对应的bid数据写入异常bid数
据集中。
29.进一步的,图3为本发明实施例中pst文件的修复方法的104步骤的一个实施例,104步骤可以包括以下步骤:1041、提取所述bid数据集中的目标bid数据;1042、根据所述目标bid数据,在所述brefbbt数据进行blcoks btree数据查询处理,得到查询结果;1043、当所述查询结果为空时,则将所述目标bid数据写入预置收集框架集中,生成异常bid数据集;1044、当所述查询结果不为空时,则读取所述目标bid数据对应blcoks btree数据的存储占用值;1045、判断所述存储占用值是否小于预置占用阈值;1046、若小于预置占用阈值,则将所述目标bid数据写入预置收集框架集中,生成异常bid数据集。
30.在1041-1046步骤中,提取所述bid数据集中的一个bid数据作为目标bid数据,将目标bid数据在通过brefbbt数据进行blcoks btree数据查询处理,生成查询结果。如果查询结果为空,则说明目标bid数据对应的blcoks btree数据块不存在,则需要将目标bid数据写入原有的收集框架中,得到异常bid数据集。
31.而查询结果不为空时,则读取目标bid数据检索到的blcoks btree数据块的存储值大小,分析blcoks btree数据块的存储值大小是否过小,若小于了预置占用阈值,则同样要将目标bid数据写入预置收集框架集中,生成异常bid数据集。
32.遍历提取所述bid数据集中的bid数据,将检测到异常bid数据的bid数据均写入上述的收集框架中,最终得到bid数据集对应的异常bid数据集。
33.105、基于所述异常bid数据集,对所述brefbbt数据、所述brefnbt数据进行异常数据删除处理,得到更新brefbbt数据、更新brefnbt数据;在本实施例中,异常bid数据集中包含所有检测异常的bid数据,对异常的bid数据对应的node btree中的损坏节点信息进行删除,再对blcoks btree中的异常bid数据进行删除操作,这样就只保留了正常的node btree数据、blcoks btree数据。
34.进一步的,图4为本发明实施例中pst文件的修复方法的105步骤的一个实施例,105步骤可以包括以下步骤:1051、读取所述异常bid数据集的异常bid数据;1052、将所述异常bid数据在所述brefnbt数据中对应的节点信息进行删除处理,得到更新brefnbt数据;1053、将所述异常bid数据在所述brefbbt数据中对应的blcoks btree数据块进行删除处理,得到更新brefbbt数据。
35.在1051-1053步骤中,通过解析brefnbt数据和brefbbt数据两个数据结构可以分别获取到node btree的数据信息、blcoks btree的数据信息,将异常bid数据集中异常bid数据在所述brefnbt数据进行检索node btree的数据信息对应的节点进行删除处理,得到更新brefnbt数据、将异常bid数据集中异常bid数据在所述brefbbt数据中对应的blcoks btree数据
块进行删除,得到更新brefbbt数据。
36.106、基于所述更新brefbbt数据和所述更新brefnbt数据,对所述pst文件进行修复处理,生成修复后的pst文件。
37.在本实施例中,按照pst格式规范保留原有头部信息,然后开始写入blcoks btree中每一个数据块的数据,并修改每个数据块、blcoks btree页的目标的绝对文件偏移量,再写入node btree数据,并修改每个node btree页的目标的绝对文件偏移量,最后修改头部信息,完成整个pst文件的构建和修复。
38.进一步的,图5为本发明实施例中pst文件的修复方法的106步骤的一个实施例,106步骤可以包括以下步骤:1061、将所述更新brefbbt数据覆写进所述pst文件中每个blcoks btree数据块,将所述更新brefnbt数据覆写进所述pst文件中的节点数据树,生成覆写pst文件;1062、修改所述覆写pst文件的头文件数据,生成修复后的pst文件。
39.在1061-1062步骤中,按照pst格式规范保留原有头部信息,然后开始写入blcoks btree中每一个数据块的数据,并修改每个数据块、blcoks btree页的目标的绝对文件偏移量,再写入node btree数据,并修改每个node btree页的目标的绝对文件偏移量,最后修改头部信息,完成整个pst文件的构建和修复。
40.进一步的,图6为本发明实施例中pst文件的修复方法的1061步骤的一个实施例,1061步骤可以包括以下步骤:10611、将所述更新brefbbt数据覆写进所述pst文件中每个blcoks btree数据块,并修改每个blcoks btree数据块的数据偏移量,生成第一pst文件,以及记录每个blcoks btree数据块的修改后数据偏移量;10612、将所述更新brefnbt数据覆写进所述第一pst文件中的节点数据树,并修改节点数据树对应的数据偏移量,生成第二pst文件,以及记录所述节点数据树的修改后数据偏移量;10613、基于所述blcoks btree数据块的修改后数据偏移量、所述节点数据树的修改后数据偏移量,对所述第二pst文件的根记录数据进行修改,生成覆写pst文件。
41.在10611-10612步骤中,按照pst格式规范保留原有头部信息,然后开始写入blcoks btree中每一个数据块的数据,并修改每个数据块、blcoks btree页的目标的绝对文件偏移量(ib数据),记录blcoks btree的偏移量。再写入node btree数据,并修改每个node btree页的目标的绝对文件偏移量(ib数据),记录node btree的偏移量。最后修改头部信息,即根据node btree和blcoks btree的偏移量去修改根记录中的brefnbt、brefbbt这两个数据结构信息,生成覆写pst文件。
42.进一步的,图7为本发明实施例中pst文件的修复方法的1062步骤的一个实施例,1062步骤可以包括以下步骤:10621、读取所述覆写pst文件的文件存储值,以及基于所述文件存储值,计算所述覆写pst文件的头部crc校验码;1062、基于所述头部crc校验码,修改所述覆写pst文件的文件头数据,生成修复后的pst文件。
43.重新计算当前整个文件的大小并修改文件大小数据信息,最后重新计算头部的
crc校验码并进行修改写入文件头数据,生成修复后的pst文件。
44.在本发明实施例中,通过对因程序崩溃、系统崩溃损坏而无法打开的pst文件进行解析拆分,再删除异常数据,最后重构pst文件的操作,实现对损坏的pst文件的修复,恢复原有的邮件信息,解决了当前pst文件在程序崩溃、系统崩溃下的数据损坏无法修复的技术问题。
45.图8是本发明实施例提供的一种pst文件的修复设备的结构示意图,该pst文件的修复设备800可因配置或性能不同而产生比较大的差异,可以包括一个或一个以上处理器(central processing units,cpu)810(例如,一个或一个以上处理器)和存储器820,一个或一个以上存储应用程序833或数据832的存储介质830(例如一个或一个以上海量存储设备)。其中,存储器820和存储介质830可以是短暂存储或持久存储。存储在存储介质830的程序可以包括一个或一个以上模块(图示没标出),每个模块可以包括对pst文件的修复设备800中的一系列指令操作。更进一步地,处理器810可以设置为与存储介质830通信,在pst文件的修复设备800上执行存储介质830中的一系列指令操作。
46.基于pst文件的修复设备800还可以包括一个或一个以上电源840,一个或一个以上有线或无线网络接口850,一个或一个以上输入输出接口860,和/或,一个或一个以上操作系统831,例如windows serve,mac os x,unix,linux,free bsd等等。本领域技术人员可以理解,图8示出的pst文件的修复设备结构并不构成对基于pst文件的修复设备的限定,可以包括比图示更多或更少的部件,或者组合某些部件,或者不同的部件布置。
47.本发明还提供一种计算机可读存储介质,该计算机可读存储介质可以为非易失性计算机可读存储介质,该计算机可读存储介质也可以为易失性计算机可读存储介质,所述计算机可读存储介质中存储有指令,当所述指令在计算机上运行时,使得计算机执行所述pst文件的修复方法的步骤。
48.在本公开的上下文中,机器可读介质可以是有形的介质,其可以包含或存储以供指令执行系统、装置或设备使用或与指令执行系统、装置或设备结合地使用的程序。机器可读介质可以是机器可读信号介质或机器可读储存介质。机器可读介质可以包括但不限于电子的、磁性的、光学的、电磁的、红外的、或半导体系统、装置或设备,或者上述内容的任何合适组合。机器可读存储介质的更具体示例会包括基于一个或多个线的电气连接、便携式计算机盘、硬盘、随机存取存储器(ram)、只读存储器(rom)、可擦除可编程只读存储器(eprom或快闪存储器)、光纤、便捷式紧凑盘只读存储器(cd-rom)、光学储存设备、磁储存设备、或上述内容的任何合适组合。
49.此外,虽然采用特定次序描绘了各操作,但是这应当理解为要求这样操作以所示出的特定次序或以顺序次序执行,或者要求所有图示的操作应被执行以取得期望的结果。在一定环境下,多任务和并行处理可能是有利的。同样地,虽然在上面论述中包含了若干具体实现细节,但是这些不应当被解释为对本公开的范围的限制。在单独的实施例的上下文中描述的某些特征还可以组合地实现在单个实现中。相反地,在单个实现的上下文中描述的各种特征也可以单独地或以任何合适的子组合的方式实现在多个实现中。
50.尽管已经采用特定于结构特征和/或方法逻辑动作的语言描述了本主题,但是应当理解所附权利要求书中所限定的主题未必局限于上面描述的特定特征或动作。相反,上面所描述的特定特征和动作仅仅是实现权利要求书的示例形式。