【技术实现步骤摘要】
一种增量同步的方法、装置及系统
本申请涉及通信
,尤其涉及一种增量同步的方法、装置及系统。
技术介绍
目前,在许多应用场景中,都需要对不同设备中的文件进行同步。例如,当设备A中的某个文件进行了版本更新时,就需要同步设备B中相应的文件,使设备B中相应的文件也进行更新。在现有技术中,一般采用rsync算法进行文件的同步,由于rsync算法能够有效的计算出一个文件比另一个文件更新的部分,因此在文件同步时,只要传输计算出的更新的部分即可完成同步,该过程即为增量同步。假设设备A中保存了文件a,设备B中保存了文件b,文件a较文件b更新,则需要将设备B中的文件b升级为文件a,此时采用rsync算法进行增量同步的过程如图1所示。图1为现有技术中采用rsync算法进行增量同步的过程,具体包括以下步骤:S101:设备B将保存的文件b分割成连续、不重叠的文件块,除最后一个文件块之外,其余文件块的长度为固定长度S,并且最后一个文件块的长度不大于固定长度S。分割的各文件块如表1所示:文件块1文件块2文件块3表1如表1所示,该文件b被分割成了连续且不重叠的3个文件块,即文件块1、文件块 ...
【技术保护点】
一种增量同步的方法,其特征在于,包括:客户端在检测到自身存在新增的文件时,将所述文件分割成连续、不重叠的文件块,除最后一个文件块之外,其余文件块的长度为固定长度,并且最后一个文件块的长度不大于所述固定长度;所述客户端分别针对分割的每个文件块,确定该文件块的弱校验值和强校验值,并生成该文件块对应的文件块结构表,生成的文件块结构表中记录了该文件块的弱校验值和强校验值;所述客户端将各文件块结构表作为所述文件的文件结构列表发送给服务器保存,并将各文件块发送给服务器进行存储。
【技术特征摘要】
1.一种增量同步的方法,其特征在于,包括:客户端在检测到自身存在新增的文件时,将所述文件分割成连续、不重叠的文件块,除最后一个文件块之外,其余文件块的长度为固定长度,并且最后一个文件块的长度不大于所述固定长度;所述客户端分别针对分割的每个文件块,确定该文件块的弱校验值和强校验值,并生成该文件块对应的文件块结构表,生成的文件块结构表中记录了该文件块的弱校验值和强校验值;所述客户端将各文件块结构表作为所述文件的文件结构列表发送给服务器保存,并将各文件块发送给服务器进行存储;所述客户端在检测到自身保存的所述文件被更新时,将自身保存的更新后的文件作为更新文件,获取服务器中保存的所述更新文件对应的原文件的文件结构列表,提取所述原文件的文件结构列表中的每个文件块结构表;将所述更新文件的第一个字节确定为起点,确定从所述起点开始的固定长度的文件块为待匹配块,确定所述待匹配块的弱校验值和强校验值;若判断出提取的每个文件块结构表中是否存在至少一个与所述待匹配块匹配的文件块结构表,则生成所述待匹配块的文件块结构表,将生成的文件块结构表中的上传标记设置为不上传,并插入到所述更新文件的文件结构列表中的末尾,将所述更新文件中所述待匹配块的下一个字节重新确定为起点,其中,与所述待匹配块匹配的文件块结构表为:记录的弱校验值与所述待匹配块的弱校验值匹配,且,记录的强校验值与所述待匹配块的强校验值匹配的文件块结构表;将从重新确定的起点开始的固定长度的文件块重新确定为待匹配块,继续判断提取的每个文件块结构表中是否存在至少一个与重新确定的待匹配块匹配的文件块结构表,直至将所述更新文件中所有文件块的文件块结构表插入到所述更新文件的文件结构列表中为止;将所述更新文件的文件结构列表发送给所述服务器保存,以更新所述服务器中保存的所述原文件的文件结构列表,并将所述更新文件的文件结构列表中每个上传标记为上传的文件块结构表对应的文件块发送给服务器进行存储,完成所述更新文件的同步。2.如权利要求1所述的方法,其特征在于,所述客户端将各文件块结构表作为所述文件的文件结构列表发送给服务器保存之前,所述方法还包括:为分割的每个文件块分配文件块标识;针对每个文件块,根据分割的各文件块在所述文件中的排序顺序,确定与该文件块相邻且排在该文件块之前的前继文件块的文件块标识,确定与文件块相邻且排在该文件块之后的后继文件块的文件块标识,将该文件块的文件块标识、确定的前继文件块的文件块标识、后继文件块的文件块标识记录在该文件块对应的文件块结构表中。3.如权利要求1或2所述的方法,其特征在于,所述客户端将各文件块结构表作为所述文件的文件结构列表发送给服务器保存,具体包括:按照每个文件块在所述文件中的排序顺序,将每个文件块对应的文件块结构表进行排序;将排序后的各文件块结构表作为所述文件的文件结构列表发送给服务器保存。4.如权利要求3所述的方法,其特征在于,将排序后的各文件块结构表作为所述文件的文件结构列表发送给服务器保存之前,所述方法还包括:将每个文件块结构表中的上传标记设置为上传;将各文件块发送给服务器进行存储,具体包括:将每个上传标记为上传的文件块结构表对应的文件块发送给服务器进行存储。5.如权利要求4所述的方法,其特征在于,将每个上传标记为上传的文件块结构表对应的文件块发送给服务器进行存储之前,所述方法还包括:所述客户端接收所述服务器返回的调整后的文件结构列表,其中,所述服务器调整文件结构列表具体包括:针对接收到的所述文件结构列表中的每个文件块结构表,根据该文件块结构表中记录的强校验值,判断所述服务器自身是否已经保存了相同强校验值的文件块,当判断结果为是时,将该文件块结构表中的上传标记调整为不上传;将每个上传标记为上传的文件块结构表对应的文件块发送给服务器进行存储,具体包括:根据所述服务器返回的调整后的文件结构列表中每个文件块结构表的文件块上传标记,将上传标记为上传的文件块结构表对应的文件块发送给服务器进行存储。6.如权利要求4所述的方法,其特征在于,将每个上传标记为上传的文件块结构表对应的文件块发送给服务器进行存储之前,所述方法还包括:确定所述文件的文件校验值并发送给所述服务器;接收所述服务器返回的调整后的文件结构列表,其中,所述服务器调整文件结构列表具体包括:根据所述文件的文件校验值,判断所述服务器自身是否已经保存了相同文件校验值的文件,若是,则提取保存的具有所述文件校验值的文件的文件结构列表,将提取的文件结构列表中的每个文件块结构表中包含的上传标记调整为不上传,并作为调整后的文件结构列表,否则,针对所述客户端发送的文件结构列表中的每个文件块结构表,根据该文件块结构表中包含的强校验值,判断所述服务器自身是否已经保存了相同强校验值的文件块,当判断结果为是时,将该文件块结构表中包含的上传标记调整为不上传;将每个上传标记为上传的文件块结构表对应的文件块发送给服务器进行存储,具体包括:根据所述服务器返回的调整后的文件结构列表中每个文件块结构表的上传标记,将上传标记为上传的文件块结构表对应的文件块发送给服务器进行存储。7.如权利要求1所述的方法,其特征在于,若判断出提取的每个文件块结构表中不存在至少一个与所述待匹配块匹配的文件块结构表,则确定当前所述更新文件的文件结构列表中排在末尾的文件块结构表对应的文件块的最后一个字节,判断从确定的最后一个字节的下一个字节到所述起点的长度是否达到所述固定长度,若达到,则生成确定的最后一个字节的下一个字节到所述起点的文件块的文件块结构表,将生成的文件块结构表中的上传标记设置为上传,并插入到所述更新文件的文件结构列表中的末尾,将所述更新文件中所述起点的下一个字节重新确定为起点,若未达到,则将所述更新文件中所述起点的下一个字节重新确定为起点。8.如权利要求7所述的方法,其特征在于,当将所述更新文件的第一个字节确定为起点,确定从所述起点开始的固定长度的文件块为待匹配块时,以及,当将所述更新文件中所述待匹配块的下一个字节重新确定为起点,将从重新确定的起点开始的固定长度的文件块重新确定为待匹配块时,确定待匹配块的弱校验值具体包括:采用公式确定待匹配块的弱校验值的低16位,其中,k表示所述更新文件的第k个字节为待匹配块的起点,l表示所述更新文件的第l个字节为待匹配块的最后一个字节,Xi为所述更新文件中的第i个字节,a(k,l)为确定的待匹配块的弱校验值的低16位;采用公式确定待匹配块的弱校验值的高16位,其中,b(k,l)为确定的待匹配块的弱校验值的高16位;根据确定的待匹配块的弱校验值的低16位和高16位,采用公式s(k,l)=a(k,l)+216b(k,l)确定待匹配块的弱校验值,其中,s(k,l)为确定的待匹配块的弱校验值;当将所述更新文件中所述起点的下一个字节重新确定为起点,将从重新确定的起点开始的固定长度的文件块重新确定为待匹配块时,确定重新确定的待匹配块的弱校验值具体包括:采用公式a(k+1,l+1)=(a(k,l)-Xk+Xl+1)mod216确定重新确定的待匹配块的弱校验值的低16位,其中,k+1表示所述更新文件的第k+1个字节为重新确定的待匹配块的起点,l+1表示所述更新文件的第l+1个字节为重新确定的待匹配块的最后一个字节,a(k+1,l+1)为重新确定的待匹配块的弱校验值的低16位;采用公式b(k+1,l+1)=(b(k,l)-(l-k+1)Xk+a(k+1,l+1))mod216确定重新确定的待匹配块的弱校验值的高16位,其中,b(k+1,l+1)为重新确定的待匹配块的弱校验值的高16位;采用公式s(k+1,l+1)=a(k+1,l+1)+216b(k+1,l+1)确定重新确定的待匹配块的弱校验值,其中,s(k+1,l+1)为重新确定的待匹配块的弱校验值。9.如权利要求7所述的方法,其特征在于,生成所述待匹配块的文件块结构表,具体包括:为所述待匹配块分配文件块标识;根据当前所述更新文件的文件结构列表中排在末尾的文件块结构表,确定排在末尾的文件块结构表对应的文件块的文件块标识,作为所述待匹配块的前继文件块的文件块标识;将确定所述待匹配块时所基于的起点作为所述待匹配块的起始位置;生成包含所述待匹配块的文件块标识、前继文件块的文件块标识、起始位置、长度、弱校验值和强校验值的文件块结构表;将生成的所述待匹配块的文件块结构表插入到所述更新文件的文件结构列表中的末尾之后,所述方法还包括:将当前所述更新文件的文件结构列表中所述待匹配块的文件块结构表的前一个文件块结构表中的后继文件块的文件块标识修改为所述待匹配块的文件块标识。10.如权利要求9所述的方法,其特征在于,针对确定的待匹配块,当判断存在至少一个与所述待匹配块匹配的文件块结构表时,在将生成的待匹配块的文件块结构表插入到所述更新文件的文件结构列表中的末尾之后,将所述更新文件中所述待匹配块的下一个字节重新确定为起点之前,所述方法还包括:根据当前所述更新文件的文件结构列表中所述待匹配块的文件块结构表的前一个文件块结构表,确定所述前一个文件块结构表对应的文件块;如果所述待匹配块与所述前一个文件块结构表对应的文件块之间存在一个长度小于所述固定长度的文件块,则确定该长度小于所述固定长度的文件块的弱校验值和强校验值;判断提取的每个文件块结构表中是否存在至少一个与该长度小于所述固定长度的文件块匹配的文件块结构表,若是,则生成该长度小于所述固定长度的文件块的文件块结构表,将生成的文件块结构表中的上传标记设置为不上传,并插入到所述更新文件的文件结构列表中所述前一个文件块结构表和所述待匹配块的文件块结构表之间,否则,生成该长度小于所述固定长度的文件块的文件块结构表,将生成的文件块结构表中的上传标记设置为上传,并插入到所述更新文件的文件结构列表中所述前一个文件块结构表和所述待匹配块的文件块结构表之间。11.如权利要求10所述的方法,其特征在于,生成该长度小于所述固定长度的文件块的文件块结构表,具体包括:为该长度小于所述固定长度的文件块分配文件块标识;确定所述前一个文件块结构表对应的文件块的文件块标识,作为该长度小于所述固定长度的文件块的前继文件块的文件块标识;确定所述待匹配块的文件块标识,作为该长度小于所述固定长度的文件块的后继文件块的文件块标识;将所述前一个文件块结构表对应的文件块的最后一个字节的下一个字节作为该长度小于所述固定长度的文件块的起始位置;生成包含该长度小于所述固定长度的文件块的文件块标识、前继文件块的文件块标识、后继文件块的文件块标识、起始位置、长度、弱校验值和强校验值的文件块结构表;将生成的该长度小于所述固定长度的文件块的文件块结构表插入到所述更新文件的文件结构列表中所述前一个文件块结构表和所述待匹配块的文件块结构表之间后,所述方法还包括:将所述前一个文件块结构表中的后继文件块的文件块标识修改为该长度小于所述固定长度的文件块的文件块标识,将所述待匹配块的文件块结构表中的前继文件块的文件块标识修改为该长度小于所述固定长度的文件块的文件块标识。12.如权利要求9所述的方法,其特征在于,当判断提取的每个文件块结构表中存在至少一个与所述待匹配块匹配的文件块结构表时,生成所述待匹配块的文件块结构表,具体包括:按照该至少一个与所述待匹配块匹配的文件块结构表在所述原文件的...
【专利技术属性】
技术研发人员:王含章,翁磊,曹高挺,
申请(专利权)人:阿里巴巴集团控股有限公司,
类型:发明
国别省市:
还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。