CN111176704A - 一种差分包文件生成方法、中断恢复方法和相关装置 - Google Patents
一种差分包文件生成方法、中断恢复方法和相关装置 Download PDFInfo
- Publication number
- CN111176704A CN111176704A CN201811332163.4A CN201811332163A CN111176704A CN 111176704 A CN111176704 A CN 111176704A CN 201811332163 A CN201811332163 A CN 201811332163A CN 111176704 A CN111176704 A CN 111176704A
- Authority
- CN
- China
- Prior art keywords
- suffix
- file
- position information
- differential
- suffixes
- 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
Links
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F8/00—Arrangements for software engineering
- G06F8/60—Software deployment
- G06F8/65—Updates
- G06F8/658—Incremental updates; Differential updates
Landscapes
- Engineering & Computer Science (AREA)
- Software Systems (AREA)
- General Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Computer Security & Cryptography (AREA)
- Physics & Mathematics (AREA)
- General Physics & Mathematics (AREA)
- Data Exchanges In Wide-Area Networks (AREA)
Abstract
本发明公开了一种差分包文件生成方法、中断恢复方法和相关装置,所述差分包文件生成方法包括:分别确定旧安装包文件和新安装包文件的后缀构成的后缀数组;对旧安装包文件的后缀数组进行排序处理得到排序后的后缀数组;针对新安装包文件的后缀数组中每一后缀,均执行下述过程:确定该后缀与排序后的后缀数组中相匹配的后缀之间相同的数据块及其插入位置信息,记录该后缀在新安装文件的后缀数组中的位置信息;基于各个后缀得到的插入位置信息,确定能够覆盖确定出的数据块的最佳覆盖路径;根据最佳覆盖路径、确定出的各个数据块和未匹配成功的后缀对应的数据块生成差分包文件。采用上述方法可以无需从头开始执行差分包文件生成流程,节省了时间。
Description
技术领域
本发明涉及数据处理技术领域,尤其涉及一种差分包文件生成方法、中断恢复方法和相关装置。
背景技术
差分算法的主要应用场景是差分升级,使用原有的安装包差分升级为最新的安装包,减少升级消耗。差分算法,简单来说就是求出两个数据块不一致的地方,这些不一致描述起来可能包括(有重叠):保留的数据、增加的数据、删除的数据、修改的数据、移动的数据等,使用一个数据块的数据加上这些不一致的数据信息组合起来就可以生成另一个数据块。而获得这些不一致的过程就叫差分,这些不一致的数据被称为差分包。
现有的文件差分算法主流有二进制差异算法(binary diff,bsdiff)和hdiff算法等。上述两种算法都是对文件进行差分计算,产生差分包,但是在产生差分包的过程中,一旦产生差分包的过程发生中断,采用上述两种方法无法恢复,需要重新执行差分过程,这样会造成时间的消耗;尤其是当产生大文件的差分包的过程中发生中断时,由于文件较大会导致需要消耗更长的时间来生成差分包。
因此,如何在文件差分过程中发生中断时,当中断结束后及时执行文件差分过程以生成差分包,减少时间的消耗是首要考虑的问题之一。
发明内容
本发明实施例提供一种差分包文件生成方法、中断恢复方法和相关装置,用以解决现有技术中在生成差分包文件过程中发生中断时,需要重新执行差分包文件生成流程所造成的时间的消耗问题。
第一方面,本发明实施例提供一种差分包文件生成方法,包括:
分别确定旧安装包文件和新安装包文件的后缀构成的后缀数组;并
对所述旧安装包文件的后缀数组进行排序处理得到排序后的后缀数组;
针对新安装包文件的后缀数组中的每一后缀,均执行下述过程:确定该后缀与排序后的后缀数组中相匹配的后缀之间相同的数据块及其插入位置信息,以及记录该后缀在新安装文件的后缀数组中的位置信息,该后缀在新安装文件的后缀数组中的位置信息用于指示生成差分包文件的进度;
基于各个后缀得到的插入位置信息,确定能够覆盖确定出的数据块的最佳覆盖路径;
根据所述最佳覆盖路径、确定出的各个数据块和未匹配成功的后缀对应的数据块生成差分包文件。
第二方面,本发明实施例提供一种中断恢复方法,包括:
在基于本发明上述提供的差分包文件生成方法生成差分包文件的过程中发生中断且中断结束后,读取记录的用于指示生成差分包文件的进度的位置信息;
从所述位置信息开始继续执行差分包文件生成方法。
第三方面,本发明实施例提供一种差分包文件生成装置,包括:
第一确定单元,用于分别确定旧安装包文件和新安装包文件的后缀构成的后缀数组;
排序处理单元,用于对所述旧安装包文件的后缀数组进行排序处理得到排序后的后缀数组;
第二确定单元,用于针对新安装包文件的后缀数组中的每一后缀,均执行下述过程:确定该后缀与排序后的后缀数组中相匹配的后缀之间相同的数据块及其插入位置信息,以及记录该后缀在新安装文件的后缀数组中的位置信息,该后缀在新安装文件的后缀数组中的位置信息用于指示生成差分包文件的进度;
第三确定单元,用于基于各个后缀得到的插入位置信息,确定能够覆盖确定出的数据块的最佳覆盖路径;
生成单元,用于根据所述最佳覆盖路径、确定出的各个数据块和未匹配成功的后缀对应的数据块生成差分包文件。
第四方面,本发明实施例提供一种中断恢复装置,包括:
读取单元,用于在基于本发明提供的差分包文件生成方法生成差分包文件的过程中发生中断且中断结束后,读取记录的用于指示生成差分包文件的进度的位置信息;
执行单元,用于从所述位置信息开始继续执行差分包文件生成方法。
第五方面,本发明实施例提供一种通信设备,包括存储器、处理器及存储在所述存储器上并可在所述处理器上运行的计算机程序;所述处理器执行所述程序时实现如本申请提供的任一项所述的差分包文件生成方法,或者实现如本申请提供的中断恢复方法。
第六方面,本发明实施例提供一种计算机可读存储介质,其上存储有计算机程序,该程序被处理器执行时实现如本申请提供的任一项所述的差分包文件生成方法中的步骤,或者实现如本申请提供的中断恢复方法中的步骤。
本发明有益效果:
本发明实施例提供的差分包文件生成方法、中断恢复方法和相关装置,分别确定旧安装包文件和新安装包文件的后缀构成的后缀数组;并对所述旧安装包文件的后缀数组进行排序处理得到排序后的后缀数组;针对新安装包文件的后缀数组中的每一后缀,均执行下述过程:确定该后缀与排序后的后缀数组中相匹配的后缀之间相同的数据块及其插入位置信息,以及记录该后缀在新安装文件的后缀数组中的位置信息,该后缀在新安装文件的后缀数组中的位置信息用于指示生成差分包文件的进度;基于各个后缀得到的插入位置信息,确定能够覆盖确定出的数据块的最佳覆盖路径;根据所述最佳覆盖路径、确定出的各个数据块和未匹配成功的后缀对应的数据块生成差分包文件。采用上述方法,由于在生成差分包文件时生成了用于指示生成差分包文件的进度的位置信息,当生成差分包文件的过程中发生中断且中断结束后可以直接读取出用于指示生成差分包文件的进度的位置信息,然后基于该位置信息继续执行差分包文件生成方法,而无需从头开始执行差分包文件生成方法,这样,大大节省了生成差分包文件的时间,进而加快了新版本应用程序的安装速度。
本发明的其它特征和优点将在随后的说明书中阐述,并且,部分地从说明书中变得显而易见,或者通过实施本发明而了解。本发明的目的和其他优点可通过在所写的说明书、权利要求书、以及附图中所特别指出的结构来实现和获得。
附图说明
此处所说明的附图用来提供对本发明的进一步理解,构成本发明的一部分,本发明的示意性实施例及其说明用于解释本发明,并不构成对本发明的不当限定。在附图中:
图1为本发明实施例提供的实施差分包文件生成方法或中断恢复方法的计算装置的结构示意图;
图2为本发明实施例提供的差分包文件生成方法的流程示意图;
图3为本发明实施例提供的利用倍增算法对旧安装包文件“aabaaaab”的后缀数组进行排序的效果示意图;
图4为本发明实施例提供的旧安装包文件“010110001001”的后缀数组进行排序的排序结果示意图;
图5为本发明实施例提供的确定该后缀与排序后的后缀数组中的后缀相匹配的流程示意图;
图6为本发明实施例提供的确定该后缀与相匹配的后缀之间相同的数据块的流程示意图;
图7为本发明实施例提供的中断恢复方法的流程示意图;
图8为本发明实施例提供的差分包文件生成装置的结构示意图;
图9为本发明实施例提供的中断恢复装置的结构示意图。
具体实施方式
本发明实施例提供的差分包文件生成方法、中断恢复方法和相关装置,用以解决现有技术中在生成差分包文件过程中发生中断时,需要重新执行差分包文件生成流程所造成的时间的消耗问题。
以下结合说明书附图对本发明的优选实施例进行说明,应当理解,此处所描述的优选实施例仅用于说明和解释本发明,并不用于限定本发明,并且在不冲突的情况下,本发明中的实施例及实施例中的特征可以相互组合。
便于理解本发明,本发明涉及的技术术语中:
1、文件的后缀,是指该文件中从最后一个字符之前的任一个字符开始至最后一个字符所构成的字符串,例如文件中的字符串为abcdef,则该字符串的后缀包括:abcdef、bcdef、cdef、defef和f,而字符串abc、bcd和cde等等由于均没有f,故这些字符串不是后缀。
2、后缀数组,也即SA,它是一个一维数组,它保存序列S的1..n的某个排列SA[1],SA[2],……,SA[n],并且保证Suffix(SA[i])<Suffix(SA[i+1]),1≤i<n。也就是将序列S的n个后缀从小到大进行排序之后把排好序的后缀的开头位置顺次放入SA中。
针对现有技术中在生成差分包时一旦发生中断需要重新执行生成差分包的流程所造成的时间的消耗问题,本发明实施例给出了解决方案,提出了一种计算装置10,由计算装置10来实施本发明提供的差分包文件生成方法和中断恢复方法,该计算装置可以以通用计算设备的形式表现,该通用计算设备可以为终端或服务器等。下面参照图1来描述根据本发明的计算装置10。图1显示的计算装置10仅仅是一个示例,不应对本发明实施例的功能和使用范围带来任何限制。
如图1所示,计算装置10以通用计算设备的形式表现。计算装置10的组件可以包括但不限于:上述至少一个处理单元11、上述至少一个存储单元12、连接不同系统组件(包括存储单元12和处理单元11)的总线13。
总线13表示几类总线结构中的一种或多种,包括存储器总线或者存储器控制器、外围总线、处理器或者使用多种总线结构中的任意总线结构的局域总线。
存储单元12可以包括易失性存储器形式的可读介质,例如随机存取存储器(RAM)121和/或高速缓存存储器122,还可以进一步包括只读存储器(ROM)123。
存储单元12还可以包括具有一组(至少一个)程序模块124的程序/实用工具125,这样的程序模块124包括但不限于:操作系统、一个或者多个应用程序、其它程序模块以及程序数据,这些示例中的每一个或某种组合中可能包括网络环境的实现。
计算装置10也可以与一个或多个外部设备14(例如键盘、指向设备等)通信,还可与一个或者多个使得用户能与计算装置10交互的设备通信,和/或与使得该计算装置10能与一个或多个其它计算设备进行通信的任何设备(例如路由器、调制解调器等等)通信。这种通信可以通过输入/输出(I/O)接口15进行。并且,计算装置10还可以通过网络适配器16与一个或者多个网络(例如局域网(LAN),广域网(WAN)和/或公共网络,例如因特网)通信。如图所示,网络适配器16通过总线13与用于计算装置10的其它模块通信。应当理解,尽管图中未示出,可以结合计算装置10使用其它硬件和/或软件模块,包括但不限于:微代码、设备驱动器、冗余处理单元、外部磁盘驱动阵列、RAID系统、磁带驱动器以及数据备份存储系统等。
本发明实施例提供的差分包文件生成方法的应用场景是,在确定出应用程序有新版本时,为了加快新版本应用程序的安装速度,先根据旧版本应用程序的安装包文件新版本应用程序的安装包文件生成差分包文件,即:分别确定旧安装包文件和新安装包文件的后缀构成的后缀数组;并对所述旧安装包文件的后缀数组进行排序处理得到排序后的后缀数组;针对新安装包文件的后缀数组中的每一后缀,均执行下述过程:确定该后缀与排序后的后缀数组中相匹配的后缀之间相同的数据块及其插入位置信息,以及记录该后缀在新安装文件的后缀数组中的位置信息,该后缀在新安装文件的后缀数组中的位置信息用于指示生成差分包文件的进度;基于各个后缀得到的插入位置信息,确定能够覆盖确定出的数据块的最佳覆盖路径;根据所述最佳覆盖路径、确定出的各个数据块和未匹配成功的数据块生成差分包文件。在生成差分包文件后,基于差分包文件和旧版本应用程序安装快速安装新版本应用程序,由于差分包文件相对于新版本应用程序的安装包文件,其文件是相对比较小的,故基于此可以加快安装新版本应用程序的速度,在一定程度上节省了安装时间。此外,由于本发明提供的差分包文件生成方法中记录了用于指示生成差分包文件的进度的位置信息,当生成差分包文件的过程中发生中断且中断结束后可以直接读取出用于指示生成差分包文件的进度的位置信息,然后基于该位置信息继续执行差分包文件生成流程,这样一来,无需重新执行差分包文件生成流程,有效节省了生成差分包文件的时间。
本发明上述计算装置10可以为终端设备或服务器等等,在介绍本发明实施例提供的差分包文件生成方法时,以将其应用到终端设备为例进行说明,参考图2所示,为本发明实施例提供的差分包文件生成方法的流程示意图,可以包括以下步骤:
S21、分别确定旧安装包文件和新安装包文件的后缀构成的后缀数组。
本步骤中,终端设备在获取到最新版应用程序的新安装包文件时,可以先提取出终端设备当前按照的应用程序的旧安装包文件,然后确定旧安装包文件的后缀,并将确定出的后缀构成旧安装包文件的后缀数组;并确定出新安装包文件的后缀,并将确定出的后缀构成新安装包文件的后缀数组。例如,旧安装包文件包括010110001001,新安装包文件包括001010111000100011,则可以确定出旧安装包文件的后缀为:010110001001、10110001001、0110001001、110001001、10001001、0001001、001001、01001、1001、001、01和1,进而可以得出旧安装包文件的后缀构成的后缀数组。而新安装包文件的后缀为:001010111000100011、01010111000100011、1010111000100011、010111000100011、10111000100011、0111000100011、111000100011、11000100011、1000100011、000100011、00100011、0100011、100011、00011、0011、011、11和1,从而可以得到新安装包文件的后缀构成的后缀数组。
具体地,后缀数组中存储的是各个后缀中首个字符的位置信息,故可以基于该原理可以得到旧安装包文件的后缀数组和新安装包文件的后缀数组。
S22、对旧安装包文件的后缀数组进行排序处理得到排序后的后缀数组。
本步骤中,基于步骤S21确定出的旧安装包文件的后缀数组,对该后缀数组进行排序处理可以得到排序后的后缀数组。较佳地,由于排序处理步骤是比较耗时的过程,为了快速得到排序后的后缀数组,本发明提出利用倍增算法对旧安装包文件的后缀数进行排序处理。图3给出了利用倍增算法对旧安装包文件“aabaaaab”的后缀数组进行排序的效果示意图,基于该原理可以得到旧安装包文件“010110001001”的后缀数组进行排序的结果,参考图4所示的效果示意图。
本发明中在对旧安装包文件的后缀数组进行排序的排序次数可以但不限于为旧安装包文件中包含的字符的个数等。
较佳地,为了防止在排序阶段发生中断而导致需要重新执行差分包文件生成流程而导致时间的浪费,本发明提出可以执行下述过程:
在对所述旧安装包文件的后缀数组进行排序处理时,记录历次的排序结果,排序结果包括每次排序处理后旧安装包文件的各个后缀的顺序,且上述排序结果用于指示生成差分包文件的进度。
具体地,结合图4进行说明,在执行历次排序后,可以记录每次排序后各个后缀的顺序,以降序为例进行说明,则排名越靠前的值越小,排名靠后的值越大。例如,在对执行第一次排序后,可以得到字符为“0”其值小于1,故将该字符的后缀排在第一位,字符为“1”的排在第二位等等;将这些排序结果存储到第一记录文件中,这样一来,当排序阶段发生中断时,可以根据第一记录文件中记录的排序结果确定出当前已执行至第几次排序,然后再此基础上继续执行排序处理;较佳地,还可以在第一记录文件中直接记录每次排序的排序结果及对应的次数,假设仅执行第一次排序就发生中断,则第一记录文件中记录第一次排序的排序结果及执行的是第一次排序等等,这样当发生中断且中断结束时基于第一记录文件可以明确地确定出当前执行到第几次排序。
在确定出旧安装包文件排序后的后缀数组后,为了能够获得差分包文件,需要确定出新安装包文件与旧安装包文件的相同及不同的数据块。具体地,本发明提出针对新安装包文件的后缀数组中的每一后缀,均执行下述过程:
S23、确定该后缀与排序后的后缀数组中相匹配的后缀之间相同的数据块及其插入位置信息,以及记录该后缀在新安装文件的后缀数组中的位置信息。
本发明中任一后缀在新安装文件的后缀数组中的位置信息用于指示生成差分包文件的进度。
通过实施本步骤中,旨在轮询确定出新安装包文件的后缀数组中每一后缀在旧安装包文件的排序后的后缀数组中的插入位置信息,即在排序后的后缀数组中插入与其对应的后缀有相同字符的新安装包文件的后缀数据中的后缀,[first,last]标记有序的排序的后缀数组中可以插入value,而不会破坏容器顺序的第一个位置。
较佳地,本发明中的插入位置信息由数据块的首个字符在排序后的后缀数组中的位置信息和数据块的最末一个字符在排序后的后缀数组中的位置信息构成。
具体地,基于图4经过第3次排序得到的排序后的后缀数组中各个后缀的排序顺序参考表1所示:
表1
后缀数组 | 0 | 1 | 0 | 1 | 1 | 0 | 0 | 0 | 1 | 0 | 0 | 1 |
排名 | 6 | 11 | 7 | 12 | 9 | 1 | 3 | 5 | 10 | 2 | 4 | 8 |
基于表1可以得出Sa[1]=6,即排名第1的后缀的首个字符所在的位置是从左至右查第6个位置,则该后缀为:0001001;同理可以得出各个排名对应的后缀参考表2所示:
表2
排名及位置 | 后缀Suffix(Sa[i]) |
Sa[1]=6 | 0001001 |
Sa[2]=10 | 001 |
Sa[3]=7 | 001001 |
Sa[4]=11 | 01 |
Sa[5]=8 | 01001 |
Sa[6]=1 | 010110001001 |
Sa[7]=3 | 0110001001 |
Sa[8]=12 | 1 |
Sa[9]=5 | 10001001 |
Sa[10]=9 | 1001 |
Sa[11]=2 | 10110001001 |
Sa[12]=4 | 110001001 |
由上述描述可以得出,Suffix(Sa[1])<Suffix(Sa[2])<Suffix(Sa[3])<……<Suffix(Sa[12])。
在获得排序后的后缀数组后,针对新安装包文件的后缀数组的每一个后缀,均可以确定出该后缀在排序后的后缀数组中的具有部分相同字符的后缀及其插入位置信息。具体地,可以按照图5所示的流程确定该后缀与排序后的后缀数组中的后缀相匹配:
S51、比较该后缀与排序后的后缀数组中的后缀。
S52、将排序后的后缀数组中与该后缀差值最小的后缀确定为与该后缀相匹配的后缀。
具体地,针对新安装包文件的后缀数据对应的后缀010110001001,可以比较该后缀与排序后的后缀数组中的后缀,即确定出该后缀比Suffix(Sa[3])小,比Suffix(Sa[4])大,且可以确定出该后缀与Suffix(Sa[3])=001001差值最小,则确定出Suffix(Sa[3])=001001为该后缀相匹配的后缀。而且,该后缀与Suffix(Sa[3])=001001有相同的部分,即“0010”,则可以确定出该后缀与Suffix(Sa[3])=001001相匹配,也即该后缀在排序后的后缀数组中存在相匹配的后缀,且可以得到这两个后缀之间相同的数据块为“0010”,基于此可以确定出数据块“0010”在排序后的后缀数组中的插入位置信息由数据块“0010”中首个字符“0”在排序后的后缀数组中的位置信息和最末一个字符“0”在排序后的后缀数组中的位置信息构成。以此类推,可以确定出新安装包文件的后缀数组中每一后缀是否在排序后的后缀数组中存在相匹配的后缀,且在存在相匹配的后缀时,确定出每一后缀与相匹配的后缀之间相同的数据块及该数据块在排序后的后缀数组中的插入位置信息。若确定出任一后缀未在排序后的后缀数组中查找到相同的后缀,则确定出该后缀为未匹配的后缀,进而将该后缀中的字符构成的数据块确定为未匹配成功的数据块。
较佳地,可以按照图6所示的流程确定该后缀与相匹配的后缀之间相同的数据块,包括以下步骤:
S61、确定该后缀与相匹配的后缀之间相同的连续字符。
S62、确定所述连续字符的字符长度是否不小于预设长度阈值,若是,则执行步骤S63;否则执行步骤S64。
S63、将所述连续字符确定为该后缀与相匹配的后缀之间相同的数据块。
S64、将该连续字符构成的数据块确定为未匹配成功的数据块。
图6所示的流程,本发明设置了预设长度阈值value,也即公共前缀阈值,旨在寻找匹配成功的两个后缀具有满足公共前缀阈值的数据块,该预设长度阈值可以但不限于为7等。具体地,可以依次比较该后缀与排序后的后缀数组中的后缀,只有在确定出该后缀与排序后的后缀数组中存在具有部分相同的连续字符的后缀时,若确定出部分相同的连续字符的字符长度大于预设长度阈值,则表明这两个后缀匹配程度较高,具有较多相同的字符,则确定该连续字符构成的数据块为该后缀与相匹配的后缀之间相同的数据块;否则,表明这两个后缀虽然匹配但匹配程度较低,还不如直接在差分包文件中写入连续字符构成的数据块,故将该连续字符构成的数据块确定为未匹配成功的数据块,且将该连续字符构成的数据块直接写入差分包文件中。
在确定出匹配成功的后缀之间的数据块后,可以记录数据块中首个字符在排序后的后缀数值中的位置信息(即数据块的起点位置)和数据块中最末一个字符在排序后的后缀数值中的位置信息(即数据块的终点位置),并存储到第三记录文件中,基于这两个位置信息在生成差分包文件时可以将这两个位置信息之间的字符,包括这两个位置对于的字符直接写入到差分包文件中,通过记录起点与终点坐标表明匹配数据块到文件中,便于中断后的恢复。
较佳地,本发明记录的任一后缀在新安装文件的后缀数组中的位置信息可以为该后缀中的首个字符在新安装文件的后缀数组中的位置信息。
具体地,可以将每一后缀在新安装包文件的后缀数组中的位置信息记录到第二记录文件中,当在执行轮询查找发生中断时,待中断结束后,可以基于第二记录文件中记录的位置信息可以确定出当前执行到哪一个后缀的查找过程,进而基于该后缀继续执行轮询查找流程,在此基础上生成差分包文件。这样一来,也无需重新执行差分包文件生成流程,大大节省了生成差分包的时间。
S24、基于各个后缀得到的插入位置信息,确定能够覆盖确定出的数据块的最佳覆盖路径。
本步骤中,由于基于各个后缀得到的插入位置信息是匹配成功的后缀之间的相同的字符构成的数据块的起点位置和终点位置构成的区间段,在确定最佳覆盖路径时,可以从确定出的第一个数据块的起点位置开始寻找,使得寻找出一条能够覆盖尽可能多的相同数据块的路径,然后在第四记录文件中记录这些已完成数据块的编号,用于中断后的恢复。在确定最佳覆盖路径时,可以先取出会被其他数据块覆盖到的冗余数据,有重叠的数据块则进行组合处理。
S25、根据最佳覆盖路径、确定出的各个数据块和未匹配成功的后缀对应的数据块生成差分包文件。
本步骤中,在基于步骤S24确定出最佳覆盖路径后,可以基于该最佳覆盖路径、匹配成功的后缀之间的相同字符构成的数据块和未匹配成功的字符构成的数据块生成差分包文件,也即安装新版本应用程序的补丁包。
在生成差分包文件时,可以先基于第二记录文件中记录的插入位置信息从旧安装包文件中拷贝出插入位置信息对应的数据(匹配成功的数据块),然后填充上新安装包文件中未匹配成功的数据(差异数据块),这样一来,将这两类数据进行组合即可得到完整的差分包文件。
需要说明的是,本发明中的第一记录文件、第二记录文件和第四记录文件可以为同一个文件,也可以是互不相同的三个文件,具体可以根据实际情况而定。
采用本发明提供的差分包文件生成方法,分别确定旧安装包文件和新安装包文件的后缀构成的后缀数组;并对所述旧安装包文件的后缀数组进行排序处理得到排序后的后缀数组;针对新安装包文件的后缀数组中的每一后缀,均执行下述过程:确定该后缀与排序后的后缀数组中相匹配的后缀之间相同的数据块及其插入位置信息,以及记录该后缀在新安装文件的后缀数组中的位置信息,该后缀在新安装文件的后缀数组中的位置信息用于指示生成差分包文件的进度;基于各个后缀得到的插入位置信息,确定能够覆盖确定出的数据块的最佳覆盖路径;根据所述最佳覆盖路径、确定出的各个数据块和未匹配成功的后缀对应的数据块生成差分包文件。采用上述方法,由于在生成差分包文件时生成了用于指示生成差分包文件的进度的位置信息,当生成差分包文件的过程中发生中断且中断结束后可以直接读取出用于指示生成差分包文件的进度的位置信息,然后基于该位置信息继续执行差分包文件生成方法,而无需从头开始执行差分包文件生成方法,这样,大大节省了生成差分包文件的时间,进而加快了新版本应用程序的安装速度。
基于同一发明构思,本发明实施例还提供了一种中断恢复,参考图7所示的流程,包括以下步骤:
S71、在基于本发明实施例提供的差分包文件生成方法生成差分包文件的过程中发生中断且中断结束后,读取记录的用于指示生成差分包文件的进度的位置信息。
S72、从所述位置信息开始继续执行差分包文件生成方法。
步骤S71和S72,当在利用本发明实施例提供的差分包文件生成方法生成差分包文件过程中发生中断时,当中断结束后,会从第一记录文件和/或第二记录文件中读取用于指示生成差分包文件的进度的位置信息,若第一记录文件中当前记录了m次排序,而实际需要对旧安装包文件的后缀数组执行n次排序,若m小于n,则表明在对旧安装包文件的后缀数组执行排序时发生了中断,当中断结束后,可以从第一记录文件中读取最近一次的排序结果,然后基于该排序结果继续执行下一次排序结果,直至执行完第n次排序结果为止得到排序后的后缀数组,然后再执行步骤S23~25的差分包文件生成流程。
此外,当第一记录文件中记录了已经执行了n次排序,表明对旧安装包文件的后缀数组执行排序时未发生中断,则再从第二记录文件中读取最近一次记录的后缀在新安装文件的后缀数组中的位置信息,则可以根据记录的后缀的位置信息可以确定出当前是对哪一个后缀实施步骤S23时发生了中断,则当中断结束后继续对第二记录文件中最近一次记录的位置信息对应的新安装包文件的后缀数组中的后缀继续实施步骤S23的过程,以及对该后缀之后的其他后缀执行步骤S23的过程,最后再执行步骤S24~S25的流程生成差分包文件。
另外,当第二记录文件中记录了已经对新安装包文件的后缀数组中的所有后缀均实施了步骤S23,则表明中断未发生在步骤S23的实施过程,且在确定出差分包文件为未生成时,则可以确定出可以在实施步骤S24或步骤S25时发生了中断,则第四记录文件中读取已完成最近一个数据块的插入位置信息,然后基于读取的插入位置信息继续执行该数据块之后的其他数据块直至确定出最佳覆盖路径,再继续执行步骤S25的过程。具体地,在恢复时,读取记录第四记录文件来获取已经匹配到的数据块,根据第四记录文件中记录的最后一块数据段的起点坐标开始,继续进行匹配过程。由于顺序地进行数据块的匹配,所以只要根据记录下的最后一块数据块的起点坐标,就可以知道匹配的进度,从而继续匹配任务。
采用本发明提供的中断恢复方法,在基于本发明实施例提供的差分包文件生成方法生成差分包文件的过程中发生中断且中断结束后,读取记录的用于指示生成差分包文件的进度的位置信息,然后从所述位置信息开始继续执行差分包文件生成方法。采用上述方法,直接基于记录的用于指示生成差分包文件的进度的位置信息继续执行差分包文件的生成流程,而无需从头开始实施差分包文件生成流程,大大降低了差分包文件生成的时间,进而加快了新版本应用程序的安装速度。
基于同一发明构思,本发明实施例中还提供了一种差分包文件生成装置,由于上述装置解决问题的原理与差分包文件生成方法相似,因此上述装置的实施可以参见方法的实施,重复之处不再赘述。
如图8所示,为本发明实施例提供的差分包文件生成装置的结构示意图,包括:
第一确定单元81,用于分别确定旧安装包文件和新安装包文件的后缀构成的后缀数组;
排序处理单元82,用于对所述旧安装包文件的后缀数组进行排序处理得到排序后的后缀数组;
第二确定单元83,用于针对新安装包文件的后缀数组中的每一后缀,均执行下述过程:确定该后缀与排序后的后缀数组中相匹配的后缀之间相同的数据块及其插入位置信息,以及记录该后缀在新安装文件的后缀数组中的位置信息,该后缀在新安装文件的后缀数组中的位置信息用于指示生成差分包文件的进度;
第三确定单元84,用于基于各个后缀得到的插入位置信息,确定能够覆盖确定出的数据块的最佳覆盖路径;
生成单元85,用于根据所述最佳覆盖路径、确定出的各个数据块和未匹配成功的后缀对应的数据块生成差分包文件。
较佳地,所述插入位置信息由数据块的首个字符在排序后的后缀数组中的位置信息和数据块的最末一个字符在排序后的后缀数组中的位置信息构成。
优选地,所述第二确定单元83,具体用于按照下述方法确定该后缀与排序后的后缀数组中的后缀相匹配:比较该后缀与排序后的后缀数组中的后缀;将排序后的后缀数组中与该后缀差值最小的后缀确定为与该后缀相匹配的后缀。
优选地,所述第二确定单元83,具体用于确定该后缀与相匹配的后缀之间相同的连续字符;确定所述连续字符的字符长度是否不小于预设长度阈值;若是,则将所述连续字符确定为该后缀与相匹配的后缀之间相同的数据块。
可选地,所述装置,还包括:
记录单元86,用于在所述排序处理单元82对所述旧安装包文件的后缀数组进行排序处理时,记录历次的排序结果,所述排序结果包括每次排序处理后旧安装包文件的各个后缀的顺序,且所述排序结果用于指示生成差分包文件的进度。
较佳地,记录的该后缀在新安装文件的后缀数组中的位置信息为该后缀中的首个字符在新安装文件的后缀数组中的位置信息。
为了描述的方便,以上各部分按照功能划分为各模块(或单元)分别描述。当然,在实施本发明时可以把各模块(或单元)的功能在同一个或多个软件或硬件中实现。
基于同一发明构思,本发明实施例中还提供了一种中断恢复装置,由于上述装置解决问题的原理与中断恢复方法相似,因此上述装置的实施可以参见方法的实施,重复之处不再赘述。
如图9所示,为本发明实施例提供的中断恢复装置的结构示意图,包括:
读取单元91,用于在基于本发明提供的差分包文件生成方法生成差分包文件的过程中发生中断且中断结束后,读取记录的用于指示生成差分包文件的进度的位置信息;
执行单元92,用于从所述位置信息开始继续执行差分包文件生成方法。
为了描述的方便,以上各部分按照功能划分为各模块(或单元)分别描述。当然,在实施本发明时可以把各模块(或单元)的功能在同一个或多个软件或硬件中实现。
基于同一发明构思,本发明实施例还提供了一种通信设备,包括存储器、处理器及存储在所述存储器上并可在所述处理器上运行的计算机程序;其中,所述处理器执行所述程序时实现如本发明提供的任一项所述的差分包文件生成方法,和/或者实现如本发明提供的中断恢复方法。
基于同一发明构思,本发明实施例还提供了一种计算机可读存储介质,其上存储有计算机程序,该程序被处理器执行时实现如本申请提供的任一项所述的差分包文件生成方法中的步骤,或者实现如本申请提供的中断恢复方法中的步骤。
本领域内的技术人员应明白,本发明的实施例可提供为方法、系统、或计算机程序产品。因此,本发明可采用完全硬件实施例、完全软件实施例、或结合软件和硬件方面的实施例的形式。而且,本发明可采用在一个或多个其中包含有计算机可用程序代码的计算机可用存储介质(包括但不限于磁盘存储器、CD-ROM、光学存储器等)上实施的计算机程序产品的形式。
本发明是参照根据本发明实施例的方法、设备(系统)、和计算机程序产品的流程图和/或方框图来描述的。应理解可由计算机程序指令实现流程图和/或方框图中的每一流程和/或方框、以及流程图和/或方框图中的流程和/或方框的结合。可提供这些计算机程序指令到通用计算机、专用计算机、嵌入式处理机或其他可编程数据处理设备的处理器以产生一个机器,使得通过计算机或其他可编程数据处理设备的处理器执行的指令产生用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的装置。
这些计算机程序指令也可存储在能引导计算机或其他可编程数据处理设备以特定方式工作的计算机可读存储器中,使得存储在该计算机可读存储器中的指令产生包括指令装置的制造品,该指令装置实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能。
这些计算机程序指令也可装载到计算机或其他可编程数据处理设备上,使得在计算机或其他可编程设备上执行一系列操作步骤以产生计算机实现的处理,从而在计算机或其他可编程设备上执行的指令提供用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的步骤。
尽管已描述了本发明的优选实施例,但本领域内的技术人员一旦得知了基本创造性概念,则可对这些实施例做出另外的变更和修改。所以,所附权利要求意欲解释为包括优选实施例以及落入本发明范围的所有变更和修改。
显然,本领域的技术人员可以对本发明进行各种改动和变型而不脱离本发明的精神和范围。这样,倘若本发明的这些修改和变型属于本发明权利要求及其等同技术的范围之内,则本发明也意图包含这些改动和变型在内。
Claims (11)
1.一种差分包文件生成方法,其特征在于,包括:
分别确定旧安装包文件和新安装包文件的后缀构成的后缀数组;并
对所述旧安装包文件的后缀数组进行排序处理得到排序后的后缀数组;
针对新安装包文件的后缀数组中的每一后缀,均执行下述过程:确定该后缀与排序后的后缀数组中相匹配的后缀之间相同的数据块及其插入位置信息,以及记录该后缀在新安装文件的后缀数组中的位置信息,该后缀在新安装文件的后缀数组中的位置信息用于指示生成差分包文件的进度;
基于各个后缀得到的插入位置信息,确定能够覆盖确定出的数据块的最佳覆盖路径;
根据所述最佳覆盖路径、确定出的各个数据块和未匹配成功的后缀对应的数据块生成差分包文件。
2.如权利要求1所述的方法,其特征在于,所述插入位置信息由数据块的首个字符在排序后的后缀数组中的位置信息和数据块的最末一个字符在排序后的后缀数组中的位置信息构成。
3.如权利要求1或2所述的方法,其特征在于,按照下述方法确定该后缀与排序后的后缀数组中的后缀相匹配:
比较该后缀与排序后的后缀数组中的后缀;
将排序后的后缀数组中与该后缀差值最小的后缀确定为与该后缀相匹配的后缀。
4.如权利要求3所述的方法,其特征在于,确定该后缀与相匹配的后缀之间相同的数据块,具体包括:
确定该后缀与相匹配的后缀之间相同的连续字符;
确定所述连续字符的字符长度是否不小于预设长度阈值;
若是,则将所述连续字符确定为该后缀与相匹配的后缀之间相同的数据块。
5.如权利要求1所述的方法,其特征在于,在对所述旧安装包文件的后缀数组进行排序处理时,记录历次的排序结果,所述排序结果包括每次排序处理后旧安装包文件的各个后缀的顺序,且所述排序结果用于指示生成差分包文件的进度。
6.如权利要求1所述的方法,其特征在于,记录的该后缀在新安装文件的后缀数组中的位置信息为该后缀中的首个字符在新安装文件的后缀数组中的位置信息。
7.一种中断恢复方法,其特征在于,包括:
在基于权利要求1~6任一所述的方法生成差分包文件的过程中发生中断且中断结束后,读取记录的用于指示生成差分包文件的进度的位置信息;
从所述位置信息开始继续执行差分包文件生成方法。
8.一种差分包文件生成装置,其特征在于,包括:
第一确定单元,用于分别确定旧安装包文件和新安装包文件的后缀构成的后缀数组;
排序处理单元,用于对所述旧安装包文件的后缀数组进行排序处理得到排序后的后缀数组;
第二确定单元,用于针对新安装包文件的后缀数组中的每一后缀,均执行下述过程:确定该后缀与排序后的后缀数组中相匹配的后缀之间相同的数据块及其插入位置信息,以及记录该后缀在新安装文件的后缀数组中的位置信息,该后缀在新安装文件的后缀数组中的位置信息用于指示生成差分包文件的进度;
第三确定单元,用于基于各个后缀得到的插入位置信息,确定能够覆盖确定出的数据块的最佳覆盖路径;
生成单元,用于根据所述最佳覆盖路径、确定出的各个数据块和未匹配成功的后缀对应的数据块生成差分包文件。
9.一种中断恢复装置,其特征在于,包括:
读取单元,用于在基于权利要求1~6任一所述的方法生成差分包文件的过程中发生中断且中断结束后,读取记录的用于指示生成差分包文件的进度的位置信息;
执行单元,用于从所述位置信息开始继续执行差分包文件生成方法。
10.一种通信设备,包括存储器、处理器及存储在所述存储器上并可在所述处理器上运行的计算机程序;其特征在于,所述处理器执行所述程序时实现如权利要求1~6任一项所述的差分包文件生成方法,和/或者实现如权利要求7所述的中断恢复方法。
11.一种计算机可读存储介质,其上存储有计算机程序,其特征在于,该程序被处理器执行时实现如权利要求1~6任一项所述的差分包文件生成方法中的步骤,和/或实现如权利要求7所述的中断恢复方法中的步骤。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201811332163.4A CN111176704B (zh) | 2018-11-09 | 2018-11-09 | 一种差分包文件生成方法、中断恢复方法和相关装置 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201811332163.4A CN111176704B (zh) | 2018-11-09 | 2018-11-09 | 一种差分包文件生成方法、中断恢复方法和相关装置 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN111176704A true CN111176704A (zh) | 2020-05-19 |
CN111176704B CN111176704B (zh) | 2022-08-23 |
Family
ID=70655446
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201811332163.4A Active CN111176704B (zh) | 2018-11-09 | 2018-11-09 | 一种差分包文件生成方法、中断恢复方法和相关装置 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN111176704B (zh) |
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN113468119A (zh) * | 2021-05-31 | 2021-10-01 | 北京明朝万达科技股份有限公司 | 一种文件扫描方法和装置 |
Citations (11)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20040128281A1 (en) * | 2002-12-16 | 2004-07-01 | Fujitsu Limited | Difference updating method, program and apparatus |
US20040210551A1 (en) * | 2003-04-15 | 2004-10-21 | Jones Kerry N. | Method and apparatus for finding differences between two computer files efficiently in linear time and for using these differences to update computer files |
US20050028031A1 (en) * | 2003-07-28 | 2005-02-03 | Matsushita Electric Industrial Co., Ltd. | Data recovery method and data recording apparatus |
EP1526543A1 (en) * | 2003-10-23 | 2005-04-27 | Thomson Licensing S.A. | Method and apparatus for recording data and recovering recorded data |
US20050091280A1 (en) * | 2003-10-23 | 2005-04-28 | Marco Winter | Method and apparatus for recording data and recovering recorded data |
WO2005101200A1 (en) * | 2004-04-13 | 2005-10-27 | Red Bend Ltd | Method and apparatus for generating and update package |
WO2007071324A1 (en) * | 2005-12-20 | 2007-06-28 | Telefonaktiebolaget L M Ericsson (Publ) | Generating incremental program updates |
CN103793245A (zh) * | 2014-01-21 | 2014-05-14 | 浙江大学 | 一种嵌入式系统更新中增量文件的生成方法 |
CN106959962A (zh) * | 2016-01-12 | 2017-07-18 | 中国移动通信集团青海有限公司 | 一种多模式字符串匹配方法和装置 |
US20180157561A1 (en) * | 2016-12-05 | 2018-06-07 | Nutanix, Inc. | Disaster recovery for distributed file servers, including metadata fixers |
EP3355184A1 (en) * | 2017-01-31 | 2018-08-01 | Sequans Communications | A method for generating a delta file for in-place updating of memory content and a method for memory updating |
-
2018
- 2018-11-09 CN CN201811332163.4A patent/CN111176704B/zh active Active
Patent Citations (11)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20040128281A1 (en) * | 2002-12-16 | 2004-07-01 | Fujitsu Limited | Difference updating method, program and apparatus |
US20040210551A1 (en) * | 2003-04-15 | 2004-10-21 | Jones Kerry N. | Method and apparatus for finding differences between two computer files efficiently in linear time and for using these differences to update computer files |
US20050028031A1 (en) * | 2003-07-28 | 2005-02-03 | Matsushita Electric Industrial Co., Ltd. | Data recovery method and data recording apparatus |
EP1526543A1 (en) * | 2003-10-23 | 2005-04-27 | Thomson Licensing S.A. | Method and apparatus for recording data and recovering recorded data |
US20050091280A1 (en) * | 2003-10-23 | 2005-04-28 | Marco Winter | Method and apparatus for recording data and recovering recorded data |
WO2005101200A1 (en) * | 2004-04-13 | 2005-10-27 | Red Bend Ltd | Method and apparatus for generating and update package |
WO2007071324A1 (en) * | 2005-12-20 | 2007-06-28 | Telefonaktiebolaget L M Ericsson (Publ) | Generating incremental program updates |
CN103793245A (zh) * | 2014-01-21 | 2014-05-14 | 浙江大学 | 一种嵌入式系统更新中增量文件的生成方法 |
CN106959962A (zh) * | 2016-01-12 | 2017-07-18 | 中国移动通信集团青海有限公司 | 一种多模式字符串匹配方法和装置 |
US20180157561A1 (en) * | 2016-12-05 | 2018-06-07 | Nutanix, Inc. | Disaster recovery for distributed file servers, including metadata fixers |
EP3355184A1 (en) * | 2017-01-31 | 2018-08-01 | Sequans Communications | A method for generating a delta file for in-place updating of memory content and a method for memory updating |
Non-Patent Citations (4)
Title |
---|
I MJACKY: "彻底弄懂后缀数组", 《HTTPS://WWW.CNBLOGS.COM/SHANCHUAN04/P/5324009.HTML》 * |
RODRIGO GONZÁLEZ: "Locally Compressed Suffix Arrays", 《HTTPS://DL.ACM.ORG/DOI/ABS/10.1145/2594408》 * |
周波等: "倍增法之后缀数组解决重复子串的问题", 《中国新通信》 * |
铁蛋超人: "QQ异地续传文件", 《电脑迷》 * |
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN113468119A (zh) * | 2021-05-31 | 2021-10-01 | 北京明朝万达科技股份有限公司 | 一种文件扫描方法和装置 |
Also Published As
Publication number | Publication date |
---|---|
CN111176704B (zh) | 2022-08-23 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN103984582A (zh) | 一种热更新方法和装置 | |
CN111258620B (zh) | 差分升级包的生成方法、装置和设备 | |
CN1930551A (zh) | 固件升级中的自动备份存储 | |
CN1866206A (zh) | 利用马尔可夫链根据uml规范生成性能测试 | |
CN110837393A (zh) | 一种固件差分升级包的制作方法及装置、可读存储介质 | |
CN111475195A (zh) | 一种固件升级方法、装置和系统 | |
CN106445643B (zh) | 克隆、升级虚拟机的方法及设备 | |
CN109284233B (zh) | 一种存储系统的垃圾回收方法及相关装置 | |
CN111176654B (zh) | 一种基于多用户缓存的物联网应用在线编译方法 | |
CN110442371A (zh) | 一种发布代码的方法、装置、介质及计算机设备 | |
CN111596945B (zh) | 嵌入式系统动态多分区固件的差分升级方法 | |
CN111176704B (zh) | 一种差分包文件生成方法、中断恢复方法和相关装置 | |
CN112085644A (zh) | 多列数据排序方法、装置、可读存储介质和电子设备 | |
CN114579168A (zh) | 代码更新方法、装置、电子设备和计算机可读存储介质 | |
CN114036004B (zh) | 数据备份方法、恢复方法及装置 | |
CN107179965A (zh) | 数据库恢复方法及装置 | |
KR20150117522A (ko) | 그래픽스 상태 관리 장치 및 방법 | |
CN108664255B (zh) | 一种软件升级方法及装置 | |
CN104794179A (zh) | 一种基于知识树的视频快速标引方法及装置 | |
CN105335940A (zh) | 一种实现图像的滤镜效果的方法、装置及服务器 | |
CN111027693A (zh) | 一种基于去权重剪枝的神经网络压缩方法及系统 | |
CN116074308A (zh) | 车端升级包下载方法、系统、设备及可读存储介质 | |
CN115328525A (zh) | 一种差分包的生成方法 | |
CN107783778A (zh) | 一种基于特征值查表法的增量升级方法 | |
CN104991963B (zh) | 文件处理方法和装置 |
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 | ||
GR01 | Patent grant | ||
GR01 | Patent grant |