一种基于匹配树的压缩包解压方法、装置及存储介质与流程

文档序号:16999307发布日期:2019-03-02 01:38阅读:153来源:国知局
一种基于匹配树的压缩包解压方法、装置及存储介质与流程

本发明涉及数据处理技术领域,特别是一种基于匹配树的压缩包解压方法、装置及存储介质。



背景技术:

移动互联时代,手机已成为人们最为贴身和常用的工具设备,其所承载的数据也越来越丰富;其中,android手机作为市场占有率最高、且全球年出货量最大的手机,影响着整个移动互联的市场。随着android手机的大面积使用,google公司对于android的安全也做得越来越严密,安全机制逐年升级,使得对于android的取证也面临着越来越多的挑战。早在android5.0开始,root手机的难度开始逐年增大,待到目前最新的android8.0,安全机制更是进一步提升。国内手机厂商对于手机数据安全的重视程度也是逐年提升,导致无法轻易对手机直接进行root后,再对其数据进行提取,而必须进行数据的备份;包含adbbackup备份以及各个厂商提供的备份工具。

备份下来的文件,是一个压缩文件,包含了所有应用的数据,其中含有大量采集过程无需使用的冗余文件,在备份压缩文件进行解压的过程中耗费大量的时间,解压后还必须在大量的文件中,对特定需要的文件进行过滤,查找出需要使用的文件,大大降低了时效性;解压出来冗余的文件还占用大量的存储空间;遇到大数据量的手机,解压大数据量的压缩包,对于移动式设备的续航能力是一个极大的考验,而且无法保证设备运行的持续性,即能耗较高;对于所有存储容量不充裕的设备,还有移动式需求的设备,都存在类似问题,从而导致了终端设备的运行速度较慢,影响了用户体验。因此,传统的备份压缩包解压的方式已经无法满足移动式数据获取对于时效性的较高要求。

综上所述,现有技术的缺陷在于:

1.解压所有应用备份文件,包含大量冗余文件,浪费有限的存储空间。

2.原有解压机制解压整个压缩包的所有文件,存在解压耗时较长,速度缓慢的问题。

3.备份文件中包含大量大小不一的文件,解压过程频繁对磁盘进行写入操作,存在io瓶颈。

4.移动式设备电池损耗增大,长时间的解压流程与写入文件,增加设备电量损耗,影响移动设备的续航,降低其持续运行的能力。



技术实现要素:

本发明针对上述现有技术中的缺陷,提出了如下技术方案。

一种基于匹配树的压缩包解压方法,该方法包括:

匹配树构建步骤,基于解压配置文件构建匹配树;

解压步骤,读取压缩包中的文件的文件名,使用所述匹配树与所述文件名进行匹配,如果匹配成功,则对所述文件进行解压,如果匹配不成功,则对所述文件不进行解压。

更进一步地,所述解压配置文件包括多个分组,每个分组包括多条匹配条目,所述匹配条目用于匹配需要解压的文件。

更进一步地,每一匹配条目由多个匹配项组成,匹配项之间用“/”作为分割符号,每个匹配项匹配一个文件名或者目录名,所述匹配条目的多个匹配项用于连续匹配文件的完整路径,其中,文件的文件名及路径确定唯一时,所述匹配项与文件的文件名及路径相同,对于可变文件名,匹配项是以“^”开头并以“$”结束的正则表达式。

更进一步地,基于解压配置文件构建匹配树的操作为:获取解压配置文件,以解压配置文件的根节点为匹配树的根,依次读取解压配置文件的分组及对应分组下的每一个匹配条目,同一级目录的则在同一层树节点,父子目录对应的则是父子节点,以此构建匹配树。

更进一步地,获取解压配置文件的方式为自定义解压配置文件、从本地存储获取解压配置文件、或从云端服务器下载解压配置文件、或从其他相似用户获取解压配置文件。

更进一步地,解压步骤的操作为:判断当前是否已读取到压缩包结尾,如果是,则退出解压过程,如果否,则读取文件的文件名,并将文件名按照每一级目录结构进行分割,然后与匹配树进行匹配,所述匹配树顶层对应根目录,第一层对应文件名第一级,如果该目录匹配当前层级的其中一个节点,则继续匹配对应节点的子节点,否则判定为匹配不成功,则匹配过程结束,继续进行压缩包的读取,如果所述匹配树节点以^开头以$结尾,使用模式匹配匹配文件/文件夹,如果匹配不成功,则匹配过程结束,继续进行压缩包的读取,如果匹配到最后一个子节点,文件/文件夹则是需要保存的,则将当前文件解压,或者将该文件夹下的所有文件进行解压,并将该文件夹下的所有文件写入到文件系统中,然后继续进行压缩包的读取。

本发明还提出了一种基于匹配树的压缩包解压装置,该装置包括:

匹配树构建单元,用于基于解压配置文件构建匹配树;

解压单元,用于读取压缩包中的文件的文件名,使用所述匹配树与所述文件名进行匹配,如果匹配成功,则对所述文件进行解压,如果匹配不成功,则对所述文件不进行解压。

更进一步地,所述解压配置文件包括多个分组,每个分组包括多条匹配条目,所述匹配条目用于匹配需要解压的文件。

更进一步地,每一匹配条目由多个匹配项组成,匹配项之间用“/”作为分割符号,每个匹配项匹配一个文件名或者目录名,所述匹配条目的多个匹配项用于连续匹配文件的完整路径,其中,文件的文件名及路径确定唯一时,所述匹配项与文件的文件名及路径相同,对于可变文件名,匹配项是以“^”开头并以“$”结束的正则表达式。

更进一步地,基于解压配置文件构建匹配树的操作为:获取解压配置文件,以解压配置文件的根节点为匹配树的根,依次读取解压配置文件的分组及对应分组下的每一个匹配条目,同一级目录的则在同一层树节点,父子目录对应的则是父子节点,以此构建匹配树。

更进一步地,获取解压配置文件的方式为自定义解压配置文件、从本地存储获取解压配置文件、或从云端服务器下载解压配置文件、或从其他相似用户获取解压配置文件。

更进一步地,解压单元执行的操作为:判断当前是否已读取到压缩包结尾,如果是,则退出解压过程,如果否,则读取文件的文件名,并将文件名按照每一级目录结构进行分割,然后与匹配树进行匹配,所述匹配树顶层对应根目录,第一层对应文件名第一级,如果该目录匹配当前层级的其中一个节点,则继续匹配对应节点的子节点,否则判定为匹配不成功,则匹配过程结束,继续进行压缩包的读取,如果所述匹配树节点以^开头以$结尾,使用模式匹配匹配文件/文件夹,如果匹配不成功,则匹配过程结束,继续进行压缩包的读取,如果匹配到最后一个子节点,文件/文件夹则是需要保存的,则将当前文件解压,或者将该文件夹下的所有文件进行解压,并将该文件夹下的所有文件写入到文件系统中,然后继续进行压缩包的读取。

本发明还提出了一种计算机可读存储介质,所述存储介质上存储有计算机程序代码,当所述计算机程序代码被计算机执行时执行上述之任一的方法。

本发明的技术效果为:本发明首先通过解压配置文件构建匹配树,然后读取压缩包中的文件的文件名,使用所述匹配树与所述文件名进行匹配,如果匹配成功,则对所述文件进行解压,如果匹配不成功,则对所述文件不进行解压。从而实现了对需要的文件进行解压,不要的文件不进行解压,大大提高了解压速度,减少了对磁盘的访问次数,提高了磁盘的io性能,降低了终端设备的能耗,减少了对存储空间的占用,提高了终端设备的运行速度,提高了用户体验。

附图说明

通过阅读参照以下附图所作的对非限制性实施例所作的详细描述,本申请的其它特征、目的和优点将会变得更明显。

图1是根据本发明的实施例的一种基于匹配树的压缩包解压方法的流程图。

图2是根据本发明的实施例的匹配树的示意图。

图3是根据本发明的实施例的android手机的备份文件解压的整体框架的结构图。

图4是根据本发明的实施例的一种基于匹配树的压缩包解压装置的结构图。

具体实施方式

下面结合附图和实施例对本申请作进一步的详细说明。可以理解的是,此处所描述的具体实施例仅仅用于解释相关发明,而非对该发明的限定。另外还需要说明的是,为了便于描述,附图中仅示出了与有关发明相关的部分。

需要说明的是,在不冲突的情况下,本申请中的实施例及实施例中的特征可以相互组合。下面将参考附图并结合实施例来详细说明本申请。

图1示出了本发明的一种基于匹配树的压缩包解压方法,该方法包括:

匹配树构建步骤s101,基于解压配置文件构建匹配树;

解压步骤s102,读取压缩包中的文件的文件名,使用所述匹配树与所述文件名进行匹配,如果匹配成功,则对所述文件进行解压,如果匹配不成功,则对所述文件不进行解压。

本发明的方法特别适用于移动终端设备中,所述移动终端设备可以是智能手机、平板电脑、笔记本电脑、台式计算机或pda等,当然移动终端设备也可以是其他的可便携的具有数据处理功能的电子设备。

在一个实施例中,所述解压配置文件包括多个分组,每个分组包括多条匹配条目,所述匹配条目用于匹配需要解压的文件。比如分组可以是qq、微信、邮件、通信录等;匹配条目用于匹配需要解压的文件。通过这样的组织方式,就可以只解压特定的文件,比如只解压qq相关的文件时,就只需要将qq相关的文件写入到文件系统,而其他应用程序的文件则无需解压,无需写入文件系统。

在一个实施例中,每一匹配条目由多个匹配项组成,匹配项之间用“/”作为分割符号,每个匹配项匹配一个文件名或者目录名,所述匹配条目的多个匹配项用于连续匹配文件的完整路径,其中,文件的文件名及路径确定唯一时,所述匹配项与文件的文件名及路径相同,对于可变文件名,匹配项是以“^”开头并以“$”结束的正则表达式。

一个具体的例子为:如果需要解压com.tencent.mobileqq/shared_prefs/mobileqq.xml这个文件,因为文件路径是固定的并且文件名是唯一的,此时,匹配条目就等于com.tencent.mobileqq/shared_prefs/mobileqq.xml;如果将要解压的文件类似于/com.tencent.mobileqq/databases/12345678.db的非固定名称的文件(其中12345678是qq号码,该部分是可变的,对于不同手机,不同用户的qq号是不一样的),则可变部分就可以使用正则表达式“^[0-9]+.db$”实现模式匹配,此时,匹配条目为com.tencent.mobileqq/databases/^[0-9]+.db$。

匹配树的构建是本发明中的重点,这是实现快速解压的关键步骤,是实现本发明的重要发明点之一,基于解压配置文件构建匹配树的操作为:获取解压配置文件,以解压配置文件的根节点为匹配树的根,依次读取解压配置文件的分组及对应分组下的每一个匹配条目,同一级目录的则在同一层树节点,父子目录对应的则是父子节点,以此构建匹配树。图2示出一种简易的匹配树,实际匹配树中还包含了对应节点的相关属性,如当前节点是文件夹或者文件,当前节点描述的是否是数据库等等。

在一个实施例中,获取解压配置文件的方式为自定义解压配置文件、从本地存储获取解压配置文件、或从云端服务器下载解压配置文件、或从其他相似用户获取解压配置文件。其中,相似用户可以根据用户使用的终端的行为进行判断,可以根据对压缩包的文件进行分析以确定相似的用户。

在一个实施例中,解压步骤的操作为:判断当前是否已读取到压缩包结尾,如果是,则退出解压过程,如果否,则读取文件的文件名,并将文件名按照每一级目录结构进行分割,然后与匹配树进行匹配,所述匹配树顶层对应根目录,第一层对应文件名第一级,如果该目录匹配当前层级的其中一个节点,则继续匹配对应节点的子节点,否则判定为匹配不成功,则匹配过程结束,继续进行压缩包的读取,如果所述匹配树节点以^开头以$结尾,使用模式匹配匹配文件/文件夹,如果匹配不成功,则匹配过程结束,继续进行压缩包的读取,如果匹配到最后一个子节点,文件/文件夹则是需要保存的,则将当前文件解压,或者将该文件夹下的所有文件进行解压,并将该文件夹下的所有文件写入到文件系统中,然后继续进行压缩包的读取。

本发明的方法可用于为android手机的备份文件backup.tar进行快速解压,下面以备份文件backup.tar为压缩包文件,解压qq数据为例说明过滤解压过程,备份服务组件为备份文件组件提供数据备份服务。两个备份服务组件均属于android操作系统的服务,包含adb备份以及各个厂商定制的备份工具,本发明不涉及对这两个组件的修改,因此不再描述具体功能实现,android手机的备份文件解压的整体框架如图3所示。

示例的具体流程如下:

1)备份文件组件通过adb与备份服务器组件通讯,备份得到所有数据的压缩包backup.tar;

2)解压服务组件(可以图1所示方法构建的一个程序模块)读取解压配置文件(解压配置文件存储在配置文件组件中),并解析为匹配树;

3)解压服务组件读取backup.tar压缩文件,读取文件列表,得到一个文件名,文件路径为com.taobao.taobao/databases/data,一级文件名为com.taobao.taobao,不匹配com.tencent.mobileqq,不是qq的文件,则不进行解压,跳过,继续读取下一个文件名;

4)继续读取得到文件名com.tencent.mobileqq/shared_prefs/mobileqq.xml,一级目录匹配com.tencent.mobileqq,二级目录shared_prefs匹配,三级文件名匹配mobileqq.xml,文件名匹配,则对文件内容进行解压,并写入磁盘中;

5)继续读取得到文件名com.tencent.mobileqq/app_cache,一级目录匹配com.tencent.mobileqq,二级目录app_cache不匹配,不是需要保存的文件,不对其进行解压,继续读取下一个文件;

6)持续读取文件直到压缩包文件列表读取完毕,结束解压流程,过滤解压服务结束。

进一步参考图4,作为对上述图1所示方法的实现,本申请提供了一种基于匹配树的压缩包解压装置的一个实施例,该装置实施例与图1所示的方法实施例相对应,该装置具体可以包含于各种电子设备中。

图4示出了本发明的本发明的一种基于匹配树的压缩包解压装置,该装置包括:

匹配树构建单元401,用于基于解压配置文件构建匹配树;

解压单元402,用于读取压缩包中的文件的文件名,使用所述匹配树与所述文件名进行匹配,如果匹配成功,则对所述文件进行解压,如果匹配不成功,则对所述文件不进行解压。

本发明的装置特别适用于集成在移动终端设备中,所述移动终端设备可以是智能手机、平板电脑、笔记本电脑、台式计算机或pda等,当然移动终端设备也可以是其他的可便携的具有数据处理功能的电子设备。

在一个实施例中,所述解压配置文件包括多个分组,每个分组包括多条匹配条目,所述匹配条目用于匹配需要解压的文件。比如分组可以是qq、微信、邮件、通信录等;匹配条目用于匹配需要解压的文件。通过这样的组织方式,就可以只解压特定的文件,比如只解压qq相关的文件时,就只需要将qq相关的文件写入到文件系统,而其他应用程序的文件则无需解压,无需写入文件系统。

在一个实施例中,每一匹配条目由多个匹配项组成,匹配项之间用“/”作为分割符号,每个匹配项匹配一个文件名或者目录名,所述匹配条目的多个匹配项用于连续匹配文件的完整路径,其中,文件的文件名及路径确定唯一时,所述匹配项与文件的文件名及路径相同,对于可变文件名,匹配项是以“^”开头并以“$”结束的正则表达式。

一个具体的例子为:如果需要解压com.tencent.mobileqq/shared_prefs/mobileqq.xml这个文件,因为文件路径是固定的并且文件名是唯一的,此时,匹配条目就等于com.tencent.mobileqq/shared_prefs/mobileqq.xml;如果将要解压的文件类似于/com.tencent.mobileqq/databases/12345678.db的非固定名称的文件(其中12345678是qq号码,该部分是可变的,对于不同手机,不同用户的qq号是不一样的),则可变部分就可以使用正则表达式“^[0-9]+.db$”实现模式匹配,此时,匹配条目为com.tencent.mobileqq/databases/^[0-9]+.db$。

匹配树的构建是本发明中的重点,这是实现快速解压的关键步骤,是实现本发明的重要发明点之一,基于解压配置文件构建匹配树的操作为:获取解压配置文件,以解压配置文件的根节点为匹配树的根,依次读取解压配置文件的分组及对应分组下的每一个匹配条目,同一级目录的则在同一层树节点,父子目录对应的则是父子节点,以此构建匹配树。图2示出一种简易的匹配树,实际匹配树中还包含了对应节点的相关属性,如当前节点是文件夹或者文件,当前节点描述的是否是数据库等等。

在一个实施例中,获取解压配置文件的方式为自定义解压配置文件、从本地存储获取解压配置文件、或从云端服务器下载解压配置文件、或从其他相似用户获取解压配置文件。其中,相似用户可以根据用户使用的终端的行为进行判断,可以根据对压缩包的文件进行分析以确定相似的用户。

在一个实施例中,解压单元执行的操作为:判断当前是否已读取到压缩包结尾,如果是,则退出解压过程,如果否,则读取文件的文件名,并将文件名按照每一级目录结构进行分割,然后与匹配树进行匹配,所述匹配树顶层对应根目录,第一层对应文件名第一级,如果该目录匹配当前层级的其中一个节点,则继续匹配对应节点的子节点,否则判定为匹配不成功,则匹配过程结束,继续进行压缩包的读取,如果所述匹配树节点以^开头以$结尾,使用模式匹配匹配文件/文件夹,如果匹配不成功,则匹配过程结束,继续进行压缩包的读取,如果匹配到最后一个子节点,文件/文件夹则是需要保存的,则将当前文件解压,或者将该文件夹下的所有文件进行解压,并将该文件夹下的所有文件写入到文件系统中,然后继续进行压缩包的读取。

本发明的装置可集成在电子设备中用于为android手机的备份文件backup.tar进行快速解压,下面以备份文件backup.tar为压缩包文件,解压qq数据为例说明过滤解压过程,备份服务组件为备份文件组件提供数据备份服务。两个备份服务组件均属于android操作系统的服务,包含adb备份以及各个厂商定制的备份工具,本发明不涉及对这两个组件的修改,因此不再描述具体功能实现,android手机的备份文件解压的整体框架如图3所示。

示例的具体流程如下:

1)备份文件组件通过adb与备份服务器组件通讯,备份得到所有数据的压缩包backup.tar;

2)解压服务组件(可以是图4所示的解压装置)读取解压配置文件(解压配置文件存储在配置文件组件中),并解析为匹配树;

3)解压服务组件读取backup.tar压缩文件,读取文件列表,得到一个文件名,文件路径为com.taobao.taobao/databases/data,一级文件名为com.taobao.taobao,不匹配com.tencent.mobileqq,不是qq的文件,则不进行解压,跳过,继续读取下一个文件名;

4)继续读取得到文件名com.tencent.mobileqq/shared_prefs/mobileqq.xml,一级目录匹配com.tencent.mobileqq,二级目录shared_prefs匹配,三级文件名匹配mobileqq.xml,文件名匹配,则对文件内容进行解压,并写入磁盘中;

5)继续读取得到文件名com.tencent.mobileqq/app_cache,一级目录匹配com.tencent.mobileqq,二级目录app_cache不匹配,不是需要保存的文件,不对其进行解压,继续读取下一个文件;

6)持续读取文件直到压缩包文件列表读取完毕,结束解压流程,过滤解压服务结束。

本发明的技术效果为:本发明首先通过解压配置文件构建匹配树,然后读取压缩包中的文件的文件名,使用所述匹配树与所述文件名进行匹配,如果匹配成功,则对所述文件进行解压,如果匹配不成功,则对所述文件不进行解压。从而实现了对需要的文件进行解压,不要的文件不进行解压,大大提高了解压速度,减少了对磁盘的访问次数,提高了磁盘的io性能,降低了终端设备的能耗,减少了对存储空间的占用,提高了终端设备的运行速度,提高了用户体验。

为了描述的方便,描述以上装置时以功能分为各种单元分别描述。当然,在实施本申请时可以把各单元的功能在同一个或多个软件和/或硬件中实现。

通过以上的实施方式的描述可知,本领域的技术人员可以清楚地了解到本申请可借助软件加必需的通用硬件平台的方式来实现。基于这样的理解,本申请的技术方案本质上或者说对现有技术做出贡献的部分可以以软件产品的形式体现出来,该计算机软件产品可以存储在存储介质中,如rom/ram、磁碟、光盘等,包括若干指令用以使得一台计算机设备(可以是个人计算机,服务器,或者网络设备等)执行本申请各个实施例或者实施例的某些部分所述的方法。

最后所应说明的是:以上实施例仅以说明而非限制本发明的技术方案,尽管参照上述实施例对本发明进行了详细说明,本领域的普通技术人员应当理解:依然可以对本发明进行修改或者等同替换,而不脱离本发明的精神和范围的任何修改或局部替换,其均应涵盖在本发明的权利要求范围当中。

当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1