CN108762798A - 一种增量更新文件的方法及装置 - Google Patents
一种增量更新文件的方法及装置 Download PDFInfo
- Publication number
- CN108762798A CN108762798A CN201710278719.5A CN201710278719A CN108762798A CN 108762798 A CN108762798 A CN 108762798A CN 201710278719 A CN201710278719 A CN 201710278719A CN 108762798 A CN108762798 A CN 108762798A
- Authority
- CN
- China
- Prior art keywords
- piecemeal
- verified
- check value
- value
- checklist
- 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
- 238000000034 method Methods 0.000 title claims abstract description 68
- 238000012795 verification Methods 0.000 claims abstract description 108
- 238000012360 testing method Methods 0.000 claims description 14
- 235000013399 edible fruits Nutrition 0.000 claims description 2
- 238000012423 maintenance Methods 0.000 abstract description 5
- 230000006870 function Effects 0.000 description 9
- 230000008569 process Effects 0.000 description 9
- 238000012545 processing Methods 0.000 description 6
- 238000004364 calculation method Methods 0.000 description 5
- 230000006854 communication Effects 0.000 description 5
- 125000004122 cyclic group Chemical group 0.000 description 5
- 238000010586 diagram Methods 0.000 description 5
- 238000005516 engineering process Methods 0.000 description 5
- 238000004891 communication Methods 0.000 description 4
- 238000007726 management method Methods 0.000 description 4
- 230000006835 compression Effects 0.000 description 2
- 238000007906 compression Methods 0.000 description 2
- 238000012905 input function Methods 0.000 description 2
- 239000004973 liquid crystal related substance Substances 0.000 description 2
- 230000007774 longterm Effects 0.000 description 2
- 238000010295 mobile communication Methods 0.000 description 2
- 230000003287 optical effect Effects 0.000 description 2
- 230000002155 anti-virotic effect Effects 0.000 description 1
- 230000005540 biological transmission Effects 0.000 description 1
- 230000008859 change Effects 0.000 description 1
- 238000005314 correlation function Methods 0.000 description 1
- 230000001419 dependent effect Effects 0.000 description 1
- 238000013461 design Methods 0.000 description 1
- 238000001514 detection method Methods 0.000 description 1
- 230000005611 electricity Effects 0.000 description 1
- 239000012634 fragment Substances 0.000 description 1
- 230000005484 gravity Effects 0.000 description 1
- 210000003127 knee Anatomy 0.000 description 1
- 238000012986 modification Methods 0.000 description 1
- 230000004048 modification Effects 0.000 description 1
- 238000012544 monitoring process Methods 0.000 description 1
- 230000000750 progressive effect Effects 0.000 description 1
- 230000003068 static effect Effects 0.000 description 1
- 238000010897 surface acoustic wave method Methods 0.000 description 1
- 230000000007 visual effect Effects 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
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F40/00—Handling natural language data
- G06F40/10—Text processing
- G06F40/194—Calculation of difference between files
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- General Engineering & Computer Science (AREA)
- Software Systems (AREA)
- Physics & Mathematics (AREA)
- General Physics & Mathematics (AREA)
- Computer Security & Cryptography (AREA)
- Health & Medical Sciences (AREA)
- Artificial Intelligence (AREA)
- Audiology, Speech & Language Pathology (AREA)
- Computational Linguistics (AREA)
- General Health & Medical Sciences (AREA)
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
Abstract
本发明公开了一种增量更新文件的方法,用于降低增量更新文件的服务端运营维护成本,该方法应用于客户端,该方法可以包括:确定源文件,获取与源文件对应的目标文件的校验表;利用源文件以及校验表对源文件与目标文件的差异进行校验;根据校验的结果生成重复数据索引和差异数据索引;利用差异数据索引从服务端下载源文件与目标文件间的差异数据,及利用重复数据索引从源文件中确定源文件与目标文件间的重复数据;及将重复数据以及差异数据进行拼接,以生成目标文件。本发明还公开了一种增量更新文件的装置。
Description
技术领域
本发明涉及互联网技术领域,具体涉及一种增量更新文件的方法及装置。
背景技术
增量更新是指在进行更新操作时,只更新需要改变的地方,不需要更新或者已经更新过的地方则不会重复更新,增量更新与完全更新相对。这种更新的概念应用范围比较广泛,凡是需要进行数据更新的地方都会用到,例如软件更新、数据库更新、杀毒软件的病毒库更新、路由表更新等等。
在现有技术中存在一种增量更新文件的算法,即远程同步(remote synchronize,rsync)算法,采用服务器/客户端(Client/Server,C/S)架构,计算差量数据的流程在服务端执行,需要有较大服务端资源和技术做支持,使服务器的运行维护成本较高。
发明内容
有鉴于此,本发明提供一种增量更新文件的方法及装置,以解决现有技术中增量更新文件成本较高的技术问题。
为解决上述问题,本发明提供的技术方案如下:
一种增量更新文件的方法,所述方法应用于客户端,所述方法包括:
确定源文件,获取与所述源文件对应的目标文件的校验表;
利用所述源文件以及所述校验表对所述源文件与目标文件的差异进行校验;
根据校验的结果生成重复数据索引和差异数据索引;
利用所述差异数据索引从服务端下载所述源文件与所述目标文件间的差异数据,及利用所述重复数据索引从所述源文件中确定所述源文件与所述目标文件间的重复数据;及
将所述重复数据以及所述差异数据进行拼接,以生成所述目标文件。
一种增量更新文件的装置,所述装置应用于客户端,所述装置包括:
获取单元,用于确定源文件,获取与所述源文件对应的目标文件的校验表;
校验单元,用于利用所述源文件以及所述校验表对所述源文件与目标文件的差异进行校验;
生成单元,用于根据校验的结果生成重复数据索引和差异数据索引;
下载单元,用于利用所述差异数据索引从服务端下载所述源文件与所述目标文件间的差异数据,及利用所述重复数据索引从所述源文件中确定所述源文件与所述目标文件间的重复数据;及
拼接单元,用于将所述重复数据以及所述差异数据进行拼接,以生成所述目标文件。
本发明实施例通过客户端从服务端获取与源文件对应的目标文件的校验表,在客户端完成源文件与目标文件之间差异的校验,生成重复数据索引以及差异数据索引,根据复数据索引以及差异数据索引确定重复数据以及差异数据,从而在客户端拼接生成目标文件,在该过程中服务端仅需提供目标文件以及目标文件的校验表,确定重复数据和差异数据在客户端完成,降低了服务端的运营维护成本。
附图说明
图1为本发明实施例中提供的增量更新文件的方法实施例一的流程图;
图2为本发明实施例中源文件与目标文件的示意图;
图3为本发明实施例中提供的增量更新文件的方法实施例二的流程图;
图4为本发明实施例中提供的增量更新文件的方法实施例三的流程图;
图5为本发明实施例中提供的增量更新文件的方法实施例四的示意图;
图6为本发明实施例中提供的增量更新文件的装置实施例的示意图;
图7为本发明实施例中提供的一种终端的示意图。
具体实施方式
为使本发明的上述目的、特征和优点能够更加明显易懂,下面结合附图和具体实施方式对本发明实施例作进一步详细的说明。
现有技术的rsync算法执行增量更新的过程如下:(1)在客户端将源文件切分为若干个分块,对每个分块分别计算弱校验值以及强校验值,弱校验采用Adler32算法,强校验采用MD5算法,在本地生成源文件的校验表,该校验表中包括源文件各个分块对应的强校验值以及弱校验值,客户端将源文件的校验表发送给服务端;(2)服务端将校验表保存在二级哈希表中,计算目标文件第一个分块的弱校验值以及强校验值,在校验表中查找是否存在该分块的弱校验值以及强校验值,若查找一致则向后偏移一个分块继续计算该分块的弱校验值以及强校验值重新在校验表中查找,如果没有查找到计算向后偏移一个字节的分块的弱校验值以及强校验值重新在校验表中查找,直到对目标文件完成循环校验查找,从而得到重复分块的序号以及差异数据返回给客户端;(3)客户端根据差量数据以及本地源文件进行拼接即可得到最终的目标文件。
但是,在现有技术中rsync算法采用的是C/S架构,计算差量数据的流程放在服务端,需要有较大服务端资源和技术做支撑,成本较高;且增量更新依赖客户端中源文件的完整性,如果源文件损坏或被篡改则无法完成增量更新文件;同时在循环校验查找时对每一分块都一次性生成弱校验值以及强校验值,增加了运算量、降低了服务端性能;另外,rsync的弱校验算法采用的是Adler32算法,大量的分片计算需要耗费大量的时间,也影响了服务器整体的性能。
为此,本发明实施例中提供了一种增量更新文件的方法及装置,基于rsync算法,通过将生成校验表和计算差量的流程都转移到客户端来解除对服务端的高依赖,同时优化Adler32算法,且逐个计算Adler32中的A值、B值以及强校验值以减少计算量,提高整体性能。
参见图1所示,示出了本发明实施例中提供的增量更新文件的方法实施例一,本实施例将从增量更新文件的装置角度进行描述,该增量更新文件的装置具体可以集成在客户端中,该客户端可以装载在终端中,该终端具体可以为智能手机、平板电脑、电子书阅读器、MP3(Moving Picture Experts Group Audio Layer III,动态影像专家压缩标准音频层面3)播放器、MP4(Moving Picture Experts Group Audio Layer IV,动态影像专家压缩标准音频层面3)播放器、膝上型便携计算机和台式计算机等等,本发明实施例可以包括以下步骤:
步骤101:确定源文件,获取与源文件对应的目标文件的校验表。
源文件即在客户端本地需要更新的文件,目标文件即源文件在更新之后的最新文件,在服务端可以生成目标文件的校验表,在本发明的一些可能的实现方式中,校验表中可以包括目标文件各个分块对应的校验值。
在服务端首先可以对目标文件进行分块,每个分块具有不同的分块标识,且每个分块具有预设的块长,假设目标文件各个分块的块长为n个字节,n为正整数;然后可以对各个分块分别计算弱校验值和强校验值,弱校验值可以通过传统的Adler32算法计算,也可以通过本发明中提供的改进的Adler32算法计算,本发明中提供的改进的Adler32算法将在后续实施例中说明。其中,每个分块的弱校验值可以包括第一弱校验值A以及第二弱校验值B,强校验值可以通过MD5(Message-Digest Algorithm 5,信息-摘要算法5)算法计算,即每个分块的强校验值可以为MD5值。
在实际应用中可以将目标文件以及目标文件的校验表上传到CDN(ContentDelivery Network,内容分发网络)模块存储,客户端在需要进行增量更新文件时可以从服务端的CDN模块获取源文件对应的目标文件的校验表。例如,目标文件被分为5个分块,校验表中包括每个分块标识分别对应的弱校验值A、B以及强校验值MD5值。
步骤102:利用源文件以及校验表对源文件与目标文件的差异进行校验。
利用源文件以及目标文件的校验表在客户端可以循环校验获得源文件与目标文件的差异,获得校验的结果。例如,参见图2所示,假设目标文件包括5个分块,每个分块为4字节,利用源文件以及校验表对源文件与目标文件的差异进行校验,可以获得校验的结果为源文件的前4个字节与目标文件的第2个分块相同,源文件的第5至8个字节与目标文件的第3个分块相同,则目标文件的第1、4、5个分块与源文件是存在差异的。而利用源文件以及校验表对源文件与目标文件的差异进行校验的具体实现方式可以参见后续实施例中的说明。
步骤103:根据校验的结果生成重复数据索引和差异数据索引。
根据校验的结果可以生成重复数据索引以及差异数据索引。重复数据索引可以为目标文件中的分块标识,以及目标文件中的这些分块标识与源文件中相同部分的对应关系,标识目标文件与源文件相同的分块,差异数据索引也可以为目标文件中的分块标识,标识源文件与目标文件存在差异的分块,例如,目标文件有5个分块,源文件的前4个字节与目标文件的第2个分块相同,源文件的第5至8个字节与目标文件的第3个分块相同,则重复数据索引可以为目标文件中的第2、3个分块,目标文件中的第2分块与源文件中的前4个字节相同、目标文件中的第3分块与源文件中的第5至8个字节相同,差异数据索引可以为目标文件中的第1、4、5个分块。
步骤104:利用差异数据索引从服务端下载源文件与目标文件间的差异数据,及利用重复数据索引从源文件中确定源文件与目标文件间的重复数据。
步骤105:将重复数据以及差异数据进行拼接,以生成目标文件。
在利用差异数据索引从服务端下载源文件与目标文件间的差异数据以及利用重复数据索引从源文件中确定源文件与目标文件间的重复数据之后,可以在客户端完成重复数据以及差异数据的拼接,在客户端拼接生成一个与服务端保存的目标文件一致的目标文件,从而实现将客户端中的源文件更新为目标文件的过程。例如,差异数据索引为目标文件中的第1、4、5个分块,则在客户端可以下载到目标文件的第1、4、5个分块的内容,根据重复数据索引目标文件中的第2、3个分块,目标文件中的第2分块与源文件中的前4个字节相同、目标文件中的第3分块与源文件中的第5至8个字节相同,则可以从源文件中确定前4个字节的内容作为目标文件的第2分块的内容,从源文件中确定第5至8个字节的内容作为目标文件的第3分块的内容,最后按照目标文件分块的顺序,将5个分块的内容进行拼接生成最终的目标文件。
本发明实施例通过客户端从服务端获取与源文件对应的目标文件的校验表,在客户端完成源文件与目标文件之间差异的校验,生成重复数据索引以及差异数据索引,根据复数据索引以及差异数据索引确定重复数据以及差异数据,从而在客户端拼接生成目标文件,在该过程中服务端仅需提供目标文件以及目标文件的校验表,确定重复数据和差异数据在客户端完成,降低了服务端的运营维护成本。另外,本发明实施例不依赖客户端源文件的完整性,即使源文件损坏或者被篡改也能完成文件增量更新。
在本发明一些可能的实现方式中,参见图3所示,示出了本发明实施例中提供的增量更新文件的方法实施例二,在本实施例中利用源文件以及校验表对源文件与目标文件的差异进行校验的具体实现可以包括:
步骤301:将源文件的前n个字节确定为待校验分块。
步骤302:计算待校验分块的校验值,查找校验表中是否存在与待校验分块的校验值相同的校验值,获得查找结果。
步骤303:如果查找结果为校验表中存在与待校验分块的校验值相同的校验值,则将待校验分块之后的n个字节确定为待检验分块,返回步骤302重复执行计算待校验分块的校验值,查找校验表中是否存在与待校验分块的校验值相同的校验值,获得查找结果,直到源文件被校验完成。
如果待校验分块的校验值与为校验表中的某个校验值相同,则代表该待校验分块与目标文件中的某个分块相同,在目标文件中该分块的标识可以被确定为重复数据索引,并后移一个分块继续校验。
步骤304:如果查找结果为校验表中不存在与待校验分块的校验值相同的校验值,则将待校验分块去除第一个字节,并将该去除的第一个字节之后的n个字节确定为待检验分块,返回步骤302重复执行计算待校验分块的校验值,查找校验表中是否存在与待校验分块的校验值相同的校验值,获得查找结果,直到源文件被校验完成。
如果待校验分块的校验值与校验表中的各个校验值均相同,则代表该待校验分块与目标文件中的任意一个分块均相同,则后移一个字节继续校验。
则在本发明的一些可能的实现方式中,根据校验的结果生成重复数据索引和差异数据索引的具体实现可以包括:
如果查找结果为校验表中存在与待校验分块的校验值相同的校验值,则将匹配校验值对应的目标文件分块的标识确定为重复数据索引,匹配校验值为校验表中与待校验分块的校验值相同的校验值;
在源文件被校验完成后,将校验表中未被确定为重复数据索引的目标文件分块的标识确定为差异数据索引。
在本发明一些可能的实现方式中,参见图4所示,示出了本发明实施例中提供的增量更新文件的方法实施例三,在计算待校验分块的校验值,查找校验表中是否存在与待校验分块的校验值相同的校验值,获得查找结果的具体实现可以包括:
步骤401:计算待校验分块的第一弱校验值。
步骤402:在校验表中查找是否存在与待校验分块的第一弱校验值相同的第一弱校验值,如果在校验表中存在与待校验分块的第一弱校验值相同的第一弱校验值,进入步骤403,如果在校验表中不存在与待校验分块的第一弱校验值相同的第一弱校验值,进入步骤408。
步骤403:计算待校验分块的第二弱校验值。
步骤404:在校验表中查找是否存在与待校验分块的第二弱校验值相同的第二弱校验值,如果在校验表中存在与待校验分块的第二弱校验值相同的第二弱校验值,进入步骤405,如果在校验表中不存在与待校验分块的第二弱校验值相同的第二弱校验值,进入步骤408。
步骤405:计算待校验分块的强校验值。
步骤406:在校验表中查找是否存在与待校验分块的强校验值相同的强校验值,如果在校验表中存在与待校验分块的强校验值相同的强校验值,进入步骤407,如果在校验表中不存在与待校验分块的强校验值相同的强校验值,进入步骤408。
步骤407:将查找结果确定为校验表中存在与待校验分块的校验值相同的校验值。
步骤408:将查找结果确定为校验表中不存在与待校验分块的校验值相同的校验值。
也就是说,如果在校验表中不存在与待校验分块的第一弱校验值相同的第一弱校验值,或者,如果在校验表中不存在与待校验分块的第二弱校验值相同的第二弱校验值,或者,如果在校验表中不存在与待校验分块的强校验值相同的强校验值,将查找结果确定为校验表中不存在与待校验分块的校验值相同的校验值;如果在校验表中存在与待校验分块的强校验值相同的强校验值,将查找结果确定为校验表中存在与待校验分块的校验值相同的校验值。
在本发明实施中,对于待校验模块的第一弱校验值、第二弱校验值以及强校验值并不是一次性计算出来,而是在第一弱校验值确定在校验表中后再计算第二弱校验值,在第二弱校验值确定在校验表中后再计算强校验值,在第一弱校验值或者第二弱校验值不在校验表中时无需后续计算,从而减少了计算量。即弱校验速度较快,但是碰撞率较高,强校验计算量较大,碰撞率较低,在弱校验过程中如果确定弱校验值在校验表中为了校验的准确性则需要进一步进行强校验,而在弱校验过程中如果确定弱校验值不在校验表中则无需再进行计算量大的强校验过程。
在发明实施例中,待校验分块的第一弱校验值可以为该待校验分块利用Adler算法或者本发明改进的Adler算法计算得到的A值,待校验分块的第二弱校验值可以为该待校验分块利用Adler算法或者本发明改进的Adler算法计算得到的B值,待校验分块的强校验值可以为待校验分块的MD5值。
在本发明一些可能的实现方式中,从服务端获取目标文件的校验表可以为二级哈希表,即以第一弱校验值A为Key,第二弱校验值B以及MD5值为value,再以第二弱校验值B为Key,MD5值为value。即计算得到了第一弱校验值A在二级哈希表中查找是否存在该第一弱校验值A,如果存在该第一弱校验值A,可以获得该第一弱校验值A对应的多组第二校验值B+MD5值的组合,计算得到第二校验值B后可以在上述多组第二校验值B+MD5值的组合中查找是否存在该第二校验值B,如果存在该第二弱校验值B,可以获得该第二弱校验值B对应的多个MD5值,计算得到MD5值后可以在上述多个MD5值中查找是否存在该MD5值,如果存在则可以确定在校验表中存在与待校验分块的校验值相同的校验值。而如果在校验表中不存在待检验分块的第一校验值A或者第二校验值B或者MD5值,则可以确定在校验表中不存在与待校验分块的校验值相同的校验值。
以下再对本发明实施例中提供的改进的Adler算法进行说明,在本发明一些可能的实现方式中,将所述源文件的前n个字节确定为待校验分块之后,计算待校验分块的第一弱校验值的具体实现可以包括:
按照Adler32算法计算所述待校验分块的第一校验和,将所述待校验分块的第一校验和取模后生成所述待校验分块的第一弱校验值;
将所述源文件的前n个字节确定为待校验分块之后,所述计算所述待校验分块的第二弱校验值的具体实现可以包括:
按照Adler32算法计算所述待校验分块的第二校验和,将所述待校验分块的第二校验和取模后生成所述待校验分块的第二弱校验值。
也就是说,在将所述源文件的前n个字节确定为待校验分块之后,可以按照现有的Adler32算法计算待校验分块的第一校验值A以及第二校验值B。在本发明一些可能的实现方式中,将所述待校验分块去除第一个字节,并将该去除的第一个字节之后的n个字节确定为待检验分块之后,所述计算所述待校验分块的第一弱校验值的具体实现可以包括:
将第一值减去第二值得到第三值,所述第一值为所述待校验分块之前一个待校验分块的第一校验和,所述第二值为所述待校验分块之前一个待校验分块的第一个字节值;
将所述第三值加上第四值得到所述待校验分块的第一校验和,所述第四值为所述待校验分块的最后一个字节值;
将所述待校验分块的第一校验和取模后生成所述待校验分块的第一弱校验值。
将所述待校验分块去除第一个字节之后的n个字节确定为待检验分块之后,所述计算所述待校验分块的第二弱校验值的具体实现可以包括:
将第五值乘以n得到第六值,所述第五值为所述待校验分块之前一个待检验分块的第一个字节值;
将第七值减去所述第六值得到第八值,所述第七值为所述待校验分块之前一个待校验分块的第二校验和;
将所述第八值加上第九值得到所述待校验分块的第二校验和,所述第九值为所述待校验分块的第一校验和;
将所述待校验分块的第二校验和取模后生成所述待校验分块的第二弱校验值。
Adler算法可以生成32位校验值,用于区分比较文件分块内容是否相同,校验值由16位的A、16位的B两部分构成,其中,第一校验值A与第二校验值B的计算公式如下:
A=(1+D1+D2+...+Dn)(mod 65521);B=[(1+D1)+(1+D1+D2)+...+(1+D1+D2+...+Dn)](mod 65521),1+D1+D2+...+Dn可以被称为第一校验和,(1+D1)+(1+D1+D2)+...+(1+D1+D2+...+Dn)可以被称为第二校验和,由于65521是65536范围内的最大素数,因此mod=65521即可。其中,n为分块的字节数,例如分块有5个字节,则n为5,A=(1+D1+D2+D3+D4+D5)(mod 65521),B=[(1+D1)+(1+D1+D2)+...+(1+D1+D2+...+D5)](mod 65521)。
该公式可以等价于:A+=data[i];B+=A。
在本实施例中,对Adler算法进行了改进,假设第一个分块计算A值时的第一校验和为A1,后移一个字节的第二个分块计算A值时的第一校验和为A2,则可知A2-A1=Dn+1-D1,则A2=A1+Dn+1-D1,即计算第一个分块的第一校验和后,那么第二个分块的第一校验和就只需要在第一个分块的第一校验和减去上一个分块的第一个字节值,再加上第二个分块的最后一个字节值就可以了,对第一校验和取模即可求得第一弱校验值A。类似的,后移一个字节的第二个分块的第二校验和为第一个分块的第二校验和减去块长乘以第一个分块的第一个字节值,再加上第二个分块的第一校验和,对第二校验和取模即可求得第二弱校验值B。即最终得到算法如下:A-=data[0];A+=data[n];B-=n*data[0];B+=A,其中n为分块的块长,n为正整数。也就是说只有第一次需要整个计算,后面的都可以根据第一次滑动往下推,减少了数据量。
另外,当后移一整个分块获得待校验分块时,相当于后移了n字节得到的待校验分块,则待校验分块的A、B值可以重复n次上述计算得到,无需按照原有的Adler算法计算弱校验值A、B,提高了计算速度。
这样,在本实施例中,在循环校验查找时分别生成弱校验值以及强校验值,如没有查找到则无需后续计算,降低了运算量、提高了计算性能;另外,rsync的弱校验算法采用的是改进的Adler32算法,也就是说只有第一次需要整个计算,后面的都可以根据第一次计算结果滑动向下推,从而减少了运算量。
参见图5所示,示出了本发明实施例中提供的增量更新文件的方法实施例四,再以实际应用场景为例对本发明实施例中提供的增量更新文件的方法进行说明。在本实施例中,假设目标文件包括5个分块,每个分块为4字节,首先将源文件的前4字节确定为待校验分块,计算待校验分块的第一弱校验值A,在校验表中查找是否存在与待校验分块的第一弱校验值A相同的第一弱校验值,如果是,计算待校验分块的第二弱校验值B,在校验表中查找是否存在与待校验分块的第二弱校验值B相同的第二弱校验值,如果是,计算待校验分块的强校验值MD5值,在校验表中查找是否存在与待校验分块的强校验值MD5值相同的强校验值,如果是,则可以确定在校验表中存在与待校验分块的校验值相同的校验值,证明当前待校验分块与目标文件中的某一分块相同,可以将目标文件中的该分块的标识确定为重复数据索引,然后将待校验分块之后的4个字节确定为待检验分块,返回计算待校验分块的第一弱校验值A及后续步骤。
而如果在校验表中不存在待检验分块的第一校验值A或者第二校验值B或者MD5值,则证明当前待校验分块与目标文件中的任一分块均不相同,可以确定在校验表中不存在与待校验分块的校验值相同的校验值,将将待校验分块去除第一个字节,并将该去除的第一个字节之后的4个字节确定为待检验分块,返回计算待校验分块的第一弱校验值A及后续步骤。
如此循环校验,直到源文件被校验完成,校验表中未被确定为重复数据索引的目标文件分块的标识可以被确定为差异数据索引。
例如,最终重复数据索引重复数据索引可以为目标文件中的第2、3个分块,目标文件中的第2分块与源文件中的前4个字节相同、目标文件中的第3分块与源文件中的第5至8个字节相同,差异数据索引可以为目标文件中的第1、4、5个分块。
则可以从源文件中确定前4个字节的内容作为目标文件的第2分块的内容,从源文件中确定第5至8个字节的内容作为目标文件的第3分块的内容,最后按照目标文件分块的顺序,将5个分块的内容进行拼接生成最终的目标文件。
参见图6所示,在本发明实施例中还提供一种增量更新文件的装置实施例,可以应用于客户端,本装置实施例可以包括:
获取单元601,用于确定源文件,获取与源文件对应的目标文件的校验表。
校验单元602,用于利用源文件以及校验表对源文件与目标文件的差异进行校验。
生成单元603,用于根据校验的结果生成重复数据索引和差异数据索引。
下载单元604,用于利用差异数据索引从服务端下载源文件与目标文件间的差异数据,及利用重复数据索引从源文件中确定源文件与目标文件间的重复数据。
拼接单元605,用于将重复数据以及差异数据进行拼接,以生成目标文件。
在本发明一些可能的实现方式中,校验表中可以包括目标文件各个分块对应的校验值,目标文件各个分块的块长为n个字节,n为正整数;
校验单元可以包括:
第一确定子单元,用于将源文件的前n个字节确定为待校验分块。
计算查找子单元,用于计算待校验分块的校验值,查找校验表中是否存在与待校验分块的校验值相同的校验值。
获得子单元,用于获得查找结果。
第二确定子单元,用于如果查找结果为校验表中存在与待校验分块的校验值相同的校验值,则将待校验分块之后的n个字节确定为待检验分块,返回计算查找子单元以及获得子单元计算待校验分块的校验值,查找校验表中是否存在与待校验分块的校验值相同的校验值,获得查找结果。
第三确定子单元,用于如果查找结果为校验表中不存在与待校验分块的校验值相同的校验值,则将待校验分块去除第一个字节,并将该去除的第一个字节之后的n个字节确定为待检验分块,返回计算查找子单元以及获得子单元计算待校验分块的校验值,查找校验表中是否存在与待校验分块的校验值相同的校验值,获得查找结果。
在本发明一些可能的实现方式中,生成单元可以包括:
第四确定子单元,用于如果查找结果为校验表中存在与待校验分块的校验值相同的校验值,则将匹配校验值对应的目标文件分块的标识确定为重复数据索引,匹配校验值为校验表中与待校验分块的校验值相同的校验值。
第五确定子单元,用于在源文件被校验完成后,将校验表中未被确定为重复数据索引的目标文件分块的标识确定为差异数据索引。
在本发明一些可能的实现方式中,计算查找子单元可以包括:
第一计算子单元,用于计算待校验分块的第一弱校验值。
第一查找子单元,用于在校验表中查找是否存在与待校验分块的第一弱校验值相同的第一弱校验值。
第二计算子单元,用于如果在校验表中存在与待校验分块的第一弱校验值相同的第一弱校验值,计算待校验分块的第二弱校验值。
第二查找子单元,用于在校验表中查找是否存在与待校验分块的第二弱校验值相同的第二弱校验值。
第三计算子单元,用于如果在校验表中存在与待校验分块的第二弱校验值相同的第二弱校验值,计算待校验分块的强校验值。
第三查找子单元,用于在校验表中查找是否存在与待校验分块的强校验值相同的强校验值。
在本发明一些可能的实现方式中,获得子单元可以包括:
第六确定子单元,用于如果在校验表中不存在与待校验分块的第一弱校验值相同的第一弱校验值,或者,如果在校验表中不存在与待校验分块的第二弱校验值相同的第二弱校验值,或者,如果在校验表中不存在与待校验分块的强校验值相同的强校验值,将查找结果确定为校验表中不存在与待校验分块的校验值相同的校验值。
第七确定子单元,用于如果在校验表中存在与待校验分块的强校验值相同的强校验值,将查找结果确定为校验表中存在与待校验分块的校验值相同的校验值。
在本发明一些可能的实现方式中,在第一确定子单元将源文件的前n个字节确定为待校验分块之后,第一计算子单元具体可以用于:
按照Adler32算法计算待校验分块的第一校验和,将待校验分块的第一校验和取模后生成待校验分块的第一弱校验值。
在第一确定子单元将源文件的前n个字节确定为待校验分块之后,第二计算子单元可以具体用于:
按照Adler32算法计算待校验分块的第二校验和,将待校验分块的第二校验和取模后生成待校验分块的第二弱校验值。
在本发明一些可能的实现方式中,在第二确定子单元将待校验分块去除第一个字节之后的n个字节确定为待检验分块之后,第一计算子单元可以具体用于:
将第一值减去第二值得到第三值,第一值为待校验分块之前一个待校验分块的第一校验和,第二值为待校验分块之前一个待校验分块的第一个字节值;
将第三值加上第四值得到待校验分块的第一校验和,第四值为待校验分块的最后一个字节值;
将待校验分块的第一校验和取模后生成待校验分块的第一弱校验值。
在本发明一些可能的实现方式中,在第二确定子单元将待校验分块去除第一个字节之后的n个字节确定为待检验分块之后,第二计算子单元可以具体用于:
将第五值乘以n得到第六值,第五值为待校验分块之前一个待检验分块的第一个字节值;
将第七值减去第六值得到第八值,第七值为待校验分块之前一个待校验分块的第二校验和;
将第八值加上第九值得到待校验分块的第二校验和,第九值为待校验分块的第一校验和;
将待校验分块的第二校验和取模后生成待校验分块的第二弱校验值。
在本发明一些可能的实现方式中,校验表为二级哈希表。
本发明实施例通过客户端从服务端获取与源文件对应的目标文件的校验表,在客户端完成源文件与目标文件之间差异的校验,生成重复数据索引以及差异数据索引,根据复数据索引以及差异数据索引确定重复数据以及差异数据,从而在客户端拼接生成目标文件,在该过程中服务端仅需提供目标文件以及目标文件的校验表,确定重复数据和差异数据在客户端完成,降低了服务端的运营维护成本。
本发明实施例还提供了另一种终端,如图7所示,为了便于说明,仅示出了与本发明实施例相关的部分,具体技术细节未揭示的,请参照本发明实施例方法部分。该终端可以为包括手机、平板电脑、PDA(Personal Digital Assistant,个人数字助理)、POS(Point ofSales,销售终端)、车载电脑等任意终端设备,以终端为手机为例:
图7示出的是与本发明实施例提供的终端相关的手机的部分结构的框图。参考图7,手机包括:射频(Radio Frequency,RF)电路710、存储器720、输入单元730、显示单元740、传感器750、音频电路760、无线保真(wireless fidelity,WiFi)模块770、处理器780、以及电源790等部件。本领域技术人员可以理解,图7中示出的手机结构并不构成对手机的限定,可以包括比图示更多或更少的部件,或者组合某些部件,或者不同的部件布置。
下面结合图7对手机的各个构成部件进行具体的介绍:
RF电路710可用于收发信息或通话过程中,信号的接收和发送,特别地,将基站的下行信息接收后,给处理器780处理;另外,将设计上行的数据发送给基站。通常,RF电路包括但不限于天线、至少一个放大器、收发信机、耦合器、低噪声放大器(Low NoiseAmplifier,LNA)、双工器等。此外,RF电路710还可以通过无线通信与网络和其他设备通信。上述无线通信可以使用任一通信标准或协议,包括但不限于全球移动通讯系统(GlobalSystem of Mobile communication,GSM)、通用分组无线服务(General Packet RadioService,GPRS)、码分多址(Code Division Multiple Access,CDMA)、宽带码分多址(Wideband Code Division Multiple Access,WCDMA)、长期演进(Long Term Evolution,LTE))、电子邮件、短消息服务(Short Messaging Service,SMS)等。
存储器720可用于存储软件程序以及模块,处理器780通过运行存储在存储器720的软件程序以及模块,从而执行手机的各种功能应用以及数据处理。存储器720可主要包括存储程序区和存储数据区,其中,存储程序区可存储操作系统、至少一个功能所需的应用程序(比如声音播放功能、图像播放功能等)等;存储数据区可存储根据手机的使用所创建的数据(比如音频数据、电话本等)等。此外,存储器720可以包括高速随机存取存储器,还可以包括非易失性存储器,例如至少一个磁盘存储器件、闪存器件、或其他易失性固态存储器件。
输入单元730可用于接收输入的数字或字符信息,以及产生与手机700的用户设置以及功能控制有关的键信号输入。具体地,输入单元730可包括触控面板731以及其他输入设备732。触控面板731,也称为触摸屏,可收集用户在其上或附近的触摸操作(比如用户使用手指、触笔等任何适合的物体或附件在触控面板731上或在触控面板731附近的操作),并根据预先设定的程式驱动相应的连接装置。可选的,触控面板731可包括触摸检测装置和触摸控制器两个部分。其中,触摸检测装置检测用户的触摸方位,并检测触摸操作带来的信号,将信号传送给触摸控制器;触摸控制器从触摸检测装置上接收触摸信息,并将它转换成触点坐标,再送给处理器780,并能接收处理器780发来的命令并加以执行。此外,可以采用电阻式、电容式、红外线以及表面声波等多种类型实现触控面板731。除了触控面板731,输入单元730还可以包括其他输入设备732。具体地,其他输入设备732可以包括但不限于物理键盘、功能键(比如音量控制按键、开关按键等)、轨迹球、鼠标、操作杆等中的一种或多种。
显示单元740可用于显示由用户输入的信息或提供给用户的信息以及手机的各种菜单。显示单元740可包括显示面板741,可选的,可以采用液晶显示器(Liquid CrystalDisplay,LCD)、有机发光二极管(Organic Light-Emitting Diode,OLED)等形式来配置显示面板741。进一步的,触控面板731可覆盖显示面板741,当触控面板731检测到在其上或附近的触摸操作后,传送给处理器780以确定触摸事件的类型,随后处理器780根据触摸事件的类型在显示面板741上提供相应的视觉输出。虽然在图7中,触控面板731与显示面板741是作为两个独立的部件来实现手机的输入和输入功能,但是在某些实施例中,可以将触控面板731与显示面板741集成而实现手机的输入和输出功能。
手机700还可包括至少一种传感器750,比如光传感器、运动传感器以及其他传感器。具体地,光传感器可包括环境光传感器及接近传感器,其中,环境光传感器可根据环境光线的明暗来调节显示面板741的亮度,接近传感器可在手机移动到耳边时,关闭显示面板741和/或背光。作为运动传感器的一种,加速计传感器可检测各个方向上(一般为三轴)加速度的大小,静止时可检测出重力的大小及方向,可用于识别手机姿态的应用(比如横竖屏切换、相关游戏、磁力计姿态校准)、振动识别相关功能(比如计步器、敲击)等;至于手机还可配置的陀螺仪、气压计、湿度计、温度计、红外线传感器等其他传感器,在此不再赘述。
音频电路760、扬声器761,传声器762可提供用户与手机之间的音频接口。音频电路760可将接收到的音频数据转换后的电信号,传输到扬声器761,由扬声器761转换为声音信号输出;另一方面,传声器762将收集的声音信号转换为电信号,由音频电路760接收后转换为音频数据,再将音频数据输出处理器780处理后,经RF电路710以发送给比如另一手机,或者将音频数据输出至存储器720以便进一步处理。
WiFi属于短距离无线传输技术,手机通过WiFi模块770可以帮助用户收发电子邮件、浏览网页和访问流式媒体等,它为用户提供了无线的宽带互联网访问。虽然图7示出了WiFi模块770,但是可以理解的是,其并不属于手机700的必须构成,完全可以根据需要在不改变发明的本质的范围内而省略。
处理器780是手机的控制中心,利用各种接口和线路连接整个手机的各个部分,通过运行或执行存储在存储器720内的软件程序和/或模块,以及调用存储在存储器720内的数据,执行手机的各种功能和处理数据,从而对手机进行整体监控。可选的,处理器780可包括一个或多个处理单元;优选的,处理器780可集成应用处理器和调制解调处理器,其中,应用处理器主要处理操作系统、用户界面和应用程序等,调制解调处理器主要处理无线通信。可以理解的是,上述调制解调处理器也可以不集成到处理器780中。
手机700还包括给各个部件供电的电源790(比如电池),优选的,电源可以通过电源管理系统与处理器780逻辑相连,从而通过电源管理系统实现管理充电、放电、以及功耗管理等功能。
尽管未示出,手机700还可以包括摄像头、蓝牙模块等,在此不再赘述。
在本发明实施例中,该终端所包括的处理器780还具有以下功能:
确定源文件,获取与所述源文件对应的目标文件的校验表;
利用所述源文件以及所述校验表对所述源文件与目标文件的差异进行校验;
根据校验的结果生成重复数据索引和差异数据索引;
利用所述差异数据索引从服务端下载所述源文件与所述目标文件间的差异数据,及利用所述重复数据索引从所述源文件中确定所述源文件与所述目标文件间的重复数据;及
将所述重复数据以及所述差异数据进行拼接,以生成所述目标文件。
相应的,所述校验表中包括所述目标文件各个分块对应的校验值,所述目标文件各个分块的块长为n个字节,n为正整数;所述利用所述源文件以及所述校验表对所述源文件与目标文件的差异进行校验,包括:
将所述源文件的前n个字节确定为待校验分块,计算所述待校验分块的校验值,查找所述校验表中是否存在与所述待校验分块的校验值相同的校验值,获得查找结果;
如果所述查找结果为所述校验表中存在与所述待校验分块的校验值相同的校验值,则将所述待校验分块之后的n个字节确定为待检验分块,重复执行计算所述待校验分块的校验值,查找所述校验表中是否存在与所述待校验分块的校验值相同的校验值,获得查找结果;
如果所述查找结果为校验表中不存在与所述待校验分块的校验值相同的校验值,则将所述待校验分块去除第一个字节,并将该去除的第一个字节之后的n个字节确定为待检验分块,重复执行计算所述待校验分块的校验值,查找所述校验表中是否存在与所述待校验分块的校验值相同的校验值,获得查找结果。
相应的,所述根据校验的结果生成重复数据索引和差异数据索引,包括:
如果所述查找结果为所述校验表中存在与所述待校验分块的校验值相同的校验值,则将匹配校验值对应的目标文件分块的标识确定为重复数据索引,所述匹配校验值为所述校验表中与所述待校验分块的校验值相同的校验值;
在所述源文件被校验完成后,将所述校验表中未被确定为重复数据索引的目标文件分块的标识确定为差异数据索引。
相应的,所述计算所述待校验分块的校验值,查找所述校验表中是否存在与所述待校验分块的校验值相同的校验值,包括:
计算所述待校验分块的第一弱校验值,在所述校验表中查找是否存在与所述待校验分块的第一弱校验值相同的第一弱校验值;
如果在所述校验表中存在与所述待校验分块的第一弱校验值相同的第一弱校验值,计算所述待校验分块的第二弱校验值,在所述校验表中查找是否存在与所述待校验分块的第二弱校验值相同的第二弱校验值;
如果在所述校验表中存在与所述待校验分块的第二弱校验值相同的第二弱校验值,计算所述待校验分块的强校验值,在所述校验表中查找是否存在与所述待校验分块的强校验值相同的强校验值。
相应的,所述获得查找结果,包括:
如果在所述校验表中不存在与所述待校验分块的第一弱校验值相同的第一弱校验值,或者,如果在所述校验表中不存在与所述待校验分块的第二弱校验值相同的第二弱校验值,或者,如果在所述校验表中不存在与所述待校验分块的强校验值相同的强校验值,将查找结果确定为校验表中不存在与所述待校验分块的校验值相同的校验值;
如果在所述校验表中存在与所述待校验分块的强校验值相同的强校验值,将所述查找结果确定为校验表中存在与所述待校验分块的校验值相同的校验值。
相应的,将所述源文件的前n个字节确定为待校验分块之后,所述计算所述待校验分块的第一弱校验值,包括:
按照Adler32算法计算所述待校验分块的第一校验和,将所述待校验分块的第一校验和取模后生成所述待校验分块的第一弱校验值;
将所述源文件的前n个字节确定为待校验分块之后,所述计算所述待校验分块的第二弱校验值,包括:
按照Adler32算法计算所述待校验分块的第二校验和,将所述待校验分块的第二校验和取模后生成所述待校验分块的第二弱校验值。
相应的,将所述待校验分块去除第一个字节,并将该去除的第一个字节之后的n个字节确定为待检验分块之后,所述计算所述待校验分块的第一弱校验值,包括:
将第一值减去第二值得到第三值,所述第一值为所述待校验分块之前一个待校验分块的第一校验和,所述第二值为所述待校验分块之前一个待校验分块的第一个字节值;
将所述第三值加上第四值得到所述待校验分块的第一校验和,所述第四值为所述待校验分块的最后一个字节值;
将所述待校验分块的第一校验和取模后生成所述待校验分块的第一弱校验值。
相应的,将所述待校验分块去除第一个字节之后的n个字节确定为待检验分块之后,所述计算所述待校验分块的第二弱校验值,包括:
将第五值乘以n得到第六值,所述第五值为所述待校验分块之前一个待检验分块的第一个字节值;
将第七值减去所述第六值得到第八值,所述第七值为所述待校验分块之前一个待校验分块的第二校验和;
将所述第八值加上第九值得到所述待校验分块的第二校验和,所述第九值为所述待校验分块的第一校验和;
将所述待校验分块的第二校验和取模后生成所述待校验分块的第二弱校验值。
相应的,所述校验表为二级哈希表。
本发明实施例通过客户端从服务端获取与源文件对应的目标文件的校验表,在客户端完成源文件与目标文件之间差异的校验,生成重复数据索引以及差异数据索引,根据复数据索引以及差异数据索引确定重复数据以及差异数据,从而在客户端拼接生成目标文件,在该过程中服务端仅需提供目标文件以及目标文件的校验表,确定重复数据和差异数据在客户端完成,降低了服务端的运营维护成本。
需要说明的是,本说明书中各个实施例采用递进的方式描述,每个实施例重点说明的都是与其他实施例的不同之处,各个实施例之间相同相似部分互相参见即可。对于实施例公开的系统或装置而言,由于其与实施例公开的方法相对应,所以描述的比较简单,相关之处参见方法部分说明即可。
还需要说明的是,在本文中,诸如第一和第二等之类的关系术语仅仅用来将一个实体或者操作与另一个实体或操作区分开来,而不一定要求或者暗示这些实体或操作之间存在任何这种实际的关系或者顺序。而且,术语“包括”、“包含”或者其任何其他变体意在涵盖非排他性的包含,从而使得包括一系列要素的过程、方法、物品或者设备不仅包括那些要素,而且还包括没有明确列出的其他要素,或者是还包括为这种过程、方法、物品或者设备所固有的要素。在没有更多限制的情况下,由语句“包括一个……”限定的要素,并不排除在包括所述要素的过程、方法、物品或者设备中还存在另外的相同要素。
结合本文中所公开的实施例描述的方法或算法的步骤可以直接用硬件、处理器执行的软件模块,或者二者的结合来实施。软件模块可以置于随机存储器(RAM)、内存、只读存储器(ROM)、电可编程ROM、电可擦除可编程ROM、寄存器、硬盘、可移动磁盘、CD-ROM、或技术领域内所公知的任意其它形式的存储介质中。
对所公开的实施例的上述说明,使本领域专业技术人员能够实现或使用本发明。对这些实施例的多种修改对本领域的专业技术人员来说将是显而易见的,本文中所定义的一般原理可以在不脱离本发明的精神或范围的情况下,在其它实施例中实现。因此,本发明将不会被限制于本文所示的这些实施例,而是要符合与本文所公开的原理和新颖特点相一致的最宽的范围。
Claims (18)
1.一种增量更新文件的方法,其特征在于,所述方法应用于客户端,所述方法包括:
确定源文件,获取与所述源文件对应的目标文件的校验表;
利用所述源文件以及所述校验表对所述源文件与目标文件的差异进行校验;
根据校验的结果生成重复数据索引和差异数据索引;
利用所述差异数据索引从服务端下载所述源文件与所述目标文件间的差异数据,及利用所述重复数据索引从所述源文件中确定所述源文件与所述目标文件间的重复数据;及
将所述重复数据以及所述差异数据进行拼接,以生成所述目标文件。
2.根据权利要求1所述的方法,其特征在于,所述校验表中包括所述目标文件各个分块对应的校验值,所述目标文件各个分块的块长为n个字节,n为正整数;所述利用所述源文件以及所述校验表对所述源文件与目标文件的差异进行校验,包括:
将所述源文件的前n个字节确定为待校验分块,计算所述待校验分块的校验值,查找所述校验表中是否存在与所述待校验分块的校验值相同的校验值,获得查找结果;
如果所述查找结果为所述校验表中存在与所述待校验分块的校验值相同的校验值,则将所述待校验分块之后的n个字节确定为待检验分块,重复执行计算所述待校验分块的校验值,查找所述校验表中是否存在与所述待校验分块的校验值相同的校验值,获得查找结果;
如果所述查找结果为校验表中不存在与所述待校验分块的校验值相同的校验值,则将所述待校验分块去除第一个字节,并将该去除的第一个字节之后的n个字节确定为待检验分块,重复执行计算所述待校验分块的校验值,查找所述校验表中是否存在与所述待校验分块的校验值相同的校验值,获得查找结果。
3.根据权利要求2所述的方法,其特征在于,所述根据校验的结果生成重复数据索引和差异数据索引,包括:
如果所述查找结果为所述校验表中存在与所述待校验分块的校验值相同的校验值,则将匹配校验值对应的目标文件分块的标识确定为重复数据索引,所述匹配校验值为所述校验表中与所述待校验分块的校验值相同的校验值;
在所述源文件被校验完成后,将所述校验表中未被确定为重复数据索引的目标文件分块的标识确定为差异数据索引。
4.根据权利要求2所述的方法,其特征在于,所述计算所述待校验分块的校验值,查找所述校验表中是否存在与所述待校验分块的校验值相同的校验值,包括:
计算所述待校验分块的第一弱校验值,在所述校验表中查找是否存在与所述待校验分块的第一弱校验值相同的第一弱校验值;
如果在所述校验表中存在与所述待校验分块的第一弱校验值相同的第一弱校验值,计算所述待校验分块的第二弱校验值,在所述校验表中查找是否存在与所述待校验分块的第二弱校验值相同的第二弱校验值;
如果在所述校验表中存在与所述待校验分块的第二弱校验值相同的第二弱校验值,计算所述待校验分块的强校验值,在所述校验表中查找是否存在与所述待校验分块的强校验值相同的强校验值。
5.根据权利要求4所述的方法,其特征在于,所述获得查找结果,包括:
如果在所述校验表中不存在与所述待校验分块的第一弱校验值相同的第一弱校验值,或者,如果在所述校验表中不存在与所述待校验分块的第二弱校验值相同的第二弱校验值,或者,如果在所述校验表中不存在与所述待校验分块的强校验值相同的强校验值,将查找结果确定为校验表中不存在与所述待校验分块的校验值相同的校验值;
如果在所述校验表中存在与所述待校验分块的强校验值相同的强校验值,将所述查找结果确定为校验表中存在与所述待校验分块的校验值相同的校验值。
6.根据权利要求4所述的方法,其特征在于,将所述源文件的前n个字节确定为待校验分块之后,所述计算所述待校验分块的第一弱校验值,包括:
按照Adler32算法计算所述待校验分块的第一校验和,将所述待校验分块的第一校验和取模后生成所述待校验分块的第一弱校验值;
将所述源文件的前n个字节确定为待校验分块之后,所述计算所述待校验分块的第二弱校验值,包括:
按照Adler32算法计算所述待校验分块的第二校验和,将所述待校验分块的第二校验和取模后生成所述待校验分块的第二弱校验值。
7.根据权利要求6所述的方法,其特征在于,将所述待校验分块去除第一个字节,并将该去除的第一个字节之后的n个字节确定为待检验分块之后,所述计算所述待校验分块的第一弱校验值,包括:
将第一值减去第二值得到第三值,所述第一值为所述待校验分块之前一个待校验分块的第一校验和,所述第二值为所述待校验分块之前一个待校验分块的第一个字节值;
将所述第三值加上第四值得到所述待校验分块的第一校验和,所述第四值为所述待校验分块的最后一个字节值;
将所述待校验分块的第一校验和取模后生成所述待校验分块的第一弱校验值。
8.根据权利要求6所述的方法,其特征在于,将所述待校验分块去除第一个字节之后的n个字节确定为待检验分块之后,所述计算所述待校验分块的第二弱校验值,包括:
将第五值乘以n得到第六值,所述第五值为所述待校验分块之前一个待检验分块的第一个字节值;
将第七值减去所述第六值得到第八值,所述第七值为所述待校验分块之前一个待校验分块的第二校验和;
将所述第八值加上第九值得到所述待校验分块的第二校验和,所述第九值为所述待校验分块的第一校验和;
将所述待校验分块的第二校验和取模后生成所述待校验分块的第二弱校验值。
9.根据权利要求1-8任一项所述的方法,其特征在于,所述校验表为二级哈希表。
10.一种增量更新文件的装置,其特征在于,所述装置应用于客户端,所述装置包括:
获取单元,用于确定源文件,获取与所述源文件对应的目标文件的校验表;
校验单元,用于利用所述源文件以及所述校验表对所述源文件与目标文件的差异进行校验;
生成单元,用于根据校验的结果生成重复数据索引和差异数据索引;
下载单元,用于利用所述差异数据索引从服务端下载所述源文件与所述目标文件间的差异数据,及利用所述重复数据索引从所述源文件中确定所述源文件与所述目标文件间的重复数据;及
拼接单元,用于将所述重复数据以及所述差异数据进行拼接,以生成所述目标文件。
11.根据权利要求10所述的装置,其特征在于,所述校验表中包括所述目标文件各个分块对应的校验值,所述目标文件各个分块的块长为n个字节,n为正整数;
所述校验单元包括:
第一确定子单元,用于将所述源文件的前n个字节确定为待校验分块;
计算查找子单元,用于计算所述待校验分块的校验值,查找所述校验表中是否存在与所述待校验分块的校验值相同的校验值;
获得子单元,用于获得查找结果;
第二确定子单元,用于如果所述查找结果为所述校验表中存在与所述待校验分块的校验值相同的校验值,则将所述待校验分块之后的n个字节确定为待检验分块,返回所述计算查找子单元以及所述获得子单元计算所述待校验分块的校验值,查找所述校验表中是否存在与所述待校验分块的校验值相同的校验值,获得查找结果;
第三确定子单元,用于如果所述查找结果为校验表中不存在与所述待校验分块的校验值相同的校验值,则将所述待校验分块去除第一个字节,并将该去除的第一个字节之后的n个字节确定为待检验分块,返回所述计算查找子单元以及所述获得子单元计算所述待校验分块的校验值,查找所述校验表中是否存在与所述待校验分块的校验值相同的校验值,获得查找结果。
12.根据权利要求11所述的装置,其特征在于,所述生成单元包括:
第四确定子单元,用于如果所述查找结果为所述校验表中存在与所述待校验分块的校验值相同的校验值,则将匹配校验值对应的目标文件分块的标识确定为重复数据索引,所述匹配校验值为所述校验表中与所述待校验分块的校验值相同的校验值;
第五确定子单元,用于在所述源文件被校验完成后,将所述校验表中未被确定为重复数据索引的目标文件分块的标识确定为差异数据索引。
13.根据权利要求11所述的装置,其特征在于,所述计算查找子单元包括:
第一计算子单元,用于计算所述待校验分块的第一弱校验值;
第一查找子单元,用于在所述校验表中查找是否存在与所述待校验分块的第一弱校验值相同的第一弱校验值;
第二计算子单元,用于如果在所述校验表中存在与所述待校验分块的第一弱校验值相同的第一弱校验值,计算所述待校验分块的第二弱校验值;
第二查找子单元,用于在所述校验表中查找是否存在与所述待校验分块的第二弱校验值相同的第二弱校验值;
第三计算子单元,用于如果在所述校验表中存在与所述待校验分块的第二弱校验值相同的第二弱校验值,计算所述待校验分块的强校验值;
第三查找子单元,用于在所述校验表中查找是否存在与所述待校验分块的强校验值相同的强校验值。
14.根据权利要求13所述的装置,其特征在于,所述获得子单元包括:
第六确定子单元,用于如果在所述校验表中不存在与所述待校验分块的第一弱校验值相同的第一弱校验值,或者,如果在所述校验表中不存在与所述待校验分块的第二弱校验值相同的第二弱校验值,或者,如果在所述校验表中不存在与所述待校验分块的强校验值相同的强校验值,将查找结果确定为校验表中不存在与所述待校验分块的校验值相同的校验值;
第七确定子单元,用于如果在所述校验表中存在与所述待校验分块的强校验值相同的强校验值,将所述查找结果确定为校验表中存在与所述待校验分块的校验值相同的校验值。
15.根据权利要求13所述的装置,其特征在于,在所述第一确定子单元将所述源文件的前n个字节确定为待校验分块之后,所述第一计算子单元具体用于:
按照Adler32算法计算所述待校验分块的第一校验和,将所述待校验分块的第一校验和取模后生成所述待校验分块的第一弱校验值;
在所述第一确定子单元将所述源文件的前n个字节确定为待校验分块之后,所述第二计算子单元具体用于:
按照Adler32算法计算所述待校验分块的第二校验和,将所述待校验分块的第二校验和取模后生成所述待校验分块的第二弱校验值。
16.根据权利要求15所述的装置,其特征在于,在所述第二确定子单元将所述待校验分块去除第一个字节之后的n个字节确定为待检验分块之后,所述第一计算子单元具体用于:
将第一值减去第二值得到第三值,所述第一值为所述待校验分块之前一个待校验分块的第一校验和,所述第二值为所述待校验分块之前一个待校验分块的第一个字节值;
将所述第三值加上第四值得到所述待校验分块的第一校验和,所述第四值为所述待校验分块的最后一个字节值;
将所述待校验分块的第一校验和取模后生成所述待校验分块的第一弱校验值。
17.根据权利要求15所述的装置,其特征在于,在所述第二确定子单元将所述待校验分块去除第一个字节之后的n个字节确定为待检验分块之后,所述第二计算子单元具体用于:
将第五值乘以n得到第六值,所述第五值为所述待校验分块之前一个待检验分块的第一个字节值;
将第七值减去所述第六值得到第八值,所述第七值为所述待校验分块之前一个待校验分块的第二校验和;
将所述第八值加上第九值得到所述待校验分块的第二校验和,所述第九值为所述待校验分块的第一校验和;
将所述待校验分块的第二校验和取模后生成所述待校验分块的第二弱校验值。
18.根据权利要求10-17任一项所述的装置,其特征在于,所述校验表为二级哈希表。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201710278719.5A CN108762798B (zh) | 2017-04-25 | 2017-04-25 | 一种增量更新文件的方法及装置 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201710278719.5A CN108762798B (zh) | 2017-04-25 | 2017-04-25 | 一种增量更新文件的方法及装置 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN108762798A true CN108762798A (zh) | 2018-11-06 |
CN108762798B CN108762798B (zh) | 2021-11-26 |
Family
ID=63980005
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201710278719.5A Active CN108762798B (zh) | 2017-04-25 | 2017-04-25 | 一种增量更新文件的方法及装置 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN108762798B (zh) |
Cited By (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN109634979A (zh) * | 2019-01-04 | 2019-04-16 | 北京互金新融科技有限公司 | 数据更新方法及装置 |
CN110515964A (zh) * | 2019-08-30 | 2019-11-29 | 百度在线网络技术(北京)有限公司 | 一种文件更新方法、装置、电子设备和介质 |
CN113094437A (zh) * | 2021-04-14 | 2021-07-09 | 深圳前海移联科技有限公司 | 一种基于Rsync的区块链状态数据同步方法及系统 |
WO2021174836A1 (zh) * | 2020-03-04 | 2021-09-10 | 平安科技(深圳)有限公司 | 差分包生成方法方法、装置、计算机设备及存储介质 |
CN113542422A (zh) * | 2021-07-19 | 2021-10-22 | 星辰天合(北京)数据科技有限公司 | 数据存储方法、装置、存储介质及电子装置 |
CN115225319A (zh) * | 2022-06-10 | 2022-10-21 | 中电云数智科技有限公司 | 一种数据校验方法及装置 |
Citations (12)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20050273472A1 (en) * | 2004-06-04 | 2005-12-08 | Prakash Reddy | Verifying incremental updates to hierarchicaly structured information |
CN102065098A (zh) * | 2010-12-31 | 2011-05-18 | 网宿科技股份有限公司 | 网络节点之间数据同步的方法和系统 |
CN103399795A (zh) * | 2013-06-28 | 2013-11-20 | 贵阳朗玛信息技术股份有限公司 | 通讯录同步方法及装置 |
CN103428242A (zh) * | 2012-05-18 | 2013-12-04 | 阿里巴巴集团控股有限公司 | 一种增量同步的方法、装置及系统 |
CN103713926A (zh) * | 2013-12-27 | 2014-04-09 | 珠海金山网络游戏科技有限公司 | 一种预更新软件客户端的方法及系统 |
CN104539696A (zh) * | 2014-12-26 | 2015-04-22 | 北京像素软件科技股份有限公司 | 一种客户端增量更新的方法及系统 |
CN104951337A (zh) * | 2015-05-28 | 2015-09-30 | 小米科技有限责任公司 | 文件增量更新方法及装置 |
CN105260202A (zh) * | 2015-09-15 | 2016-01-20 | 中国联合网络通信集团有限公司 | 一种客户端文件更新方法和系统 |
CN105739971A (zh) * | 2016-01-20 | 2016-07-06 | 网易(杭州)网络有限公司 | 校验文件的生成、使用方法及装置 |
US9430331B1 (en) * | 2012-07-16 | 2016-08-30 | Emc Corporation | Rapid incremental backup of changed files in a file system |
CN106302753A (zh) * | 2016-08-18 | 2017-01-04 | 福建天泉教育科技有限公司 | 客户端程序增量更新的方法及系统 |
CN106528125A (zh) * | 2016-10-26 | 2017-03-22 | 腾讯科技(深圳)有限公司 | 一种数据文件的增量更新方法和服务器、客户端以及系统 |
-
2017
- 2017-04-25 CN CN201710278719.5A patent/CN108762798B/zh active Active
Patent Citations (12)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20050273472A1 (en) * | 2004-06-04 | 2005-12-08 | Prakash Reddy | Verifying incremental updates to hierarchicaly structured information |
CN102065098A (zh) * | 2010-12-31 | 2011-05-18 | 网宿科技股份有限公司 | 网络节点之间数据同步的方法和系统 |
CN103428242A (zh) * | 2012-05-18 | 2013-12-04 | 阿里巴巴集团控股有限公司 | 一种增量同步的方法、装置及系统 |
US9430331B1 (en) * | 2012-07-16 | 2016-08-30 | Emc Corporation | Rapid incremental backup of changed files in a file system |
CN103399795A (zh) * | 2013-06-28 | 2013-11-20 | 贵阳朗玛信息技术股份有限公司 | 通讯录同步方法及装置 |
CN103713926A (zh) * | 2013-12-27 | 2014-04-09 | 珠海金山网络游戏科技有限公司 | 一种预更新软件客户端的方法及系统 |
CN104539696A (zh) * | 2014-12-26 | 2015-04-22 | 北京像素软件科技股份有限公司 | 一种客户端增量更新的方法及系统 |
CN104951337A (zh) * | 2015-05-28 | 2015-09-30 | 小米科技有限责任公司 | 文件增量更新方法及装置 |
CN105260202A (zh) * | 2015-09-15 | 2016-01-20 | 中国联合网络通信集团有限公司 | 一种客户端文件更新方法和系统 |
CN105739971A (zh) * | 2016-01-20 | 2016-07-06 | 网易(杭州)网络有限公司 | 校验文件的生成、使用方法及装置 |
CN106302753A (zh) * | 2016-08-18 | 2017-01-04 | 福建天泉教育科技有限公司 | 客户端程序增量更新的方法及系统 |
CN106528125A (zh) * | 2016-10-26 | 2017-03-22 | 腾讯科技(深圳)有限公司 | 一种数据文件的增量更新方法和服务器、客户端以及系统 |
Non-Patent Citations (1)
Title |
---|
曹剑东: ""车辆导航系统增量数据在线交换平台设计"", 《汽车工程》 * |
Cited By (8)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN109634979A (zh) * | 2019-01-04 | 2019-04-16 | 北京互金新融科技有限公司 | 数据更新方法及装置 |
CN110515964A (zh) * | 2019-08-30 | 2019-11-29 | 百度在线网络技术(北京)有限公司 | 一种文件更新方法、装置、电子设备和介质 |
WO2021174836A1 (zh) * | 2020-03-04 | 2021-09-10 | 平安科技(深圳)有限公司 | 差分包生成方法方法、装置、计算机设备及存储介质 |
CN113094437A (zh) * | 2021-04-14 | 2021-07-09 | 深圳前海移联科技有限公司 | 一种基于Rsync的区块链状态数据同步方法及系统 |
CN113094437B (zh) * | 2021-04-14 | 2023-10-03 | 深圳前海移联科技有限公司 | 一种基于Rsync的区块链状态数据同步方法及系统 |
CN113542422A (zh) * | 2021-07-19 | 2021-10-22 | 星辰天合(北京)数据科技有限公司 | 数据存储方法、装置、存储介质及电子装置 |
CN113542422B (zh) * | 2021-07-19 | 2023-10-17 | 北京星辰天合科技股份有限公司 | 数据存储方法、装置、存储介质及电子装置 |
CN115225319A (zh) * | 2022-06-10 | 2022-10-21 | 中电云数智科技有限公司 | 一种数据校验方法及装置 |
Also Published As
Publication number | Publication date |
---|---|
CN108762798B (zh) | 2021-11-26 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN108762798A (zh) | 一种增量更新文件的方法及装置 | |
CN106973099B (zh) | 一种数据更新方法、装置及系统 | |
CN104239535B (zh) | 一种为文字配图的方法、服务器、终端及系统 | |
CN112989430A (zh) | 完整性校验方法、装置、终端设备及验证服务器 | |
CN107770596A (zh) | 一种特效同步方法、装置及移动终端 | |
CN109213728A (zh) | 基于增强现实的文物展示方法及系统 | |
CN106446841B (zh) | 一种指纹模板匹配顺序更新方法及终端 | |
CN106126174B (zh) | 一种场景音效的控制方法、及电子设备 | |
CN106937043A (zh) | 移动终端及其图像处理的方法和装置 | |
CN110502245A (zh) | 数据处理方法、终端、服务器以及应用开发设备 | |
CN104252364A (zh) | 增量更新的方法、设备及系统 | |
CN106126207B (zh) | 桌面信息显示方法、装置及移动终端 | |
CN109672655A (zh) | 一种差分升级的方法、装置及系统 | |
CN106502824B (zh) | 数据备份方法及云服务器 | |
CN107071129B (zh) | 一种亮屏控制方法及移动终端 | |
CN104699501B (zh) | 一种运行应用程序的方法及装置 | |
CN109213885A (zh) | 基于增强现实的汽车展示方法及系统 | |
CN110378107A (zh) | 一种安装包检测的方法及相关装置 | |
CN106951492A (zh) | 文件搜索方法、装置和电子设备 | |
CN106657254B (zh) | 一种联系人信息的同步方法、装置及系统 | |
CN117592089B (zh) | 一种数据处理方法、装置、设备以及存储介质 | |
CN109271779A (zh) | 一种安装包检测方法、终端设备及服务器 | |
CN107844318A (zh) | 一种操作系统的升级方法及移动终端和服务器 | |
CN110532231A (zh) | 文件查询方法、文件查询装置及终端设备 | |
CN108256466A (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 | ||
TG01 | Patent term adjustment |