CN116860309A - 部分更新文件数据块读写方法及差分还原、增量更新方法 - Google Patents
部分更新文件数据块读写方法及差分还原、增量更新方法 Download PDFInfo
- Publication number
- CN116860309A CN116860309A CN202311042684.7A CN202311042684A CN116860309A CN 116860309 A CN116860309 A CN 116860309A CN 202311042684 A CN202311042684 A CN 202311042684A CN 116860309 A CN116860309 A CN 116860309A
- Authority
- CN
- China
- Prior art keywords
- file
- data
- reused
- data blocks
- version file
- 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
Links
- 238000000034 method Methods 0.000 title claims abstract description 67
- 230000008569 process Effects 0.000 claims description 15
- 230000009467 reduction Effects 0.000 claims description 12
- 230000002085 persistent effect Effects 0.000 claims description 3
- 230000007246 mechanism Effects 0.000 description 5
- 238000010586 diagram Methods 0.000 description 4
- 230000004048 modification Effects 0.000 description 3
- 238000012986 modification Methods 0.000 description 3
- 238000004364 calculation method Methods 0.000 description 2
- 230000008859 change Effects 0.000 description 2
- 238000012360 testing method Methods 0.000 description 2
- 101100226364 Arabidopsis thaliana EXT1 gene Proteins 0.000 description 1
- 238000013473 artificial intelligence Methods 0.000 description 1
- 230000007547 defect Effects 0.000 description 1
- 239000012634 fragment Substances 0.000 description 1
- 230000006872 improvement Effects 0.000 description 1
- 238000005457 optimization Methods 0.000 description 1
- 230000002035 prolonged effect Effects 0.000 description 1
- 238000011084 recovery Methods 0.000 description 1
- 238000011946 reduction process Methods 0.000 description 1
- 230000008439 repair process Effects 0.000 description 1
- 238000006467 substitution reaction Methods 0.000 description 1
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
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F8/00—Arrangements for software engineering
- G06F8/70—Software maintenance or management
- G06F8/71—Version control; Configuration management
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)
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
Abstract
本发明涉及应用程序增量更新技术领域,具体公开了一种部分更新文件数据块读写方法及差分还原、增量更新方法,部分更新文件数据块读写方法包括:当覆盖线中待写入的偏移量与新版本文件实际待写入的偏移位置相等时,根据覆盖线判断覆盖线包含对一个以上全部重用的数据块的读写时,将旧版本文件中全部重用的数据块的索引插入新版本文件的数据块索引中,并修改旧版本文件的索引信息。本发明通过对闪存文件数据块进行分类并针对部分更新文件中全部重用的数据块采取修改索引的方式而避免对所有全部重用的数据块的直接读写,只需多一次信息判断即可节约大量内存,加快更新速度,从而在增量更新时提高内存利用率。
Description
技术领域
本发明涉及应用程序增量更新技术领域,尤其涉及一种部分更新文件数据块读写方法、一种差分还原方法及一种增量更新方法。
背景技术
随着物联网、人工智能及高速移动网络的快速发展,终端设备的种类与数量急剧增加,智能手表和手环等智能可穿戴设备已经广泛传播。智能电子设备的生命周期中,要进行多次的OTA软件更新,确保设备及时修复存在的软件bug,以及满足用户更多的功能体验。目前大多数应用程序采用增量升级的方式进行更新,其核心思想就是尽可能多地利用旧版本文件中已有的内容,尽可能少地加入新的内容来构建新版本文件。与原来每次更新都要下载完整程序的做法相比,这样做生成的差分包比原镜像包要小得多,一方面减少流量成本的消耗,另一方面降低了客户端升级时间。
增量更新算法是OTA升级机制的关键支撑算法,直接决定下载差分文件所需的时间和流量,以及电子设备还原差分文件的系统资源消耗和时间。目前主流增量升级算法有Xdelta、BSDiff、HDiffPatch等。目前使用较多的差分算法库为HDiffPatch,该算法能够实现高效的差分和更新操作。
增量更新的流程如图1所示,当应用程序出现新版本时,服务端会检测新版本文件与旧版本文件之间的差异,制作版本之间的差分包并发布在可供客户端下载的平台(例如APP store),用户就可以设置手动或者自动更新,将差分包下载到本地进行差分还原。
HDiffPatch算法生成的差分包包含这三部分数据:一是“ADD”和“INSERT”的这类控制指引信息,控制从旧版本文件读取匹配长度的数据,并将其添加到新版本文件中的指定位置;二是服务端差分过程中生成的覆盖线信息,是通过改进后缀数组的算法思想来实现新旧版本最大程度匹配的集合,这些公共部分数据覆盖线信息包含这三部分信息:数据在旧文件中的偏移量,在新文件中的偏移量,匹配长度,在源码中分别表示为oldPos,newPos和length;三是新增的额外数据,包含无法近似匹配的完全不同的字段,属于旧版本新增的额外信息。
根据增量升级尽可能多地利用旧版本已有数据的核心思想,当客户端下载差分包到本地后,按照HDiffPatch支持的本地差分还原策略,客户端会根据差分包中控制信息和覆盖线信息,从旧文件中“oldPos”拷贝“length”长度的数据到新文件的newPos上。这里的位置信息都是相对文件初始地址的偏移量。新文件中不被覆盖线信息覆盖的位置则需要插入一些差分包中的额外数据,最终生成一个新版本镜像文件。
Android应用程序是以apk格式的文件进行发布的,其本质是一个压缩包文件格式,源代码文件、资源文件、AndroidManifetst.xml文件等会被压缩到apk文件中。应用程序的更新就是在对这些子文件数据进行增删改操作,将应用程序的子文件分为三类:全新文件、全旧文件和介于全新和全旧的文件,即部分更新文件。其中,全新文件里的数据都是新版本独有的数据,全旧文件是版本更新后文件内容完全不变的子文件,部分更新文件内既包含旧版本中部分不变的数据还包括部分新增数据(属于在旧版本应用程序更新过程中进行部分更新的文件)。
通过对不同类别的(例如:社交媒体、游戏、短视频等)最受用户欢迎的应用程序进行增量更新测试,发现数量占比很小的部分更新文件的数据量大小却超过了整个镜像文件大小的一半,而数量更多的全旧文件和全新文件总的数据量大小还不及部分更新文件。由于增量更新的核心就是尽可能多地利用旧版本已有数据,于是可以得出这样的结论:在应用程序增量更新的过程中,部分更新文件这类文件是客户端在差分还原时频繁访问的对象,如此频繁地读取这类大文件,势必造成大量的文件读写开销。
由此观之,现有增量更新算法HDiffPatch主要存在以下两大问题:
1、按照差分算法HDiffPatch,需要从闪存中读取部分更新文件这类文件到内存和新增数据进行差分还原操作,再将新组成的数据写入新版本文件中。由于部分更新文件数据量占比很大,最后还要将更新的数据持久化到闪存上,这无疑产生了大量的读写和内存开销问题;
2、客户端需要多次从闪存上的旧版本文件中取不同大小的数据,涉及磁盘的随机访问,性能比较慢。若使用目前大多数移动系统使用的FAT文件系统读写部分更新文件这类数据量占比很大的文件,不仅需要耗费大量内存,还会延长更新时间。
发明内容
本发明提供一种部分更新文件数据块读写方法及差分还原、增量更新方法,解决的技术问题在于:现有基于HDiffPatch的应用程序增量更新方法,从磁盘读入内存的数据量太大,耗费大量内存,并涉及多次对磁盘的随机访问,导致系统性能比较慢。
为解决以上技术问题,本发明首先提供一种部分更新文件数据块读写方法,包括:当覆盖线中待写入的偏移量与新版本文件实际待写入的偏移位置相等时,根据所述覆盖线判断所述覆盖线包含对一个以上全部重用的数据块的读写时,将旧版本文件中的全部重用的数据块的索引插入新版本文件的数据块索引中,并修改旧版本文件的索引信息;全部重用的数据块指的是,在旧版本应用程序更新过程中进行部分更新的部分更新文件中,同时属于新版本文件和旧版本文件的公共数据。
进一步地,该方法还包括:
当根据所述覆盖线判断所述覆盖线不包含对一个以上全部重用的数据块的读写时,则按照所述覆盖线的信息从部分更新文件中读取相应长度的数据到内存。
进一步地,根据所述覆盖线的信息中的数据长度判断所述覆盖线是否包含对一个以上全部重用的数据块的读写;所述数据长度为从第一个全部重用的块起始位置开始的子覆盖线长度。
进一步地,该方法还包括:依次遍历每一条覆盖线的信息直到最后完整地生成新版本文件,再将旧版本文件删除。
进一步地,并修改旧版本文件的索引信息,具体为:
将修改了索引信息的全部重用的数据块相邻的数据块在部分更新文件中的索引进行整理使其仍旧是一个完整的文件索引结构。
本发明还提供一种差分还原方法,其关键在于,包括步骤:
S1、读取差分包中一条覆盖线,判断该覆盖线中待写入的偏移量是否与新版本文件实际待写入的偏移位置相等,若相等则按照该覆盖线的信息从差分包中读取相应长度的数据到内存,若否则进入下一步;
S2、计算该覆盖线的信息中的数据长度并判断该覆盖线的信息中是否包含对一个以上全部重用的数据块的读写,若是则将旧版本文件中的全部重用的数据块的索引插入新版本文件的数据块索引中,并修改旧版本文件的索引信息,若否则按照该覆盖线的信息从旧版本文件中读取相应长度的数据到内存。
进一步地,在所述步骤S1前还包括步骤:
S0、将应用程序的旧版本子文件分为三类:全新文件、全旧文件和在旧版本应用程序更新过程中进行部分更新的文件;将部分更新文件中的数据块分为三类:不再使用的、全部重用的和部分重用的,其中不再使用的表示在新版本文件中不再使用的数据块,全部重用的表示同时属于新版本文件和旧版本文件的数据块,部分重用的表示部分在新版本文件中不再使用部分同时属于新版本文件和旧版本文件的数据块。
进一步地,在所述步骤S2中,按照该覆盖线的信息从旧版本文件中读取相应长度的数据到内存具体为:
从部分更新文件中读取部分重用的数据块上的有效数据到内存。
进一步地,该方法还包括在步骤S2之后的步骤:
S3、将从部分更新文件中读取部分重用的数据块上的有效数据与从差分包文件中读取的新的数据在内存拼接成新的数据块;
S4、判断内存是否已满,若是则将内存中的数据持久化到闪存上,若否则进入下一步;
S5、判断是否遍历完所有的覆盖线的信息,若是则删除旧版本文件,差分还原结束,若否则依照步骤S2、S3对下一条覆盖线的信息进行读取和执行相应的操作。
本发明还提供一种增量更新方法,其关键在于,包括步骤:
OTA服务器生成差分包文件;智能终端设备下载差分包文件;智能终端设备按照所述的差分还原方法对差分包文件进行差分还原,得到新版本文件
本发明提供的部分更新文件数据块读写方法及差分还原、增量更新方法,通过对闪存文件数据块进行分类并对不同类数据块采取不同的读写机制,具体是针对部分更新文件中全部重用的数据块(同时属于新版本文件和旧版本文件的公共数据,在差分还原中不发生任何改变的数据)采取修改索引的方式而避免对所有全部重用的数据块的直接读写,只需多一次信息判断即可节约大量内存,加快更新速度,从而在增量更新时提高内存利用率。
附图说明
图1是本发明实施例提供的增量更新方法的原理图;
图2是本发明实施例提供的一种差分还原方法的流程图;
图3是本发明实施例提供的文件v1.txt的fat表结构图;
图4是本发明实施例提供的文件v1.txt更新到文件v2.txt的fat表变化图;
图5是本发明实施例提供的更新后文件v1.txt和v2.txt在fat表中的结构图。
具体实施方式
下面结合附图具体阐明本发明的实施方式,实施例的给出仅仅是为了说明目的,并不能理解为对本发明的限定,包括附图仅供参考和说明使用,不构成对本发明专利保护范围的限制,因为在不脱离本发明精神和范围基础上,可以对本发明进行许多改变。
本发明实施例提供一种增量更新方法,其整体流程如图1所示,具体包括步骤:
OTA服务器根据新版本文件和旧版本文件生成差分包文件;
智能终端设备下载差分包文件;
智能终端设备按照差分还原方法对差分包文件进行差分还原,得到新版本文件。
本发明实施例还提供一种差分还原方法,其整体流程如图2所示,具体包括步骤:
S0、将应用程序的旧版本子文件分为三类:全新文件、全旧文件和介于全新和全旧的文件即部分更新文件(属于在旧版本应用程序更新过程中进行部分更新的文件);将部分更新文件中的数据块分为三类:不再使用的、全部重用的和部分重用的,其中不再使用的表示在新版本文件中不再使用的数据块,全部重用的表示同时属于新版本文件和旧版本文件的数据块,部分重用的表示部分在新版本文件中不再使用部分同时属于新版本文件和旧版本文件的数据块;
S1、读取差分包中一条覆盖线,判断该覆盖线中待写入的偏移量是否与新版本文件实际待写入的偏移位置相等,若相等则按照该覆盖线的信息从差分包中读取相应长度的数据到内存,若否则进入下一步;
S2、计算该覆盖线的信息中的数据长度并判断该覆盖线的信息中是否包含对一个以上全部重用的数据块的读写,若是则将旧版本文件中的全部重用的数据块的索引插入新版本文件的数据块索引中,并修改旧版本文件的索引信息,若否则按照该覆盖线的信息从旧版本文件中读取相应长度的数据到内存(从部分更新文件中读取部分重用的数据块上的有效数据到内存);
S3、将从部分更新文件中读取部分重用的数据块上的有效数据与从差分包文件中读取的新的数据在内存拼接成新的数据块;
S4、判断内存是否已满,若是则将内存中的数据持久化到闪存上,若否则进入下一步;
S5、判断是否遍历完所有的覆盖线的信息,若是则删除旧版本文件,差分还原结束,若否则依照步骤S2、S3对下一条覆盖线的信息进行读取和执行相应的操作。
由图1可知,当将差分包下载到本地后将进行差分还原流程生成最终的新版本文件。在整个差分还原的过程中都将按照差分包中的覆盖线信息对新版本文件进行构建。本实施例将覆盖线信息看作是新旧版本之间相同的数据段,大量的相同数据段(覆盖线)被概括为这样的三元组(oldPos,newPos,length)存在差分文件中。
差分还原开始后,本发明将依次遍历覆盖线信息,根据当前覆盖线中待写入的偏移量与新文件实际待写入的偏移位置进行对比,如果不相等说明当前覆盖线之前应该填入一段新的数据,这部分数据来自差分文件。若来自差分文件,则从差分文件的相应位置读取相应长度的数据到内存,这里的数据位置是从差分包的起始偏移量开始,数据长度可以根据当前覆盖线信息与新文件实际待写入的偏移位置做差运算得到。如果当前覆盖线中待写入的偏移量与新文件实际待写入的偏移位置相等,则说明应该按照当前的覆盖线信息从旧文件中读取相应长度的数据。此时,本发明需要根据覆盖线信息中的数据长度判断当前的覆盖线信息是否包含一个或多个全部重用的数据块。在这里需要注意的是,本发明计算数据长度时需要计算净覆盖值,即当前覆盖线长度要减去第一个块和最后一个块上的碎片长度。净覆盖值才能准确代表能够覆盖的净数据块数量。若净覆盖长度不足一个块则按照正常的读写规则从闪存上读取相应长度的数据到内存;若大于等于一个块,则无需读取旧文件的这些块,而是修改这些块的索引信息,即将旧文件中的全部重用的数据块索引插入新文件的数据块索引中,再修改旧文件的索引信息。按照上述流程可以完成一条覆盖线的更新,若读入内存数据已满则需要将内存的数据持久化到磁盘上,同时更新新文件的索引信息。依次遍历每一条覆盖线信息直到最后完整地生成新版本文件,最后再将旧版本文件删除即可完成本地的增量更新过程。
对比原HDiffPatch差分更新算法,本发明减少了所有全部重用的数据块的读写,只需多一次信息判断即可节约大量内存,并且加快更新速度。
根据增量更新的思想,新旧版本文件存在大量相同的数据,在本地进行更新时会从闪存上读取该大量相同数据,还有小部分数据是被淘汰的。以Android移动系统上的应用程序为例,这些应用程序(即apk文件)的本质都是一个压缩包文件。在增量更新的过程中,每个应用程序包内的子文件都会发生不同程度的更新。本发明将包内的子文件分成了三类:全旧文件,全新文件以及介于全新和全旧之间的文件(部分更新文件)。其中,全旧文件指的是该类子文件的数据并没有发生任何更新;全新文件指的是该类文件是新版本应用程序中新增的,在旧版本应用程序中完全不存在的数据;部分更新文件指的是该类文件中包含部分可重用的数据和部分被淘汰的数据以及部分新增数据,该类文件在增量更新过程中发生了较大的改变。
在更新过程中,旧文件中的部分更新文件类子文件会被读入内存与差分包中的新数据进行差分还原。而部分更新文件类子文件虽然数量占比小但单个文件数据量较大,一般都超过原文件大小的50%。因此,为了减少I/O数据量,本发明从物理块级别将部分更新文件类子文件数据块分为三类:①不再使用的,②全部重用的,③部分重用的。其中,不再使用的数据块在新版本中不再使用,版本更新时需要丢弃这部分旧数据。全部重用的数据块是新旧版本的公共部分,是全部有效的,这些数据块上的数据在版本更新时不需要任何修改。部分重用的数据块上的数据只有一部分是新旧版本镜像共有的数据,在更新时只访问这些数据块上的部分数据。
本发明选择了六款不同类别的(例如:社交媒体、游戏、短视频等)最受用户欢迎的应用程序进行增量更新测试,并且每个应用程序都测试了相邻的十个版本,统计分析了上述三类数据块的读写情况。本发明定义了一个“块重用率”,计算公式为:
块重用率=全部重用的数据块数量/部分更新文件子文件数据块总数量×100%
结果发现,每一类应用程序在相邻版本更新时的块重用率几乎都超过了50%,最高的甚至超过了99%。从这个结果可以分析得到,在客户端进行增量更新时,读入内存的数据大部分都是全部重用的类数据块,然而这类数据块的特点是更新时无需做任何修改。
因此,本发明通过针对不同的数据块采取不同的读写机制来减少不必要数据块(如全部重用的)的读写,块重用率就代表了本发明的改进有多大的提升空间。
由上述结论可以发现增量更新过程中对部分更新文件这类子文件的访问存在明显的资源开销(在于全部重用的块的读写上),因此,本发明针对差分还原的场景修改闪存设备上的文件系统的读写机制来提升差分还原的速率和资源利用率。
具体的,本发明提供一种部分更新文件数据块的读写方法,图2中已有介绍,这里再强调一次,该方法包括:当覆盖线中待写入的偏移量与新版本文件实际待写入的偏移位置相等时,根据覆盖线判断覆盖线包含对一个以上全部重用的数据块的读写时,将旧版本文件中的全部重用的数据块的索引插入新版本文件的数据块索引中,并修改旧版本文件的索引信息。当根据覆盖线判断覆盖线不包含对一个以上全部重用的数据块的读写时,则按照覆盖线的信息从部分更新文件中读取相应长度的数据到内存。
参照图2的差分还原流程,本发明按照覆盖线信息,从差分包文件中读取新的数据和从部分更新文件中读取部分重用的数据块上的有效数据在内存拼接成新的数据块,当内存已满需要将数据持久化到闪存上时,在内存中拼接的数据需要写入磁盘的空闲块。这个过程中由于是按照覆盖线信息读取闪存上有用的数据,因此自动避免访问不再使用的这类数据块,这类数据块还是正常作为旧文件的一部分存储在闪存上。
由于全部重用的类数据块上的数据是完全不变的,因此本发明就不需要将该类数据块像部分重用的数据块的数据一样读入内存再持久化,为了避免整这个重复读写的过程。当判断当前需要拼接的数据属于全部重用的数据块时,本发明将找到旧文件中该部分数据块的索引信息,并将其链接到当前构建的新文件索引信息中。全部重用的数据块在闪存上的物理位置一直保持不变,本发明只是修改了这类数据块在内存的索引信息,就可以减少这类数据块在磁盘和内存之间的重复I/O。需要注意的是,当本发明修改全部重用的数据块的索引之后还要将其相邻的数据块在旧文件中的索引进行整理使其仍旧是一个完整的文件索引结构。
本发明以当今大多数智能移动设备使用的FAT文件系统为例,来阐述如何通过修改索引来减少对大量闪存数据的读写。
在FAT文件系统结构中,fat表(File Allocation Table)记录了文件所有簇的连接关系,即fat表就是FAT文件系统的目录树。每一个fat表项的内容为下一个簇的簇号。每一个文件都有一个起始簇号,文件系统会为每个文件选择一个可用的位置作为文件的起始簇号。如图3所示为文件v1.txt的fat表。文件v1.txt的起始簇号为0x0002,它的大小可以使用六个簇。每个簇都包含一个指向文件中下一个簇的指针,或者一个位于0xFFFF的文件结束(EOF)指示器,表示这个簇是文件的终点。
在图4中本发明构建了文件v2.txt,这是v1.txt更新之后的文件,v2.txt的起始簇号为0x0008。下一个簇为0x0009,由当前覆盖线信息计旧文件中0x0003开始的三个连续的簇都为全部重用的。因此,需要将fat表中簇号为0x0009的内容更新为指向全部重用的簇号0x0003,并且0x0003、0x0004、0x0005这三个在v1.txt中连续的簇都是全部重用的,因此这三个簇之间的指针关系不变,但是0x0005的下一个簇不能再指向旧文件中的数据,而应该更新为指向v2.txt新分配的簇号0x0010。在旧文件中指向0x0003号簇的上一个簇应该更新为指向0x0005号簇的下一个簇。便于讨论,这里本发明将一个簇的大小等同于一个块的大小。
依此类推,当构建完v2.txt之后,就能得到如图5所示的fat表,不难发现v2.txt占了十个簇,其中有四个簇是通过修改FAT表信息来帮助组建该文件的。在这个过程中,本发明优化了四个簇大小的内存空间,以及减少了四个簇大小的读写时间。
除此之外,从图5中可以发现此时v1.txt的FAT索引已经发生了巨大变化,当构建完新版本文件后本发明还会将闪存上的旧版本文件删除,此时旧版本文件对应的FAT索引表也会回收。至此,客户端上的更新完成。
本发明实施例是以FAT文件系统为例展示了如何通过修改索引的方法来提升增量更新的性能。事实上,其他主流的移动系统的文件系统,如EXT4、F2FS等,也可以使用本发明的方法来提高增量更新的性能,并且可能会得到更好的性能优化。
综上所述,本发明实施例提供的部分更新文件数据块读写方法及差分还原、增量更新方法,通过对闪存文件数据块进行分类并对不同类数据块采取不同的读写机制,具体是针对部分更新文件中全部重用的数据块(同时属于新版本文件和旧版本文件的公共数据,在差分还原中不发生任何改变的数据)采取修改索引的方式而避免对所有全部重用的数据块的直接读写,只需多一次信息判断即可节约大量内存,加快更新速度,从而在增量更新时提高内存利用率。
上述实施例为本发明较佳的实施方式,但本发明的实施方式并不受上述实施例的限制,其他的任何未背离本发明的精神实质与原理下所作的改变、修饰、替代、组合、简化,均应为等效的置换方式,都包含在本发明的保护范围之内。
Claims (10)
1.部分更新文件数据块读写方法,其特征在于,包括:
当覆盖线中待写入的偏移量与新版本文件实际待写入的偏移位置相等时,根据所述覆盖线判断所述覆盖线包含对一个以上全部重用的数据块的读写时,将旧版本文件中的全部重用的数据块的索引插入新版本文件的数据块索引中,并修改旧版本文件的索引信息;全部重用的数据块指的是,在旧版本应用程序更新过程中进行部分更新的部分更新文件中,同时属于新版本文件和旧版本文件的公共数据。
2.根据权利要求1所述的部分更新文件数据块读写方法,其特征在于,该方法还包括:
当根据所述覆盖线判断所述覆盖线不包含对一个以上全部重用的数据块的读写时,则按照所述覆盖线的信息从部分更新文件中读取相应长度的数据到内存。
3.根据权利要求2所述的部分更新文件数据块读写方法,其特征在于:根据所述覆盖线的信息中的数据长度判断所述覆盖线是否包含对一个以上全部重用的数据块的读写;所述数据长度为从第一个全部重用的块起始位置开始的子覆盖线长度。
4.根据权利要求2所述的部分更新文件数据块读写方法,其特征在于,该方法还包括:依次遍历每一条覆盖线的信息直到最后完整地生成新版本文件,再将旧版本文件删除。
5.根据权利要求1所述的部分更新文件数据块读写方法,其特征在于,并修改旧版本文件的索引信息,具体为:
将修改了索引信息的全部重用的数据块相邻的数据块在部分更新文件中的索引进行整理使其仍旧是一个完整的文件索引结构。
6.差分还原方法,其特征在于,包括步骤:
S1、读取差分包中一条覆盖线,判断该覆盖线中待写入的偏移量是否与新版本文件实际待写入的偏移位置相等,若相等则按照该覆盖线的信息从差分包中读取相应长度的数据到内存,若否则进入下一步;
S2、计算该覆盖线的信息中的数据长度并判断该覆盖线的信息中是否包含对一个以上全部重用的数据块的读写,若是则将旧版本文件中的全部重用的数据块的索引插入新版本文件的数据块索引中,并修改旧版本文件的索引信息,若否则按照该覆盖线的信息从旧版本文件中读取相应长度的数据到内存。
7.根据权利要求6所述的差分还原方法,其特征在于,在所述步骤S1前还包括步骤:
S0、将应用程序的旧版本子文件分为三类:全新文件、全旧文件和在旧版本应用程序更新过程中进行部分更新的文件即部分更新文件;将部分更新文件中的数据块分为三类:不再使用的、全部重用的和部分重用的,其中不再使用的表示在新版本文件中不再使用的数据块,全部重用的表示同时属于新版本文件和旧版本文件的数据块,部分重用的表示部分在新版本文件中不再使用部分同时属于新版本文件和旧版本文件的数据块。
8.根据权利要求7所述的差分还原方法,其特征在于:在所述步骤S2中,按照该覆盖线的信息从旧版本文件中读取相应长度的数据到内存具体为:
从部分更新文件中读取部分重用的数据块上的有效数据到内存。
9.根据权利要求8所述的差分还原方法,其特征在于,该方法还包括在步骤S2之后的步骤:
S3、将从部分更新文件中读取部分重用的数据块上的有效数据与从差分包文件中读取的新的数据在内存拼接成新的数据块;
S4、判断内存是否已满,若是则将内存中的数据持久化到闪存上,若否则进入下一步;
S5、判断是否遍历完所有的覆盖线的信息,若是则删除旧版本文件,差分还原结束,若否则依照步骤S2、S3对下一条覆盖线的信息进行读取和执行相应的操作。
10.增量更新方法,其特征在于,包括步骤:
OTA服务器生成差分包文件;智能终端设备下载差分包文件;智能终端设备按照权利要求6~9任一项所述的差分还原方法对差分包文件进行差分还原,得到新版本文件。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202311042684.7A CN116860309A (zh) | 2023-08-18 | 2023-08-18 | 部分更新文件数据块读写方法及差分还原、增量更新方法 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202311042684.7A CN116860309A (zh) | 2023-08-18 | 2023-08-18 | 部分更新文件数据块读写方法及差分还原、增量更新方法 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN116860309A true CN116860309A (zh) | 2023-10-10 |
Family
ID=88228835
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202311042684.7A Pending CN116860309A (zh) | 2023-08-18 | 2023-08-18 | 部分更新文件数据块读写方法及差分还原、增量更新方法 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN116860309A (zh) |
-
2023
- 2023-08-18 CN CN202311042684.7A patent/CN116860309A/zh active Pending
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US7802245B2 (en) | Methods and apparatus for performing in-service upgrade of software in network processor | |
CN107247603A (zh) | 支持固件自动恢复功能的远程升级方法与系统 | |
US7930691B2 (en) | Methods and apparatus for updating data structures during in-service upgrade of software in network processor | |
CN102289382B (zh) | 电视软件更新方法、装置及系统 | |
CN111258587B (zh) | 一种安卓应用插件化的实现方法、装置、设备及存储介质 | |
US20030217197A1 (en) | Preparation for software on demand system | |
CN113721967B (zh) | 差分包生成方法,差分包生成设备,及升级方法 | |
CN105045631A (zh) | 一种升级客户端侧应用程序的方法和装置 | |
CN104932909A (zh) | 一种终端软件升级方法及装置 | |
CN111475195A (zh) | 一种固件升级方法、装置和系统 | |
CN111176717B (zh) | 生成安装包的方法、装置及电子设备 | |
CN105786542A (zh) | 智能设备及其系统升级方法 | |
CN105786549A (zh) | 智能设备及其升级方法 | |
CN105049514A (zh) | 一种文件下载方法和装置 | |
CN114564227A (zh) | 应用程序更新方法、装置、电子设备和存储介质 | |
CN111488483B (zh) | 曲库更新方法、装置、终端和非临时性计算机可读存储介质 | |
CN114443598A (zh) | 写数据方法、装置、计算机设备及存储介质 | |
CN112416388A (zh) | 智能移动终端软件升级方法及其升级控制系统 | |
CN116860309A (zh) | 部分更新文件数据块读写方法及差分还原、增量更新方法 | |
CN107783778B (zh) | 一种基于特征值查表法的增量升级方法 | |
CN114218256B (zh) | 访问语句处理方法、装置、设备及存储介质 | |
CN113535206B (zh) | 多版本代码升级方法及系统 | |
CN112416386A (zh) | 软件升级的方法、装置、系统以及介质 | |
CN114338395A (zh) | 一种c/s通信网管方法、存储介质、电子设备及系统 | |
CN111586170A (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 |