一种利用局部性提高文件差分同步速度的方法与流程

文档序号:13207884阅读:170来源:国知局
一种利用局部性提高文件差分同步速度的方法与流程

本发明涉及互联网技术领域,尤其涉及一种利用局部性提高文件差分同步速度的方法。



背景技术:

云存储已经成为未来存储发展的一种趋势。目前云存储服务一方面可以为互联网用户提供大容量的存储服务,另一方面也可以用来进行互联网应用的后台数据存储。尽管云存储服务方便实用,但目前依旧存在着影响互联网用户体验的问题,而其中一个常见的问题就是在将文件同步上传至云服务时耗时较长,严重影响用户体验。为了解决上述问题,我们发现,用户在使用云存储服务进行文件同步时,用户所上传的待同步文件相比云端文件的差异局部性绝大多数都很好,而国内外知名的云服务如百度云、dropbox等的pc客户端为减少流量消耗都采用了文件差分编码同步的方法来进行文件同步,然而这个方法文件同步速度慢,而且并没有进行比较好的速度优化。其中,dropbox是一款免费网络文件同步工具,是dropbox公司运行的在线存储服务,通过云计算实现因特网上的文件同步,用户可以存储并共享文件和文件夹。



技术实现要素:

本发明的目的在于通过一种利用局部性提高文件差分同步速度的方法,来解决以上背景技术部分提到的问题。

为达此目的,本发明采用以下技术方案:

一种利用局部性提高文件差分同步速度的方法,其包括如下步骤:

s101、计算机b读取原始文件,将存储的本地文件b分块,获得所述本地文件b的各文件块;

s102、所述计算机b对所述本地文件b的各文件块分别计算校验码并生成校验码表,将所述本地文件b的文件信息和校验码表发送至计算机a;

s103、所述计算机a根据所述本地文件b的文件信息和校验码表,依据相邻文件块的局部性与待同步文件a进行匹配,并将得到的匹配未成功的文件信息反馈给所述计算机b;

s104、所述计算机b接收所述匹配未成功的文件信息,并将与所述匹配未成功的文件信息对应的文件块与所述本地文件b进行文件拼接以完成同步。

特别地,所述步骤s102中所述计算机b对所述本地文件b的各文件块分别计算校验码并生成校验码表,具体包括:

所述计算机b对所述本地文件b的各文件块分别计算32位的滚动哈希值和128位的哈希值,生成校验码表。

特别地,所述步骤s102具体包括:

所述计算机b对所述本地文件b的各文件块分别计算32位的滚动哈希值和128位的哈希值并存储至16位校验码哈希表即校验码表,将所述本地文件b的文件信息和校验码表发送至计算机a。

特别地,所述步骤s102中所述文件信息包括但不限于文件大小、文件块大小以及文件块编号。

特别地,所述步骤s103包括:所述计算机a根据所述本地文件b的文件信息和校验码表,遍历对比校验码对待同步文件a进行匹配,依据相邻文件块的局部性与待同步文件a进行匹配,并将得到的匹配未成功的文件信息反馈给所述计算机b。

特别地,所述步骤s103具体包括:所述计算机a对待同步文件a按照文件块大小,从与文件块编号最小的文件块对应部分开始,依次向后选择当前校验部分,并计算当前校验部分的校验码中的32位哈希值,在所述校验码表中查找32位哈希值,匹配成功后计算当前校验部分的校验码中的128位哈希值,在所述校验码表中查找128位哈希值,若两次均匹配成功,则与当前校验部分相邻的下次校验部分不需要计算32位哈希值,直接计算128位哈希值并在所述校验码表中查找128位哈希值,从而实现加速匹配;若当前校验部分匹配失败,将当前校验部分对应文件块的文件信息添加到匹配未成功的文件信息,直至对所述待同步文件a均进行查找后,将得到的匹配未成功的文件信息反馈给所述计算机b。

特别地,所述步骤s103中若两次均匹配成功,则与当前校验部分相邻的下次校验部分不需要计算32位哈希值,直接计算128位哈希值并在所述校验码表中查找128位哈希值,具体包括:

若两次均匹配成功,则与当前校验部分相邻的下次校验部分不需要计算32位哈希值,直接计算128位哈希值并在所述校验码表中查找128位哈希值,并将当前校验部分对应的文件块的文件块编号和文件块位置信息添加到匹配文件信息中。

特别地,所述步骤s104具体包括:所述计算机b接收所述匹配未成功的文件信息,并根据所述匹配文件信息将与所述匹配未成功的文件信息对应的文件块与所述本地文件b进行文件拼接以完成同步。

本发明提出的利用局部性提高文件差分同步速度的方法中一台计算机b将其存储的本地文件b分块,对每个文件块分别计算校验码,将本地文件b的文件信息和计算得出的校验码表发送至计算机a,计算机a存储着与b相似的待同步文件a,计算机a在将校验码分层由外而内进行对比时,利用文件局部性即与匹配的文件块相邻的文件块也很可能是匹配的这一特点来加速匹配过程,进而确定匹配未成功的文件信息,将这些信息对应的文件块发送至计算机b,计算机b将所接收的文件块与文件b进行文件拼接以实现文件同步。本发明在文件局部性较好的情况下会节约大量计算时间,适合同步差异比较集中的文件。

附图说明

图1为本发明利用局部性提高文件差分同步速度的方法流程图;

图2为本发明利用局部性提高文件差分同步速度的方法的算法流程图。

具体实施方式

为了便于理解本发明,下面将参照相关附图对本发明进行更全面的描述。附图中给出了本发明的较佳实施例。但是,本发明可以以许多不同的形式来实现,并不限于本文所描述的实施例。相反地,提供这些实施例的目的是使对本发明的公开内容理解的更加透彻全面。除非另有定义,本文所使用的所有的技术和科学术语与属于本发明的技术领域的技术人员通常理解的含义相同。本文中在本发明的说明书中所使用的术语只是为了描述具体的实施例的目的,不是旨在于限制本发明。本文所使用的术语“及/或”包括一个或多个相关的所列项目的任意的和所有的组合。

请参照图1所示,图1为本发明提供的利用局部性提高文件差分同步速度的方法流程图。

本实施例中利用局部性提高文件差分同步速度的方法具体包括如下步骤:

s101、计算机b读取原始文件,将存储的本地文件b分块,获得所述本地文件b的各文件块。需要说明的是,所述计算机b所存储的是同步前的旧文件即本地文件b,所述计算机a所存储的是待同步文件a。为观察并利用局部性,需要体现文件的局部性特征,所以需要对文件分块。

s102、所述计算机b对所述本地文件b的各文件块分别计算校验码并生成校验码表,将所述本地文件b的文件信息和校验码表发送至计算机a。

具体的,所述计算机b对所述本地文件b的各文件块分别计算32位的滚动哈希值和128位的哈希值并存储至16位校验码哈希表即校验码表,将所述本地文件b的文件信息和校验码表发送至计算机a。在本实施例中所述文件信息包括但不限于文件大小、文件块大小以及文件块编号。在本实施例中使用adler32算法来计算32位的弱校验值即32位的滚动哈希值和使用md5算法来计算128位的强校验值即128位的哈希值。

s103、所述计算机a根据所述本地文件b的文件信息和校验码表,依据相邻文件块的局部性与待同步文件a进行匹配,并将得到的匹配未成功的文件信息反馈给所述计算机b。

具体的,所述计算机a根据所述本地文件b的文件信息和校验码表,采用遍历对比校验码的方法对待同步文件a进行匹配,依据相邻文件块的局部性与待同步文件a进行匹配,并将得到的匹配未成功的文件信息反馈给所述计算机b:

所述计算机a对待同步文件a按照文件块大小,从与文件块编号最小的文件块对应部分开始,依次向后选择当前校验部分,并计算当前校验部分的校验码中的32位哈希值,在所述校验码表中查找32位哈希值,匹配成功后计算当前校验部分的校验码中的128位哈希值,在所述校验码表中查找128位哈希值,若两次均匹配成功,则与当前校验部分相邻的下次校验部分不需要计算32位哈希值,直接计算128位哈希值并在所述校验码表中查找128位哈希值,并将当前校验部分对应的文件块的文件块编号和文件块位置信息添加到匹配文件信息中,从而实现匹配过程的加速;若当前校验部分匹配失败,将当前校验部分对应文件块的文件信息添加到匹配未成功的文件信息,直至对所述待同步文件a均进行查找后,将得到的匹配未成功的文件信息反馈给所述计算机b。

s104、所述计算机b接收所述匹配未成功的文件信息,并将与所述匹配未成功的文件信息对应的文件块与所述本地文件b进行文件拼接以完成同步。

具体的,所述计算机b接收所述匹配未成功的文件信息,并根据所述匹配文件信息将与所述匹配未成功的文件信息对应的文件块与所述本地文件b进行文件拼接以完成同步。

如图2所示,基于上述利用局部性提高文件差分同步速度的方法,本实施例还给出了该方法的具体算法流程,包括如下步骤:

s201、计算机b读取原始文件,将所述本地文件b分块,以获得本地文件b的各文件块;

s202、所述计算机b对所述本地文件b的各文件块分别计算校验码,并将所述本地文件的文件信息和校验码表发送至计算机a;

s203、所述计算机a对待同步文件a按照所述文件块大小,从与所述文件块编号最小的文件块对应部分开始,依次向后选择当前校验部分,并计算当前校验部分的校验码中的32位哈希值,在所述校验码哈希表中查找32位哈希值;

s204、计算当前校验部分的校验码中的128位哈希值,在所述校验码哈希表中查找128位哈希值。其中,步骤s204是在步骤s203查找时匹配成功后的条件下进行的。

s205、与当前校验部分相邻的下次校验部分不需要计算32位哈希值,直接计算128位哈希值并在所述校验码哈希表中查找128位哈希值,以达到加速匹配的效果。其中,步骤s205是在步骤s204查找时匹配成功后的条件下进行。

s206、将当前校验部分对应文件块的文件信息添加到匹配未成功的文件信息中。其中,所述当前校验部分为匹配失败的校验部分,步骤是在s203或s204查找时匹配失败后的条件下进行的。

s207、所述计算机b接收所述匹配未成功的文件信息,并将与所述匹配未成功的文件信息对应的文件块与所述本地文件b进行文件拼接以完成同步。

本发明的技术方案中一台计算机b将其存储的本地文件b分块,对每个文件块分别计算校验码,将本地文件b的文件信息和计算得出的校验码表发送至计算机a,计算机a存储着与b相似的待同步文件a,计算机a在将校验码分层由外而内进行对比时,利用文件局部性即与匹配的文件块相邻的文件块也很可能是匹配的这一特点来加速匹配过程,进而确定匹配未成功的文件信息,将这些信息对应的文件块发送至计算机b,计算机b将所接收的文件块与文件b进行文件拼接以实现文件同步。本发明在文件局部性较好的情况下会节约大量计算时间,适合同步差异比较集中的文件。

本领域普通技术人员可以理解实现上述实施例中的全部或部分流程,是可以通过计算机程序来指令相关的硬件来完成,所述的程序可存储于一计算机可读取存储介质中,该程序在执行时,可包括如上述各方法的实施例的流程。其中,所述的存储介质可为磁碟、光盘、只读存储记忆体(read-onlymemory,rom)或随机存储记忆体(randomaccessmemory,ram)等。

注意,上述仅为本发明的较佳实施例及所运用技术原理。本领域技术人员会理解,本发明不限于这里所述的特定实施例,对本领域技术人员来说能够进行各种明显的变化、重新调整和替代而不会脱离本发明的保护范围。因此,虽然通过以上实施例对本发明进行了较为详细的说明,但是本发明不仅仅限于以上实施例,在不脱离本发明构思的情况下,还可以包括更多其他等效实施例,而本发明的范围由所附的权利要求范围决定。

当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1