CN117112004A - 差分数据确定方法、差分还原方法、装置、设备及介质 - Google Patents

差分数据确定方法、差分还原方法、装置、设备及介质 Download PDF

Info

Publication number
CN117112004A
CN117112004A CN202311074562.6A CN202311074562A CN117112004A CN 117112004 A CN117112004 A CN 117112004A CN 202311074562 A CN202311074562 A CN 202311074562A CN 117112004 A CN117112004 A CN 117112004A
Authority
CN
China
Prior art keywords
file
differential
packet
data packet
compression
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.)
Pending
Application number
CN202311074562.6A
Other languages
English (en)
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.)
Chengdu Kafrog Technology Co ltd
Original Assignee
Chengdu Kafrog Technology 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 Chengdu Kafrog Technology Co ltd filed Critical Chengdu Kafrog Technology Co ltd
Priority to CN202311074562.6A priority Critical patent/CN117112004A/zh
Publication of CN117112004A publication Critical patent/CN117112004A/zh
Pending legal-status Critical Current

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F8/00Arrangements for software engineering
    • G06F8/60Software deployment
    • G06F8/65Updates
    • G06F8/658Incremental updates; Differential updates
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F8/00Arrangements for software engineering
    • G06F8/70Software maintenance or management
    • G06F8/71Version control; Configuration management

Abstract

本发明公开了一种差分数据确定方法、差分还原方法、装置、设备及介质。该差分数据确定方法包括:对目标压缩包和待升级压缩包的核心区进行差分处理,得到核心区差分数据包,并利用所述核心区的中央目录记录区,确定第一文件集合表和第二文件集合表;利用所述第一文件集合表和所述第二文件集合表,确定差异文件;利用所述差异文件和核心区差分数据包,确定差分数据包。本发明实施例的技术方案,利用差异文件确定了占用空间较少的差分数据包,差分友好的处理了包含非差分友好数据的压缩包,保证了差分还原时可以利用差分数据包中的核心区差分数据包,准确的还原出目标压缩包的文件头数据。

Description

差分数据确定方法、差分还原方法、装置、设备及介质
技术领域
本发明涉及计算机领域,尤其涉及一种差分数据确定方法、差分还原方法、装置、设备及介质。
背景技术
目前,升级软件通常采用差分升级的方式。差分升级可以理解为,设备端将当前运行的软件版本主动上报给云端服务器,云端服务器收到上报之后,判定是否有新的软件版本,若存在更新的软件版本,则将新版本的软件与设备端当前运行的软件版本进行差分计算,得到新旧版本的差分数据,并下发给设备端,设备端收到差分数据结合当前运行的软件,完成旧版本到新软件版本的升级。使用差分升级的优点在于下载数据量小,对网络流量需求小,对设备存储空间也更小。
然而,在差分升级的过程中,需要保证参与差分的新旧软件版本中的数据不能是不合适进行差分的非差分友好数据(非差分友好数据可以理解为,由于二次编码导致的数据编码完全改变,无法与原始数据进行相似性对比的数据)。文件中二次编码后的数据变得与原始编码无任何相似度,导致即便新软件版本与旧软件版本仅仅只修改了少部分数据,却在二次编码后出现大量的不同,从而导致无法通过对比新旧软件,来获得准确的新旧软件差分数据。
发明内容
本发明提供了一种差分数据确定方法、差分还原方法、装置、设备及介质,以解决对非差分友好数据的差分还原效果不佳的问题。
第一方面,本发明提供了一种差分数据确定方法,包括:
对目标压缩包和待升级压缩包的核心区进行差分处理,得到核心区差分数据包,并利用所述核心区的中央目录记录区,确定第一文件集合表和第二文件集合表,其中,所述核心区至少包括所述中央目录记录区,所述第一文件集合表中包含所述目标压缩包的中央目录记录区中记载的文件名,所述第二文件集合表中包含所述待升级压缩包的中央目录记录区中记载的文件名;
利用所述第一文件集合表和所述第二文件集合表,确定差异文件;
利用所述差异文件和核心区差分数据包,确定差分数据包。
第二方面,本发明提供了一种差分还原方法,包括:
获取差分数据包,并利用所述差分数据包和待升级压缩包,差分还原目标压缩包的核心区,得到还原核心区,其中,所述差分数据包通过如上述第一方面所述的差分数据确定方法得到;
利用所述还原核心区中的中央目录记录区,还原所述目标压缩包的文件头,得到还原文件头;
利用所述差分数据包还原所述目标压缩包的file data数据,得到还原file data数据。
第三方面,本发明提供了一种差分数据确定装置,包括:
文件集合表确定模块,用于对目标压缩包和待升级压缩包的核心区进行差分处理,得到核心区差分数据包,并利用所述核心区的中央目录记录区,确定第一文件集合表和第二文件集合表,其中,所述核心区至少包括所述中央目录记录区,所述第一文件集合表中包含所述目标压缩包的中央目录记录区中记载的文件名,所述第二文件集合表中包含所述待升级压缩包的中央目录记录区中记载的文件名;
差异文件确定模块,用于利用所述第一文件集合表和所述第二文件集合表,确定差异文件;
差分数据确定模块,用于利用所述差异文件和核心区差分数据包,确定差分数据包。
第四方面,本发明提供了一种差分还原装置,包括:
核心区还原模块,用于获取差分数据包,并利用所述差分数据包和待升级压缩包,差分还原目标压缩包的核心区,得到还原核心区,其中,所述差分数据包通过如权利要求1-6任一所述的差分数据确定方法得到;
文件头还原模块,用于利用所述还原核心区中的中央目录记录区,还原所述目标压缩包的文件头,得到还原文件头;
还原模块,用于利用所述差分数据包还原所述目标压缩包的file data数据,得到还原file data数据。
第五方面,本发明提供了一种电子设备,该电子设备包括:
至少一个处理器;
以及与至少一个处理器通信连接的存储器;
其中,存储器存储有可被至少一个处理器执行的计算机程序,该计算机程序被至少一个处理器执行,以使至少一个处理器能够执行上述第一方面的差分数据确定方法,和/或,执行上述第二方面的差分还原方法。
第六方面,本发明提供了一种计算机可读存储介质,该计算机可读存储介质存储有计算机指令,计算机指令用于使处理器执行时实现上述第一方面的差分数据确定方法,和/或,实现上述第二方面的差分还原方法。
本发明提供的差分数据确定方案,对目标压缩包和待升级压缩包的核心区进行差分处理,得到核心区差分数据包,并利用所述核心区的中央目录记录区,确定第一文件集合表和第二文件集合表,其中,所述核心区至少包括所述中央目录记录区,所述第一文件集合表中包含所述目标压缩包的中央目录记录区中记载的文件名,所述第二文件集合表中包含所述待升级压缩包的中央目录记录区中记载的文件名,利用所述第一文件集合表和所述第二文件集合表,确定差异文件,利用所述差异文件和核心区差分数据包,确定差分数据包。通过采用上述技术方案,利用核心区差分数据包以及差异文件,可以确定出目标压缩包和待升级压缩包的差分数据包,与传统的直接对数据包进行差分计算的方式相比,本方法通过确定差异文件,得到了精简且精准的差分数据包,其确定的差分数据包占用空间更少,并通过对目标压缩包和待升级压缩包的核心区进行差分处理,保证了差分还原时可以利用差分数据包中的核心区差分数据包,准确的还原出目标压缩包的文件头数据,差分友好的处理了包含非差分友好数据的压缩包。
本发明提供的差分数据确定方案,获取差分数据包,并利用所述差分数据包和待升级压缩包,差分还原目标压缩包的核心区,得到还原核心区,其中,所述差分数据包通过上文所述的差分数据确定方法得到,利用所述还原核心区中的中央目录记录区,还原所述目标压缩包的文件头,得到还原文件头,利用所述差分数据包还原所述目标压缩包的filedata数据,得到还原file data数据。通过采用上述技术方案,利用差分数据包和待升级压缩包,可以还原目标压缩包的核心区,然后利用该核心区和差分数据包,可以使还原后生成的file data数据和file head(文件头)数据,与参与差分计算的目标压缩包中的数据完全一致,解决了因存在非差分友好数据,而导致的差分还原效果不佳的问题。
应当理解,本部分所描述的内容并非旨在标识本发明的关键或重要特征,也不用于限制本发明的范围。本发明的其它特征将通过以下的说明书而变得容易理解。
附图说明
为了更清楚地说明本发明实施例中的技术方案,下面将对实施例描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。
图1是根据本发明实施例一提供的一种差分数据确定方法的流程图;
图2是根据本发明实施例一提供的一种Zip压缩包的数据结构示意图;
图3是根据本发明实施例一提供的一种Apk压缩包的数据结构示意图;
图4是根据本发明实施例一提供的一种ApkSigningBlock数据结构示意图;
图5是根据本发明实施例二提供的一种差分数据确定方法的流程图;
图6是根据本发明实施例二提供的一种差分处理原理示意图;
图7是根据本发明实施例三提供的另一种差分数据确定方法的流程图;
图8是根据本发明实施例四提供的一种差分还原方法的流程图;
图9是根据本发明实施例五提供的一种差分数据确定装置的结构示意图;
图10是根据本发明实施例六提供的一种差分还原装置的结构示意图;
图11是根据本发明实施例七提供的一种电子设备的结构示意图。
具体实施方式
为了使本技术领域的人员更好地理解本发明方案,下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本发明一部分的实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都应当属于本发明保护的范围。
需要说明的是,本发明的说明书和权利要求书及上述附图中的术语“第一”、“第二”等是用于区别类似的对象,而不必用于描述特定的顺序或先后次序。应该理解这样使用的数据在适当情况下可以互换,以便这里描述的本发明的实施例能够以除了在这里图示或描述的那些以外的顺序实施。在本发明的描述中,除非另有说明,“多个”是指两个或两个以上。“和/或”,描述关联对象的关联关系,表示可以存在三种关系,例如,A和/或B,可以表示:单独存在A,同时存在A和B,单独存在B这三种情况。字符“/”一般表示前后关联对象是一种“或”的关系。此外,术语“包括”和“具有”以及他们的任何变形,意图在于覆盖不排他的包含,例如,包含了一系列步骤或单元的过程、方法、系统、产品或设备不必限于清楚地列出的那些步骤或单元,而是可包括没有清楚地列出的或对于这些过程、方法、产品或设备固有的其它步骤或单元。
对于常规的软件升级来说,可以在云端先解压,然后进行差分运算得到差异性数据,然后在设备端也按需求进行先解压,再进行差异性数据还原,还原之后再重新压缩文件包。这样做的代价是,在设备端和云端都需要提供额外的存储空间用于缓存解压的中间文件,或者提供额外的内存将数据解压到内存中,并且由于压缩时间与修改时间等问题,可能导致最终生成的压缩文件与原始的压缩文件存在轻微差异。对于Apk(AndroidApplication Package,安卓应用程序包)来说,由于在Apk V2.0之后的签名方式,会在压缩文件中写入签名数据,这导致Apk不能使用普通的方式进行解压,否则将破坏Apk压缩文件中的签名信息,并且重新压缩带来的差异也无法通过数据签名验证。
目前,在对压缩文件(如待升级软件的安装包)进行差分还原的时候,主要有两种方案:1、对解压之后的普通文件做差分还原,2、接受差分效果不理想的现实,直接对压缩文件进行粗略的差分。
上述两种现有方式存在以下优缺点:
1)对解压之后的普通文件做差分还原:
原理:在差分前需要花费时间与空间,将源数据压缩包与目标数据压缩包,分别解压成源数据文件和目标数据文件,以便于差分还原。并且在还原时需要将源数据压缩包解压成源数据文件(与差分计算时对应),才能结合差分数据生成目标数据文件。最后,将生成的目标数据文件压缩成目标数据包。
缺点:浪费时间与空间,还原出的目标数据压缩包与差分时的目标数据压缩包存在压缩信息的差异,无法对Android Apk V2签名以上的应用进行还原。
2)对压缩文件直接进行粗略的差分:
原理:直接使用BSDIFF等字符串差分计算的算法,针对源数据压缩包与目标数据压缩包进行差分计算。
缺点:由于是直接对压缩编码后的数据进行差分,故源数据与目标数据不具有差分友好性,无法得到较小的差分包,并且在差分计算过程中,分析量较大,分析耗时也更长。
实施例一
图1为本发明实施例一提供了一种差分数据确定方法的流程图,本实施例可适用于确定,deflate等压缩算法压缩后生成的待升级压缩文件与目标压缩包之间的差分数据的情况,该方法可以由差分数据确定装置来执行,该差分数据确定装置可以采用硬件和/或软件的形式实现,该差分数据确定装置可配置于电子设备中,该电子设备可以是两个或多个物理实体构成,也可以是一个物理实体构成。
如图1所示,该本发明实施例一提供的一种差分数据确定方法,具体包括如下步骤:
S101、对目标压缩包和待升级压缩包的核心区进行差分处理,得到核心区差分数据包,并利用所述核心区的中央目录记录区,确定第一文件集合表和第二文件集合表。
其中,所述核心区至少包括所述中央目录记录区,所述第一文件集合表中包含所述目标压缩包的中央目录记录区中记载的文件名,所述第二文件集合表中包含所述待升级压缩包的中央目录记录区中记载的文件名。
在本实施例中,目标压缩包可以理解为与待升级压缩包不同的压缩包,待升级压缩包可以为Zip压缩包和Apk压缩包等。图2为一种Zip压缩包的数据结构示意图,如图2所示,Zip压缩包的格式主要由三大部分组成:1)数据区:存储被压缩的文件数据,Zip包中每个文件都拥有自己唯一的数据区,每个数据区分为压缩信息头file head和压缩数据filedata两部分,2)中央目录记录区(也叫核心目录记录):存储了被压缩文件的相关信息,如文件名、压缩前后的大小、压缩方式等(注:中央目录记录区类似于一个归档列表,将数据区的文件信息进行统一记录),3)中央目录记录尾部区:用于标记中央目录记录区的结束位置。假设存在包含N个文件的Zip压缩包,其中包含的内容可以如下述表1file head目录表、表2中央目录记录区目录表和表3中央目录记录尾部区目录表所示:
表1file head目录表
Offset Bytes Description
0 4 文件头标识:0x04034b50
4 2 解压文件所需版本
6 2 通用位标记
8 2 压缩方式
10 2 文件最后修改时间
12 2 文件最后修改日期
14 4 CRC-32校验码
18 4 压缩后的大小
22 4 未压缩的大小
26 2 文件名长度
28 2 扩展区长度
30 n 文件名
30+n m 扩展区
表2中央目录记录区目录表
表3中央目录记录尾部区目录表
Offset Bytes Description
0 4 中央目录结束标记:0x06054b50
4 2 当前磁盘编号
6 2 中央目录开始位置的磁盘编号
8 2 该磁盘上所记录的中央目录数量
10 2 中央目录结构总数
12 4 中央目录的大小
16 4 中央目录开始位置相对位移
20 2 注释长度
22 n 注释内容
图3为一种Apk压缩包的数据结构示意图。如图3所示,Apk压缩包的格式与Zip压缩包的格式几乎一致,只是在Zip格式的基础上增加了ApkSigningBlock(APK签名分块)部分,其用于校验Apk的完整性。
具体的,在Zip和Apk压缩包中的主要数据均在file data中,并且使用了deflate算法的Zip和Apk压缩包的file data仅可能存在:仅存储(文件原始编码)和deflate编码压缩两种情况。当目标压缩包和待升级压缩包的file data完全一致时,可能会因为压缩等级、文件时间属性(最后修改时间)、压缩描述信息以及文件压缩顺序等等原因,导致filehead不同,从而导致多遍差分还原,也无法完全还原目标压缩包中的信息,但file head中的信息在对应的中央目录区都有完整的记录,在还原时可优先还原中央目录所在的核心区,即可还原所有的file head。故对于Apk压缩包来说,可以至少将ApkSigningBlock、中央目录记录区和中央目录记录尾部区这三部分记作核心区,对于Zip压缩包来说,可以至少将中央目录记录区和中央目录记录尾部区记作核心区。根据上文可以知道,在Zip和Apk压缩包的尾部是中央目录记录尾部区,以此可以确定整个中央目录记录区,而中央目录记录区中记录着压缩文件信息以及文件压缩之后具体的存储位置。图4为一种ApkSigningBlock数据结构示意图。如图4所示,若在中央目录记录区前的16字节数据为ApkSigningBlock的特征码“APK Sig Block 42”,则表示需根据Apk签名分块的大小,向前获取完整的ApkSigningBlock数据,从而可以确定整个核心区的数据。然后,再对目标压缩包和待升级压缩包的核心区进行差分处理,得到核心区差分数据包,若目标压缩包和待升级压缩包的核心区的数据完全一致,则表明目标压缩包和待升级压缩包是完全一致的,可直接退出。可对核心区的中央目录记录区中的文件名进行整合,得到目标压缩包的第一文件集合表和待升级压缩包的第二文件集合表。
S102、利用所述第一文件集合表和所述第二文件集合表,确定差异文件。
在本实施例中,通过比对第一文件集合表和第二文件集合表,可以确定目标压缩包中的差异文件,该差异文件可以理解为与待升级压缩包中的文件存在差异的文件。如,可以将仅存在于第一文件集合表的文件名对应的文件,确定为差异文件。
S103、利用所述差异文件和核心区差分数据包,确定差分数据包。
在本实施例中,可以对差异文件进行预设处理,如压缩等,然后对预设处理后的数据和核心区差分数据包进行打包,得到差分数据包。
本发明实施例提供的差分数据确定方法,对目标压缩包和待升级压缩包的核心区进行差分处理,得到核心区差分数据包,并利用所述核心区的中央目录记录区,确定第一文件集合表和第二文件集合表,其中,所述核心区至少包括所述中央目录记录区,所述第一文件集合表中包含所述目标压缩包的中央目录记录区中记载的文件名,所述第二文件集合表中包含所述待升级压缩包的中央目录记录区中记载的文件名,利用所述第一文件集合表和所述第二文件集合表,确定差异文件,利用所述差异文件和核心区差分数据包,确定差分数据包。本发明实施例技术方案,利用核心区差分数据包以及差异文件,可以确定出目标压缩包和待升级压缩包的差分数据包,与传统的直接对数据包进行差分计算的方式相比,本方法通过确定差异文件,得到了精简且精准的差分数据包,其确定的差分数据包占用空间更少,并通过对目标压缩包和待升级压缩包的核心区进行差分处理,保证了差分还原时可以利用差分数据包中的核心区差分数据包,准确的还原出目标压缩包的文件头数据,差分友好的处理包含非差分友好数据的压缩包。
可选的,所述利用所述第一文件集合表和所述第二文件集合表,确定差异文件,包括:比对所述第一文件集合表和所述第二文件集合表,将仅存在于所述第一文件集合表的文件名对应的文件,确定为新增文件;和/或,将同时存在于所述第一文件集合表和所述第二文件集合表的文件名对应的文件,确定为变更文件;其中,所述变更文件和所述新增文件均属于所述差异文件。这样设置的好处在于,通过比对第一文件集合表和第二文件集合表,从目标压缩包包含的多个文件中,准确的筛选出与待升级压缩包中的文件可能存在差异的文件。
具体的,对于待升级压缩包来说,仅存在于第一文件集合表的文件名对应的文件是新增文件,故可以将该文件确定为差异文件中的新增文件,同时可以将存在于第一文件集合表和第二文件集合表的文件名对应的文件,确定为变更文件,该文件的文件名虽然在待升级压缩包和目标压缩包中一致,但文件中的内容可能发生的了变化。其中,若存在仅存在于第二文件集合表的文件名对应的文件,则代表该文件是对目标压缩包的无效参考,该文件不属于差异文件。
实施例二
图5为本发明实施例二提供的一种差分数据确定方法的流程图,本发明实施例的技术方案在上述各可选技术方案的基础上进一步优化,给出了确定差分数据的具体方式。
可选的,所述利用所述差异文件和核心区差分数据包,确定差分数据包,包括:若所述差异文件中包含所述新增文件,则根据所述目标压缩包的中央目录记录区,确定所述新增文件是否被第一预设压缩算法压缩过;若否,则根据第一目标数据包和所述核心区差分数据包,确定差分数据包,其中,所述第一目标数据包至少包含所述新增文件在所述目标压缩包的文件头数据中的文件名、所述新增文件以及第一预设操作类型,所述第一预设操作类型用于在对待升级软件进行差分还原升级时,指示将所述新增文件写入所述待升级软件的预设位置。这样设置的好处在于,通过打包未被第一预设压缩算法压缩过的新增文件,在所述目标压缩包的文件头数据中的文件名、新增文件、第一预设操作类型以及核心区差分数据包,不仅快速的生成了差分数据包,还占用了较小内存空间,并且在对应的还原过程中拥有更好的效率。
可选的,在所述确定所述新增文件是否被第一预设压缩算法压缩过之后,还包括:若是,则对所述新增文件进行解压,得到解压文件,并利用第二预设压缩算法对所述解压文件进行压缩,得到压缩文件,其中,所述第二预设压缩算法不同于所述第一预设压缩算法;判断所述压缩文件是否小于所述解压文件;若大于,则根据第二目标数据包和所述核心区差分数据包,确定差分数据包,其中,所述第二目标数据包至少包含所述新增文件在所述目标压缩包的文件头数据中的文件名、所述解压文件以及所述第一预设操作类型;若小于或等于,则根据第三目标数据包和所述核心区差分数据包,确定差分数据包,其中,所述第三目标数据包至少包含所述新增文件在所述目标压缩包的文件头数据中的文件名、所述压缩文件以及第二预设操作类型,所述第二预设操作类型用于在对待升级软件进行差分还原升级时,指示利用所述压缩文件解压后得到的数据,还原所述目标压缩包中的新增文件。这样设置的好处在于,通过对压缩过的新增文件的解压后再高度压缩,在保证不丢失压缩信息的基础上,进一步保证了差分数据包的精简性,使差分包数据在网络传输上拥有更好的效率。
如图5所示,本发明实施例二提供的一种差分数据确定方法,具体包括如下步骤:
S201、对目标压缩包和待升级压缩包的核心区进行差分处理,得到核心区差分数据包,并利用核心区的中央目录记录区,确定第一文件集合表和第二文件集合表。
S202、比对第一文件集合表和第二文件集合表,将仅存在于第一文件集合表的文件名对应的文件,确定为新增文件。
S203、根据目标压缩包的中央目录记录区,确定新增文件是否被第一预设压缩算法压缩过,若否,则执行步骤204,若是,则执行步骤205。
示例性的,若第一预设压缩算法为deflate压缩算法,当差异文件中仅含有新增文件时,可以先确定当前新增文件是否被deflate压缩算法压缩过。其中,deflate压缩算法压缩过的Zip和Apk压缩包中的文件包含两种存在方式,一种是仅存储,另一种是deflate压缩。其原因是在压缩过程中,若压缩结果大于原始数据,则会直接将文件以仅存储的方式打包。
S204、根据第一目标数据包和核心区差分数据包,确定差分数据包。
其中,所述第一目标数据包至少包含所述新增文件在所述目标压缩包的文件头数据中的文件名、所述新增文件以及第一预设操作类型,所述第一预设操作类型用于在对待升级软件进行差分还原升级时,指示将所述新增文件写入所述待升级软件的预设位置。
具体的,若当前新增文件未被deflate压缩算法压缩过,则可以直接收录该新增文件,即对当前新增文件在目标压缩包的file head(文件头)数据中的文件名、当前新增文件、第一预设操作类型以及核心区差分数据包进行打包,得到差分数据包。其中,第一预设操作类型可以记作新增,其可以在对待升级软件进行差分还原升级时,指示将该新增文件写入待升级软件的指定位置,该指定位置与目标压缩包中该新增文件的位置对应。
S205、对新增文件进行解压,得到解压文件,并利用第二预设压缩算法对解压文件进行压缩,得到压缩文件。
其中,所述第二预设压缩算法不同于所述第一预设压缩算法。
具体的,若当前新增文件被deflate压缩算法压缩过,则可以先对当前新增文件解压,得到解压文件,再利于第二预设压缩算法对解压文件进行压缩,得到压缩文件。其中,第二预设压缩算法可以为LZMA(Lempel-Ziv-Markov chain-Algorithm)等多种压缩算法进行压缩后,比较压缩效果后确定的最佳压缩算法。
S206、判断压缩文件是否小于或等于解压文件,若否,则执行步骤207,若是,则执行步骤208。
具体的,可以预先设置阈值,如10千字节,当压缩文件与解压文件的大小的差值大于设置阈值时,则可确定压缩文件大于解压文件,当压缩文件与解压文件的大小的差值小于或等于设置阈值时,则可确定压缩文件小于或等于解压文件。
S207、根据第二目标数据包和核心区差分数据包,确定差分数据包。
其中,第二目标数据包至少包含新增文件在目标压缩包的文件头数据中的文件名、解压文件以及第一预设操作类型。
具体的,若压缩后的压缩文件大于压缩前的解压文件,则可对当前新增文件在目标压缩包的文件头数据中的文件名、解压文件、第一预设操作类型以及核心区差分数据包进行打包,得到差分数据包。
S208、根据第三目标数据包和核心区差分数据包,确定差分数据包。
其中,所述第三目标数据包至少包含所述新增文件在所述目标压缩包的文件头数据中的文件名、所述压缩文件以及第二预设操作类型,所述第二预设操作类型用于在对待升级软件进行差分还原升级时,指示利用所述压缩文件解压后得到的数据,还原所述目标压缩包中的新增文件。
具体的,若压缩后的压缩文件小于或等于压缩前的解压文件,则可对当前新增文件在目标压缩包的文件头数据中的文件名、压缩文件、第二预设操作类型以及核心区差分数据包进行打包,得到差分数据包。其中,第二预设操作类型可以记作压缩增加。
本发明实施例提供的差分数据确定方法,当目标压缩包中包含新增文件时,通过打包未被第一预设压缩算法压缩过的新增文件在所述目标压缩包的文件头数据中的文件名、新增文件、第一预设操作类型以及核心区差分数据包,不仅快速的生成了差分数据包,还占用了较小内存空间的基础上,再通过对压缩过的新增文件的解压后在高度压缩,在保证不丢失压缩信息的基础上,进一步保证了差分数据包的精简性。
可选的,所述利用所述差异文件和核心区差分数据包,确定差分数据包,包括:若所述差异文件中包含所述变更文件,则利用预设摘要算法确定所述目标压缩包中的变更文件的内容和所述待升级压缩包中的变更文件的内容是否相同;若相同,则根据第四目标数据包和所述核心区差分数据包,确定差分数据包,其中,所述第四目标数据包至少包含所述变更文件在所述目标压缩包的文件头数据中的文件名以及第三预设操作类型,所述第三预设操作类型用于在对待升级软件进行差分还原升级时,指示对所述待升级压缩包中的变更文件进行替换操作。这样设置的好处在于,当目标压缩包中包含变更文件,且该变更文件的内容和待升级压缩包中的变更文件的内容相同时,无需将该变更文件打包为差分数据包,只需通过直接打包该变更文件的文件名以及第三预设操作类型,可以迅速的得到精简的差分数据包。
具体的,若所述差异文件中包含变更文件,则可以先利用预设摘要算法,如SHA256和MD5等,确定目标压缩包中的变更文件的内容和待升级压缩包中的变更文件的内容是否相同。若相同,则仅需对变更文件在目标压缩包的文件头数据中的文件名、第三预设操作类型以及核心区差分数据包进行打包,得到差分数据包。其中,第三预设操作类型可以记作搬移。
可选的,在所述利用预设摘要算法确定所述目标压缩包中的变更文件的内容和所述待升级压缩包中的变更文件的内容是否相同之后,还包括:若不相同,则确定所述变更文件是否被第一预设压缩算法压缩过;若未压缩过,则对所述目标压缩包中的变更文件和所述待升级压缩包中的变更文件进行差分处理,并对差分处理得到的差分数据进行压缩,得到差异数据包;根据第五目标数据包和所述核心区差分数据包,确定差分数据包,其中,所述第五目标数据包至少包含所述变更文件在所述目标压缩包的文件头数据中的文件名、所述差异数据包以及第四预设操作类型,所述第四预设操作类型用于在对待升级软件进行差分还原升级时,指示利用所述差分数据包解压后得到的数据和所述待升级压缩包中的变更文件,还原所述目标压缩包中的变更文件。这样设置的好处在于,当目标压缩包中包含变更文件,且该变更文件的内容和待升级压缩包中的变更文件的内容不相同时,通过对变更文件的差异数据包的高度压缩,在保证不丢失压缩信息的基础上,进一步保证了差分数据包的精简性
具体的,若目标压缩包中的变更文件的内容和待升级压缩包中的变更文件的内容不相同,则需先判断该变更文件是否被第一预设压缩算法压缩过,若未压缩过,则对目标压缩包中的变更文件和待升级压缩包中的变更文件进行差分处理,并对差分处理得到的差分数据进行压缩,得到差异数据包。再对该变更文件在目标压缩包的文件头数据中的文件名、差异数据包、第四预设操作类型以及核心区差分数据包进行打包,得到差分数据包。第四预设操作类型可以记作DIFF,当差分数据包包含的操作类型为DIFF时,需要使用对应的压缩算法对差分数据包解压得到差分数据,同时还需要利用待升级压缩包确定第二文件集合表,并从第二文件集合表中对应的位置获取变更文件,若该变更文件的数据类型是deflate压缩数据,则需先进行deflate解压(若数据类型是仅存储未压缩数据,则跳过解压过程),得到参与差分计算的变更文件的解压数据,然后结合差异数据包得到目标压缩包中的变更文件数据,若差分数据包中记录有压缩信息,若压缩信息为deflate压缩,则此时还需对该变更文件数据进行deflate压缩,即可得到目标压缩包中的变更文件。其中,对目标压缩包中的变更文件和待升级压缩包中的变更文件进行差分处理后得到的差分数据进行压缩时,也需判断压缩后得到的数据与压缩前的数据的大小,若压缩后得到的数据大于压缩前的数据,则可将压缩前的数据,即将变更文件的差分数据确定为差异数据包,若压缩后得到的数据小于或等于压缩前的数据,则可将压缩后的数据确定为差异数据包。
可选的,对差异数据的编码方式可以如下:
若目标压缩包中的变更文件记作t_data,待升级压缩包中的变更文件记作s_data,假设s_data为字符串"abcavbegfh",其下标(起始位置)是i,t_data为字符串"abccvdegfh",其下标(起始位置)是j,上述二者的差异数据存放在st_data中,st_data以下标k为存放起始地址,存放长度为3。图6为一种差分处理原理示意图,如图6所示,对s_data与t_data进行差分处理的过程可以为:
1、确定s_data与t_data中相同的数据子串,并记录该段相同数据的信息,如该相同的数据子串在s_data中的起始位置、在t_data中的起始位置以及数据长度,如图6中相同的数据子串“abc”和“egfh”两个子串则可记录为M(i,j,3)(i+6,j+6,4)。
2、确定s_data与t_data中不相同的数据子串,记录不相同的数据子串的信息,如不相同的数据子串在t_data中的起始位置、不相同的数据子串可被存放在st_data中的起始位置以及数据长度,并将不相同的数据子串写入在st_data中。如图6中,子串“v”虽然也是相同的数据子串,但其长度短,编码成本较高,故整合“cvd”作为不相同的数据子串,可记录为R(k,j+3,3)。
实施例三
图7为本发明实施例三提供的另一种差分数据确定方法的流程图,本发明实施例的技术方案在上述各可选技术方案的基础上进一步优化,给出了确定差分数据的另一种具体方式。
如图7所示,本发明实施例二提供的另一种差分数据确定方法,具体包括如下步骤:
S301、对目标压缩包和待升级压缩包的核心区进行差分处理,得到核心区差分数据包,并利用核心区的中央目录记录区,确定第一文件集合表和第二文件集合表。
S302、比对第一文件集合表和第二文件集合表,将仅存在于第一文件集合表的文件名对应的文件,确定为新增文件,将同时存在于第一文件集合表和第二文件集合表的文件名对应的文件,确定为变更文件。
S303、判断当前文件是否为新增文件,若是,则执行步骤304,若否,则执行步骤310。
S304、根据目标压缩包的中央目录记录区,确定新增文件是否被第一预设压缩算法压缩过,若否,则执行步骤305,若是,则执行步骤306。
S305、根据第一目标数据包和核心区差分数据包,确定差分数据包。
S306、对新增文件进行解压,得到解压文件,并利用第二预设压缩算法对解压文件进行压缩,得到压缩文件。
S307、判断压缩文件是否小于或等于解压文件,若否,则执行步骤308,若是,则执行步骤309。
S308、根据第二目标数据包和核心区差分数据包,确定差分数据包。
S309、根据第三目标数据包和核心区差分数据包,确定差分数据包。
S310、利用预设摘要算法确定目标压缩包中的变更文件的内容和待升级压缩包中的变更文件的内容是否相同,若是,则执行步骤311,若否,则执行步骤312。
S311、根据第四目标数据包和核心区差分数据包,确定差分数据包。
S312、确定变更文件是否被第一预设压缩算法压缩过,若否,则执行步骤313,若是,则执行步骤315。
S313、对目标压缩包中的变更文件和待升级压缩包中的变更文件进行差分处理,并对差分处理得到的差分数据进行压缩,得到差异数据包。
S314、根据第五目标数据包和核心区差分数据包,确定差分数据包。
S315、对变更文件解压,得到目标解压文件,并对目标解压文件和待升级压缩包中的变更文件进行差分处理,并对差分处理得到的目标差分数据进行压缩,得到目标差异数据包。
具体的,若变更文件被第一预设压缩算法压缩过,则可以先对该变更文件解压,得到目标解压文件,然后对目标解压文件和待升级压缩包中的变更文件进行差分处理,得到目标差异数据,再对目标差异数据进行压缩处理,并判断压缩后得到的数据与压缩前的数据的大小,若压缩后得到的数据大于压缩前的数据,则可将压缩前的数据,即将目标差异数据确定为目标差异数据包,若压缩后得到的数据小于或等于压缩前的数据,则可将目标差异数据包压缩后的数据确定为目标差异数据包。
S316、根据第六目标数据包和核心区差分数据包,确定差分数据包。
其中,第六目标数据包至少包含变更文件在目标压缩包的文件头数据中的文件名、目标差异数据包以及第四预设操作类型。
具体的,对变更文件在目标压缩包的文件头数据中的文件名、目标差异数据包、第四预设操作类型以及核心区差分数据包进行打包,得到差分数据包。
具体的,当目标压缩包中同时存在变更文件和新增文件时,核心区差分数据包可仅打包一次,即当第一目标数据包、第二目标数据包、第三目标数据包、第四目标数据包、第五目标数据包以及第六目标数据包中的任意一个目标数据包和核心区差分数据包打包过一次后,得到差分数据包后,剩余其他目标数据包仅需直接打包进该差分数据包内,待上述步骤执行结束后,即可得到最终的差分数据包。或,可在得到目标压缩包中的所有差异文件对应的目标数据包后,再对得到的目标数据包和核心区差分数据包进行打包,得到最终的差分数据包。
本发明实施例提供的差分数据确定方法,目标压缩包中同时包含新增文件和变更文件时,通过分别处理新增文件和变更文件,并对处理后得到的数据(即目标数据包)和核心区差分数据包,即可得到占用了较小内存空间且包含全部压缩信息的差分数据包,进一步保证了的精简性。
实施例四
图8为本发明实施例四提供了一种差分还原方法的流程图,本实施例可适用于差分还原数据的情况,该方法可以由差分还原装置来执行,该差分还原装置可以采用硬件和/或软件的形式实现,该差分还原装置可配置于电子设备中,该电子设备可以是两个或多个物理实体构成,也可以是一个物理实体构成。
如图8所示,该本发明实施例四提供的一种差分还原方法,具体包括如下步骤:
S401、获取差分数据包,并利用所述差分数据包和待升级压缩包,差分还原目标压缩包的核心区,得到还原核心区。
其中,所述差分数据包通过上述实施例所述的差分数据确定方法得到
具体的,对差分数据包中的核心区差分数据包和待升级压缩包中的核心区数据进行差分还原处理,可以得到还原出目标压缩包核心区数据,即得到还原核心区。
S402、利用所述还原核心区中的中央目录记录区,还原所述目标压缩包的文件头,得到还原文件头。
具体的,如上述实施例所述,由于目标压缩包的中央目录记录区记录了file head(文件头)的全部内容,故通过解析还原核心区中的中央目录记录区,可以还原目标压缩包的file head,得到还原文件头。
S403、利用所述差分数据包还原所述目标压缩包的file data数据,得到还原filedata数据。
具体的,利用差分数据包中的数据,如差分数据包中的目标数据包和预设操作类型,可以还原目标压缩包的file data数据,得到还原file data数据。其中,file data数据的数据量较大,还原耗时较长,故可根据存储空间与计算机性能,对其进行合理的并发还原处理。
本发明实施例提供的差分数据确定方案,获取差分数据包,并利用所述差分数据包和待升级压缩包,差分还原目标压缩包的核心区,得到还原核心区,其中,所述差分数据包通过上文所述的差分数据确定方法得到,利用所述还原核心区中的中央目录记录区,还原所述目标压缩包的文件头,得到还原文件头,利用所述差分数据包还原所述目标压缩包的file data数据,得到还原file data数据。本发明实施例技术方案,利用差分数据包和待升级压缩包,可以还原目标压缩包的核心区,然后利用该核心区和差分数据包,可以使还原后生成的file data数据和file head(文件头)数据,与参与差分计算的目标压缩包中的数据完全一致,解决了因存在非差分友好数据,而导致的差分还原效果不佳的问题。
实施例五
图9为本发明实施例三提供的一种差分数据确定装置的结构示意图。如图9所示,该装置包括:文件集合表确定模块501、差异文件确定模块502以及差分数据确定模块503,其中:
文件集合表确定模块,用于对目标压缩包和待升级压缩包的核心区进行差分处理,得到核心区差分数据包,并利用所述核心区的中央目录记录区,确定第一文件集合表和第二文件集合表,其中,所述核心区至少包括所述中央目录记录区,所述第一文件集合表中包含所述目标压缩包的中央目录记录区中记载的文件名,所述第二文件集合表中包含所述待升级压缩包的中央目录记录区中记载的文件名;
差异文件确定模块,用于利用所述第一文件集合表和所述第二文件集合表,确定差异文件;
差分数据确定模块,用于利用所述差异文件和核心区差分数据包,确定差分数据包。
本发明实施例提供的差分数据确定装置,利用核心区差分数据包以及差异文件,可以确定出目标压缩包和待升级压缩包的差分数据包,与传统的直接对数据包进行差分计算的方式相比,本方法通过确定差异文件,得到了精简且精准的差分数据包,其确定的差分数据包占用空间更少,并通过对目标压缩包和待升级压缩包的核心区进行差分处理,保证了差分还原时可以利用差分数据包中的核心区差分数据包,准确的还原出目标压缩包的文件头数据,差分友好的处理包含非差分友好数据的压缩包。
可选的,差异文件确定模块包括:
新增文件确定单元,用于比对所述第一文件集合表和所述第二文件集合表,将仅存在于所述第一文件集合表的文件名对应的文件,确定为新增文件;和/或,
变更文件确定单元,用于将同时存在于所述第一文件集合表和所述第二文件集合表的文件名对应的文件,确定为变更文件;其中,所述变更文件和所述新增文件均属于所述差异文件。
可选的,差分数据确定模块包括:
第一压缩判断单元,用于若所述差异文件中包含所述新增文件,则根据所述目标压缩包的中央目录记录区,确定所述新增文件是否被第一预设压缩算法压缩过;
第一差分数据确定单元,用于若第一压缩判断单元返回的信息为否,则根据第一目标数据包和所述核心区差分数据包,确定差分数据包,其中,所述第一目标数据包至少包含所述新增文件在所述目标压缩包的文件头数据中的文件名、所述新增文件以及第一预设操作类型,所述第一预设操作类型用于在对待升级软件进行差分还原升级时,指示将所述新增文件写入所述待升级软件的预设位置。
可选的,差分数据确定模块还包括:
压缩文件确定单元,用于在所述确定所述新增文件是否被第一预设压缩算法压缩过之后,若是,则对所述新增文件进行解压,得到解压文件,并利用第二预设压缩算法对所述解压文件进行压缩,得到压缩文件,其中,所述第二预设压缩算法不同于所述第一预设压缩算法;
判断单元,用于判断所述压缩文件是否小于所述解压文件;
第二差分数据确定单元,用于若判断单元返回的信息为大于,则根据第二目标数据包和所述核心区差分数据包,确定差分数据包,其中,所述第二目标数据包至少包含所述新增文件在所述目标压缩包的文件头数据中的文件名、所述解压文件以及所述第一预设操作类型;
第三差分数据确定单元,用于若判断单元返回的信息为小于或等于,则根据第三目标数据包和所述核心区差分数据包,确定差分数据包,其中,所述第三目标数据包至少包含所述新增文件在所述目标压缩包的文件头数据中的文件名、所述压缩文件以及第二预设操作类型,所述第二预设操作类型用于在对待升级软件进行差分还原升级时,指示利用所述压缩文件解压后得到的数据,还原所述目标压缩包中的新增文件。
可选的,差分数据确定模块包括:
内容判断单元,用于若所述差异文件中包含所述变更文件,则利用预设摘要算法确定所述目标压缩包中的变更文件的内容和所述待升级压缩包中的变更文件的内容是否相同;
第四差分数据确定单元,用于若内容判断单元返回的信息为相同,则根据第四目标数据包和所述核心区差分数据包,确定差分数据包,其中,所述第四目标数据包至少包含所述变更文件在所述目标压缩包的文件头数据中的文件名以及第三预设操作类型,所述第三预设操作类型用于在对待升级软件进行差分还原升级时,指示对所述待升级压缩包中的变更文件进行替换操作。
可选的,差分数据确定模块还包括:
第二压缩判断单元,用于在所述利用预设摘要算法确定所述目标压缩包中的变更文件的内容和所述待升级压缩包中的变更文件的内容是否相同之后,若不相同,则确定所述变更文件是否被第一预设压缩算法压缩过;
差异数据确定单元,用于若第二压缩判断单元返回的信息为未压缩过,则对所述目标压缩包中的变更文件和所述待升级压缩包中的变更文件进行差分处理,并对差分处理得到的差分数据进行压缩,得到差异数据包;
第五差分数据确定单元,用于根据第五目标数据包和所述核心区差分数据包,确定差分数据包,其中,所述第五目标数据包至少包含所述变更文件在所述目标压缩包的文件头数据中的文件名、所述差异数据包以及第四预设操作类型,所述第四预设操作类型用于在对待升级软件进行差分还原升级时,指示利用所述差分数据包解压后得到的数据和所述待升级压缩包中的变更文件,还原所述目标压缩包中的变更文件。
本发明实施例所提供的差分数据确定装置可执行本发明任意实施例所提供的差分数据确定方法,具备执行方法相应的功能模块和有益效果。
实施例六
图10为本发明实施例三提供的一种差分还原装置的结构示意图。如图10所示,该装置包括:核心区还原模块601、文件头还原模块602以及还原模块603,其中:
核心区还原模块,用于获取差分数据包,并利用所述差分数据包和待升级压缩包,差分还原目标压缩包的核心区,得到还原核心区,其中,所述差分数据包通过如权利要求1-6任一所述的差分数据确定方法得到;
文件头还原模块,用于利用所述还原核心区中的中央目录记录区,还原所述目标压缩包的文件头,得到还原文件头;
还原模块,用于利用所述差分数据包还原所述目标压缩包的file data数据,得到还原file data数据。
本发明实施例提供的差分还原装置,利用差分数据包和待升级压缩包,可以还原目标压缩包的核心区,然后利用该核心区和差分数据包,可以使还原后生成的file data数据和file head(文件头)数据,与参与差分计算的目标压缩包中的数据完全一致,解决了因存在非差分友好数据,而导致的差分还原效果不佳的问题。
实施例七
示出了可以用来实施本发明的实施例的电子设备40的结构示意图。电子设备旨在表示各种形式的数字计算机,诸如,膝上型计算机、台式计算机、工作台、个人数字助理、服务器、刀片式服务器、大型计算机、和其它适合的计算机。本文所示的部件、它们的连接和关系、以及它们的功能仅仅作为示例,并且不意在限制本文中描述的和/或者要求的本发明的实现。
如图11所示,电子设备70包括至少一个处理器71,以及与至少一个处理器71通信连接的存储器,如只读存储器(ROM)72、随机访问存储器(RAM)73等,其中,存储器存储有可被至少一个处理器执行的计算机程序,处理器71可以根据存储在只读存储器(ROM)72中的计算机程序或者从存储单元78加载到随机访问存储器(RAM)73中的计算机程序,来执行各种适当的动作和处理。在RAM 73中,还可存储电子设备70操作所需的各种程序和数据。处理器71、ROM 72以及RAM 73通过总线74彼此相连。输入/输出(I/O)接口75也连接至总线74。
电子设备70中的多个部件连接至I/O接口75,包括:输入单元76,例如键盘、鼠标等;输出单元77,例如各种类型的显示器、扬声器等;存储单元78,例如磁盘、光盘等;以及通信单元79,例如网卡、调制解调器、无线通信收发机等。通信单元79允许电子设备70通过诸如因特网的计算机网络和/或各种电信网络与其他设备交换信息/数据。
处理器71可以是各种具有处理和计算能力的通用和/或专用处理组件。处理器71的一些示例包括但不限于中央处理单元(CPU)、图形处理单元(GPU)、各种专用的人工智能(AI)计算芯片、各种运行机器学习模型算法的处理器、数字信号处理器(DSP)、以及任何适当的处理器、控制器、微控制器等。处理器71执行上文所描述的各个方法和处理,例如差分数据确定方法,和/或,差分还原方法。
在一些实施例中,差分数据确定方法,和/或,差分还原方法可被实现为计算机程序,其被有形地包含于计算机可读存储介质,例如存储单元78。在一些实施例中,计算机程序的部分或者全部可以经由ROM 72和/或通信单元79而被载入和/或安装到电子设备70上。当计算机程序加载到RAM 73并由处理器71执行时,可以执行上文描述的差分数据确定方法,和/或,差分还原方法的一个或多个步骤。备选地,在其他实施例中,处理器71可以通过其他任何适当的方式(例如,借助于固件)而被配置为执行差分数据确定方法,和/或,差分还原方法。
本文中以上描述的系统和技术的各种实施方式可以在数字电子电路系统、集成电路系统、场可编程门阵列(FPGA)、专用集成电路(ASIC)、专用标准产品(ASSP)、芯片上系统的系统(SOC)、负载可编程逻辑设备(CPLD)、计算机硬件、固件、软件、和/或它们的组合中实现。这些各种实施方式可以包括:实施在一个或者多个计算机程序中,该一个或者多个计算机程序可在包括至少一个可编程处理器的可编程系统上执行和/或解释,该可编程处理器可以是专用或者通用可编程处理器,可以从存储系统、至少一个输入装置、和至少一个输出装置接收数据和指令,并且将数据和指令传输至该存储系统、该至少一个输入装置、和该至少一个输出装置。
用于实施本发明的方法的计算机程序可以采用一个或多个编程语言的任何组合来编写。这些计算机程序可以提供给通用计算机、专用计算机或其他可编程数据处理装置的处理器,使得计算机程序当由处理器执行时使流程图和/或框图中所规定的功能/操作被实施。计算机程序可以完全在机器上执行、部分地在机器上执行,作为独立软件包部分地在机器上执行且部分地在远程机器上执行或完全在远程机器或服务器上执行。
上述提供的计算机设备可用于执行上述任意实施例提供的差分数据确定方法,和/或,差分还原方法,具备相应的功能和有益效果。
实施例五
在本发明的上下文中,计算机可读存储介质可以是有形的介质,所述计算机可执行指令在由计算机处理器执行时用于执行差分数据确定方法,和/或,差分还原方法,该差分数据确定方法包括:
对目标压缩包和待升级压缩包的核心区进行差分处理,得到核心区差分数据包,并利用所述核心区的中央目录记录区,确定第一文件集合表和第二文件集合表,其中,所述核心区至少包括所述中央目录记录区,所述第一文件集合表中包含所述目标压缩包的中央目录记录区中记载的文件名,所述第二文件集合表中包含所述待升级压缩包的中央目录记录区中记载的文件名;
利用所述第一文件集合表和所述第二文件集合表,确定差异文件;
利用所述差异文件和核心区差分数据包,确定差分数据包。
该差分还原方法包括:
获取差分数据包,并利用所述差分数据包和待升级压缩包,差分还原目标压缩包的核心区,得到还原核心区,其中,所述差分数据包通过上述的差分数据确定方法得到;
利用所述还原核心区中的中央目录记录区,还原所述目标压缩包的文件头,得到还原文件头;
利用所述差分数据包还原所述目标压缩包的file data数据,得到还原file data数据。
在本发明的上下文中,计算机可读存储介质可以是有形的介质,其可以包含或存储以供指令执行系统、装置或设备使用或与指令执行系统、装置或设备使用或与指令执行系统、装置或设备结合地使用的计算机程序。计算机可读存储介质可以包括但不限于电子的、磁性的、光学的、电磁的、红外的、或半导体系统、装置或设备,或者上述内容的任何合适组合。备选地,计算机可读存储介质可以是机器可读信号介质。机器可读存储介质的更具体示例会包括基于一个或多个线的电气连接、便携式计算机盘、硬盘、随机存取存储器(RAM)、只读存储器(ROM)、可擦除可编程只读存储器(EPROM或快闪存储器)、光纤、便捷式紧凑盘只读存储器(CD-ROM)、光学储存设备、磁储存设备、或上述内容的任何合适组合。
上述提供的计算机设备可用于执行上述任意实施例提供的差分数据确定方法,和/或,差分还原方法,具备相应的功能和有益效果。
值得注意的是,上述差分数据确定装置的实施例中,所包括的各个单元和模块只是按照功能逻辑进行划分的,但并不局限于上述的划分,只要能够实现相应的功能即可;另外,各功能单元的具体名称也只是为了便于相互区分,并不用于限制本发明的保护范围。
注意,上述仅为本发明的较佳实施例及所运用技术原理。本领域技术人员会理解,本发明不限于这里所述的特定实施例,对本领域技术人员来说能够进行各种明显的变化、重新调整和替代而不会脱离本发明的保护范围。因此,虽然通过以上实施例对本发明进行了较为详细的说明,但是本发明不仅仅限于以上实施例,在不脱离本发明构思的情况下,还可以包括更多其他等效实施例,而本发明的范围由所附的权利要求范围决定。

Claims (11)

1.一种差分数据确定方法,其特征在于,包括:
对目标压缩包和待升级压缩包的核心区进行差分处理,得到核心区差分数据包,并利用所述核心区的中央目录记录区,确定第一文件集合表和第二文件集合表,其中,所述核心区至少包括所述中央目录记录区,所述第一文件集合表中包含所述目标压缩包的中央目录记录区中记载的文件名,所述第二文件集合表中包含所述待升级压缩包的中央目录记录区中记载的文件名;
利用所述第一文件集合表和所述第二文件集合表,确定差异文件;
利用所述差异文件和核心区差分数据包,确定差分数据包。
2.根据权利要求1所述的方法,其特征在于,所述利用所述第一文件集合表和所述第二文件集合表,确定差异文件,包括:
比对所述第一文件集合表和所述第二文件集合表,将仅存在于所述第一文件集合表的文件名对应的文件,确定为新增文件;和/或,
将同时存在于所述第一文件集合表和所述第二文件集合表的文件名对应的文件,确定为变更文件;
其中,所述变更文件和所述新增文件均属于所述差异文件。
3.根据权利要求2所述的方法,其特征在于,所述利用所述差异文件和核心区差分数据包,确定差分数据包,包括:
若所述差异文件中包含所述新增文件,则根据所述目标压缩包的中央目录记录区,确定所述新增文件是否被第一预设压缩算法压缩过;
若否,则根据第一目标数据包和所述核心区差分数据包,确定差分数据包,其中,所述第一目标数据包至少包含所述新增文件在所述目标压缩包的文件头数据中的文件名、所述新增文件以及第一预设操作类型,所述第一预设操作类型用于在对待升级软件进行差分还原升级时,指示将所述新增文件写入所述待升级软件的预设位置。
4.根据权利要求3所述的方法,其特征在于,在所述确定所述新增文件是否被第一预设压缩算法压缩过之后,还包括:
若是,则对所述新增文件进行解压,得到解压文件,并利用第二预设压缩算法对所述解压文件进行压缩,得到压缩文件,其中,所述第二预设压缩算法不同于所述第一预设压缩算法;
判断所述压缩文件是否小于或等于所述解压文件;
若大于,则根据第二目标数据包和所述核心区差分数据包,确定差分数据包,其中,所述第二目标数据包至少包含所述新增文件在所述目标压缩包的文件头数据中的文件名、所述解压文件以及所述第一预设操作类型;
若小于或等于,则根据第三目标数据包和所述核心区差分数据包,确定差分数据包,其中,所述第三目标数据包至少包含所述新增文件在所述目标压缩包的文件头数据中的文件名、所述压缩文件以及第二预设操作类型,所述第二预设操作类型用于在对待升级软件进行差分还原升级时,指示利用所述压缩文件解压后得到的数据,还原所述目标压缩包中的新增文件。
5.根据权利要求2或3所述的方法,其特征在于,所述利用所述差异文件和核心区差分数据包,确定差分数据包,包括:
若所述差异文件中包含所述变更文件,则利用预设摘要算法确定所述目标压缩包中的变更文件的内容和所述待升级压缩包中的变更文件的内容是否相同;
若相同,则根据第四目标数据包和所述核心区差分数据包,确定差分数据包,其中,所述第四目标数据包至少包含所述变更文件在所述目标压缩包的文件头数据中的文件名以及第三预设操作类型,所述第三预设操作类型用于在对待升级软件进行差分还原升级时,指示对所述待升级压缩包中的变更文件进行替换操作。
6.根据权利要求5所述的方法,其特征在于,在所述利用预设摘要算法确定所述目标压缩包中的变更文件的内容和所述待升级压缩包中的变更文件的内容是否相同之后,还包括:
若不相同,则确定所述变更文件是否被第一预设压缩算法压缩过;
若未压缩过,则对所述目标压缩包中的变更文件和所述待升级压缩包中的变更文件进行差分处理,并对差分处理得到的差分数据进行压缩,得到差异数据包;
根据第五目标数据包和所述核心区差分数据包,确定差分数据包,其中,所述第五目标数据包至少包含所述变更文件在所述目标压缩包的文件头数据中的文件名、所述差异数据包以及第四预设操作类型,所述第四预设操作类型用于在对待升级软件进行差分还原升级时,指示利用所述差分数据包解压后得到的数据和所述待升级压缩包中的变更文件,还原所述目标压缩包中的变更文件。
7.一种差分还原方法,其特征在于,包括:
获取差分数据包,并利用所述差分数据包和待升级压缩包,差分还原目标压缩包的核心区,得到还原核心区,其中,所述差分数据包通过如权利要求1-6任一所述的差分数据确定方法得到;
利用所述还原核心区中的中央目录记录区,还原所述目标压缩包的文件头,得到还原文件头;
利用所述差分数据包还原所述目标压缩包的filedata数据,得到还原filedata数据。
8.一种差分数据确定装置,其特征在于,包括:
文件集合表确定模块,用于对目标压缩包和待升级压缩包的核心区进行差分处理,得到核心区差分数据包,并利用所述核心区的中央目录记录区,确定第一文件集合表和第二文件集合表,其中,所述核心区至少包括所述中央目录记录区,所述第一文件集合表中包含所述目标压缩包的中央目录记录区中记载的文件名,所述第二文件集合表中包含所述待升级压缩包的中央目录记录区中记载的文件名;
差异文件确定模块,用于利用所述第一文件集合表和所述第二文件集合表,确定差异文件;
差分数据确定模块,用于利用所述差异文件和核心区差分数据包,确定差分数据包。
9.一种差分还原装置,其特征在于,包括:
核心区还原模块,用于获取差分数据包,并利用所述差分数据包和待升级压缩包,差分还原目标压缩包的核心区,得到还原核心区,其中,所述差分数据包通过如权利要求1-6任一所述的差分数据确定方法得到;
文件头还原模块,用于利用所述还原核心区中的中央目录记录区,还原所述目标压缩包的文件头,得到还原文件头;
还原模块,用于利用所述差分数据包还原所述目标压缩包的filedata数据,得到还原filedata数据。
10.一种电子设备,其特征在于,所述电子设备包括:
至少一个处理器;以及
与所述至少一个处理器通信连接的存储器;其中,
所述存储器存储有可被所述至少一个处理器执行的计算机程序,所述计算机程序被所述至少一个处理器执行,以使所述至少一个处理器能够执行权利要求1-6中任一项所述的差分数据确定方法,和/或,执行权利要求7所述的差分还原方法。
11.一种计算机可读存储介质,其特征在于,所述计算机可读存储介质存储有计算机指令,所述计算机指令用于使处理器执行时实现权利要求1-6中任一项所述的差分数据确定方法,和/或,实现权利要求7所述的差分还原方法。
CN202311074562.6A 2023-08-24 2023-08-24 差分数据确定方法、差分还原方法、装置、设备及介质 Pending CN117112004A (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN202311074562.6A CN117112004A (zh) 2023-08-24 2023-08-24 差分数据确定方法、差分还原方法、装置、设备及介质

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN202311074562.6A CN117112004A (zh) 2023-08-24 2023-08-24 差分数据确定方法、差分还原方法、装置、设备及介质

Publications (1)

Publication Number Publication Date
CN117112004A true CN117112004A (zh) 2023-11-24

Family

ID=88805017

Family Applications (1)

Application Number Title Priority Date Filing Date
CN202311074562.6A Pending CN117112004A (zh) 2023-08-24 2023-08-24 差分数据确定方法、差分还原方法、装置、设备及介质

Country Status (1)

Country Link
CN (1) CN117112004A (zh)

Similar Documents

Publication Publication Date Title
US6925467B2 (en) Byte-level file differencing and updating algorithms
US20200320036A1 (en) Data unit cloning in memory-based file systems
US5732265A (en) Storage optimizing encoder and method
CN105009067B (zh) 管理对存储数据单元的操作
US20110238635A1 (en) Combining Hash-Based Duplication with Sub-Block Differencing to Deduplicate Data
US10552044B2 (en) Storage apparatus, data processing method and storage system wherein compressed data is read in parallel, said data stored in buffer by size and read from said buffer, in order of when said data is stored in said buffer
US9864542B2 (en) Data deduplication using a solid state drive controller
CN102999433B (zh) 一种虚拟磁盘的冗余数据删除方法及系统
CN108733306B (zh) 一种文件合并方法及装置
CN111125033B (zh) 一种基于全闪存阵列的空间回收方法及系统
US20010051954A1 (en) Data updating apparatus that performs quick restoration processing
WO2017020576A1 (zh) 一种键值存储系统中文件压实的方法和装置
CN111475195A (zh) 一种固件升级方法、装置和系统
US9632720B2 (en) Data de-duplication
US9858287B2 (en) Storage system
CN107798063B (zh) 快照处理方法和快照处理装置
CN106980680B (zh) 数据存储方法及存储设备
CN111984203A (zh) 一种数据重删方法、装置及电子设备和存储介质
CN105009068A (zh) 管理对存储数据单元的操作
CN111796969A (zh) 一种数据差量压缩检测方法、计算机设备和存储介质
CN109542860B (zh) 基于hdfs的业务数据管理方法、终端设备
CN117112004A (zh) 差分数据确定方法、差分还原方法、装置、设备及介质
CN112346771A (zh) 升级文件生成方法及装置
US11411577B2 (en) Data compression method, data decompression method, and related apparatus
CN112380171B (zh) 一种yaffs文件系统oob识别方法、终端设备及存储介质

Legal Events

Date Code Title Description
PB01 Publication
PB01 Publication
SE01 Entry into force of request for substantive examination
SE01 Entry into force of request for substantive examination