服务器、客户端及文件同步方法

文档序号:8000548阅读:140来源:国知局
服务器、客户端及文件同步方法
【专利摘要】一种文件同步方法包括:服务器计算被同步文件的第一校验信息并建立校验信息库;服务器接收客户端发送的同步请求后发送第一校验信息和被同步文件的修改时间至客户端;客户端若判断同步文件的修改时间与被同步文件的修改时间不同且同步文件的大小大于预设值,则计算同步文件的第二校验信息;客户端根据第二校验信息和第一校验信息计算差异文件;客户端再将差异文件以及第二校验信息发送至服务器;服务器接收差异文件以及第二校验信息后,根据差异文件更新被同步文件并将校验信息库中的第一校验信息替换为第二校验信息。本发明还提供了一种服务器与客户端。上述文件同步方法可让服务器与客户端进行快速的文件同步。
【专利说明】服务器、客户端及文件同步方法

【技术领域】
[0001]本发明涉及文件同步,尤其涉及一种服务器与客户端之间的文件同步方法。

【背景技术】
[0002]RSYNC是类UNIX环境下的一种高效的文件同步工具,它通过优化同步数据流程,减少了数据通信量,同时提高了文件传输效率。然而在传统的RSYNC中存在一些问题。传统的RSNYC的算法中,如图1所示,每次有文件请求时服务器端都需要首先计算本地被同步文件的弱校验值和强校验值,计算完成后发送到客户端。这时客户端还要计算本地的同步文件的弱校验值和强校验值,比较算出差异文件后传送到服务器端。服务器端在接收到差异文件后,结合接收到的差异文件把文件恢复出来。
[0003]可见在传统的算法中,主要的开销都用在弱校验值和强校验值的计算上。当文件很多或者客户端的请求很多时,服务器端需要处理巨大的计算量,服务器端将形成校验值计算的瓶颈,整个系统的同步速度将急剧下降。如果服务器和客户端上的文件本来就已经同步,在原来的算法中仍然会进行计算、传输、比较恢复等所有的操作,增加了很多无谓的计算时间,大大降低了文件同步效率。


【发明内容】

[0004]鉴于以上内容,有必要提供一种服务器和一种客户端,能够高效地进行文件同步。
[0005]另,还有必要提供一种文件同步方法,能够高效地进行文件同步。
[0006]本发明实施方式中提供的一种服务器,与客户端相连,所述服务器存储被同步文件,所述客户端存储同步文件,所述服务器包括:校验信息库建立模块,用于计算所述被同步文件的第一校验信息,并建立校验信息库,所述校验信息库包括所述第一校验信息;服务器端收发模块,用于在接收所述客户端发送的同步文件请求后发送所述第一校验信息至所述客户端,并从所述客户端接收所述同步文件的第二校验信息以及所述同步文件与所述被同步文件之间的差异文件;服务器端文件校验模块,用于根据接收到的所述差异文件更新所述被同步文件并将所述校验信息库中的所述第一校验信息替换为所述第二校验信息。
[0007]优选地,所述校验信息库建立模块将校验信息库的信息以哈希单链表的形式存储,一个所述哈希单链表存储一个所述被同步文件的信息。
[0008]优选地,所述第一校验信息为所述被同步文件的弱校验值和强校验值,所述第二校验信息为所述同步文件的弱校验值和强校验值。
[0009]优选地,所述校验信息库还包括所述被同步文件的修改时间,所述服务器端收发模块还用于将所述被同步文件的修改时间发送至所述客户端。
[0010]本发明实施方式中提供的一种客户端,与服务器相连,所述客户端存储同步文件、所述同步文件的修改时间以及一个文件大小的预设值,所述服务器存储被同步文件以及所述被同步文件的修改时间,所述客户端包括:客户端收发模块,用于从所述客户端向所述服务器发送同步请求,也用于接收所述服务器发送的所述被同步文件的第一校验信息和修改时间;客户端判断模块,用于判断所述同步文件的修改时间是否与所述被同步文件的修改时间相同,也用于判断所述同步文件的大小是否大于所述预设值;客户端文件校验模块,用于在所述同步文件的修改时间与所述被同步文件的修改时间不同且所述同步文件的大小大于所述预设值时,计算所述客户端中的所述同步文件的第二校验信息并结合所述第一校验信息计算所述同步文件与所述被同步文件之间的差异文件。
[0011]优选地,所述客户端收发模块还用于发送所述差异文件以及所述第二校验信息至所述服务器。
[0012]优选地,所述第一校验信息为所述被同步文件的弱校验值和强校验值,所述第二校验信息为所述同步文件弱校验值和强校验值。
[0013]优选地,所述客户端还包括:当所述同步文件的修改时间与所述被同步文件的修改时间相同时,所述客户端不再进行文件同步;当所述同步文件的修改时间与所述被同步文件的修改时间不同且所述同步文件的大小小于所述预设值时,则客户端发送模块直接将同步文件传送至所述服务器。
[0014]本发明实施方式提供的一种文件同步方法,应用于服务器和客户端之间同步文件,所述服务器存储被同步文件,所述客户端存储同步文件、所述同步文件的修改时间以及一个文件大小的预设值,所述文件同步方法包括:所述服务器计算所述被同步文件的第一校验信息并建立校验信息库,所述校验信息库的信息包括所述第一校验信息和所述被同步文件的修改时间;所述客户端发送同步请求;所述服务器接收所述同步请求后发送所述第一校验信息和所述被同步文件的修改时间至所述客户端;所述客户端若判断所述同步文件的修改时间与所述被同步文件的修改时间不同且所述同步文件的大小大于所述预设值,则计算所述同步文件的第二校验信息;所述客户端根据所述第二校验信息和所述第一校验信息计算所述同步文件与所述被同步文件之间的差异文件;所述客户端再将所述差异文件以及所述第二校验信息发送至所述服务器;所述服务器接收所述差异文件以及所述第二校验信息后,根据所述差异文件更新所述被同步文件并将所述校验信息库中的所述第一校验信息替换为所述第二校验信息。
[0015]优选地,所述校验信息库的信息以哈希单链表的形式存储,一个所述哈希单链表存储一个所述被同步文件的信息。
[0016]优选地,所述第一校验信息为所述被同步文件的弱校验值和强校验值,所述第二校验信息为所述同步文件的弱校验值和强校验值。
[0017]优选地,所述的文件同步方法还包括:当所述客户端判断所述被同步文件的修改时间与所述同步文件的修改时间相同时,则不进行文件同步;当所述客户端判断所述被同步文件的修改时间与所述同步文件的修改时间不同且所述同步文件的大小小于所述预设值时,则直接传送所述同步文件至所述服务器,再由所述服务器更新所述被同步文件。

【专利附图】

【附图说明】
[0018]图1为传统的文件同步方法的示意图。
[0019]图2为本发明文件同步方法的一实施环境图。
[0020]图3为本发明服务器和客户端的功能模块图。
[0021]图4为本发明服务器中校验信息库的信息存储的一实施方式示意图。
[0022]图5为本发明文件同步方法的一示意图。
[0023]图6为本发明文件同步方法一实施方式的流程图。
[0024]主要元件符号说明
[0025]服务器100
[0026]校验信息库建立模块102
[0027]校验信息库103
[0028]服务器端收发模块104
[0029]服务器端文件校验模块 106
[0030]客户端200
[0031]客户端收发模块202
[0032]客户端判断模块204
[0033]客户端文件校验模块206
[0034]如下【具体实施方式】将结合上述附图进一步说明本发明。

【具体实施方式】
[0035]图2为本发明文件同步方法的一实施环境图。其中,客户端200通过网络与服务器100相连,其中,客户端200为平板电脑、台式电脑、笔记本电脑和智能手机等智能客户端设备。在客户端200中,存储着同步文件,在服务器100中,存储着被同步文件,其中同步文件和被同步文件有着相同的文件名。当客户端200中的同步文件被修改后,要求服务器100中对应的被同步文件也做相应的修改,则整个过程需要文件同步。
[0036]图3为本发明服务器和客户端的功能模块图。在本实施方式中,服务器100则包括校验信息库建立模块102、校验信息库103、服务器端收发模块104和服务器端文件校验模块106,客户端200包括客户端收发模块202、客户端判断模块204和客户端文件校验模块 206。
[0037]在文件同步之前,校验信息库建立模块102获得被同步文件的校验信息,并根据所获得的校验信息建立校验信息库103,其中,校验信息库103包括被同步文件的第一校验信息和修改时间,而被同步文件的第一校验信息为被同步文件的弱校验值和强校验值。在本实施方式中,校验信息库建立模块102根据之前的同步记录或者计算被同步文件的弱校验值和强校验值来获得服务器100存储的被同步文件的第一校验信息。
[0038]在本实施方式中,校验信息数据库中的数据以哈希单链表的形式加以存储,如图4所示,哈希单链表包括头指针和多个节点,哈希单链表由头指针名唯一确定。在本实施方式中,被同步文件包括多个数据块,每个数据块都有对应的弱校验值和强校验值。同时,哈希单链表的头指针名为被同步文件的文件名,并且每个节点的数据域存储每个数据块的弱校验值和强校验值以及每个数据块的修改时间,每个节点的指针域则存储着下一个数据块存储的地址。另外,针对用哈希表存储的每个被同步文件的信息,一旦有数据块增减或者修改,对应的节点则会置放在哈希表的开始节点,因此,每个被同步文件的更新时间即是对应哈希表开始节点存储的修改时间。
[0039]继续转至图3,其中客户端收发模块202用于从所述客户端向所述服务器100发送同步请求。
[0040]服务器端收发模块104用于接收客户端收发模块202所发送的所述文件同步请求,将校验信息库103中的第一校验信息以及被同步文件的修改时间发送至客户端200并由客户端收发模块202接收。在本实施方式中,被同步文件地第一校验信息和修改时间以数据封包的形式发送给客户端收发模块202。
[0041]客户端判断模块204在客户端收发模块202接收到第一校验信息和被同步文件地修改时间后,开始判断客户端200内存储的同步文件的修改时间和服务器100存储的被同步文件的修改时间是否相同,若判断二者的修改时间相同,则说明同步文件相对于被同步文件没有做出任何修改,故不需进行同步,若判断二者的修改时间并不相同,则说明同步文件相对于被同步文件做了一定修改,则客户端判断模块204继续判断同步文件的大小是否大于一预设值,若判断同步文件的大小小于一预设值,则由客户端收发模块202直接将同步文件发送至服务器100,但如果判断同步文件的大小大于一预设值,则进行下面的过程。在本实施方式中,所述预设值为5兆,如果客户端判断模块204判断的结果小于5兆,此时直接传送同步文件至服务器100所需时间要少于用RSYNC算法进行同步所花费时间,故在同步文件很小的时候,客户端收发模块202可以直接将同步文件传送至服务器100而不需要再进行一系列的计算。对于本实施方式中的预设值,在其他实施方式中,也可根据需要设为其他数值。
[0042]客户端文件校验模块206用于计算客户端200中的同步文件的第二校验信息并结合第一校验信息计算同步文件的差异文件。其中,第二校验信息为同步文件弱校验值和强校验值,客户端200可以根据第二校验信息和接收的服务器端收发模块104传送过来的第一校验信息加以比对可以计算出修改后的同步文件与被同步文件的一个差异文件,这个差异文件为同步过程中的一个关键元素。在本实施方式中,差异文件由一个指示文件表和一个差异数据文件组成,而二者则是根据RSYNC差异文件的生成算法生成。
[0043]在客户端文件校验模块206生成了差异文件和第二校验信息后,客户端收发模块202将生成的差异文件以及第二校验信息发送至服务器100并由服务器端收发模块104加以接收。
[0044]在服务器端收发模块104接收到差异文件和第二校验信息后,服务器端文件校验模块106将根据差异文件更新被同步文件并将校验信息库103中的第一校验信息替换为第二校验信息。在本实施方式中,当服务器端收发模块104接收到客户端200传送过来的差异文件后,服务器端文件校验模块106则结合差异文件和对应的被同步文件生成一个新文件并加以存储,其中,新文件替换对应的被同步文件,并且具有和对应被同步文件相同的文件名。
[0045]实施方式中的文件同步系统依据各个模块的协调运行,可以实现高效的文件同止/J/ O
[0046]图5为本发明文件同步方法的一示意图,如图5所示,通过在服务器100端预先建立好一个检验信息库,存储每个被同步文件的校验信息,当收到客户端200的文件同步请求时,即将对应文件的校验信息发送给客户端200,如此只需要客户端200计算同步文件的校验信息,不需要再同时在服务器100端去计算被同步文件的校验信息,如此,不仅提高了文件同步的速度,也减轻了服务器100的计算负担。
[0047]图6为本发明文件同步方法一实施方式的流程图。所述文件同步方法可应用于图3所示的服务器100和客户端200中,并通过其中的功能模块的协调执行以实现其功能。
[0048]在步骤S602,校验信息库建立模块102在服务器100端建立校验信息库103,其中,校验信息库103包括被同步文件的第一校验信息和修改时间。其中,第一校验信息为被同步文件的弱校验值和强校验值,在本实施方式中,校验信息库103中第一校验信息有两个来源,即可以根据之前的同步记录下被同步文件的第一校验信息,或者在服务器100端直接事先计算出被同步文件的第一校验信息,即被同步文件的弱校验值和强校验值。
[0049]在步骤S604中,服务器端收发模块104接收客户端200中客户端收发模块202发送的同步请求,在本实施方式中,同步文件的文件名与服务器100中的被同步文件的文件名相同。
[0050]在步骤S606,服务器端收发模块104将被同步文件的第一校验信息以及被同步文件的修改时间发送给客户端200,并由客户端收发模块202接收,在本实施方式中,第一校验信息和被同步文件的修改时间以一种数据封包的形式发送给客户端200。
[0051]在步骤S608,客户端判断模块204判断同步文件的修改时间是否于被同步文件的修改时间一致,如果一致,说明同步文件相对被同步文件没有任何变化,故不进行同步,则返回步骤S604,继续由服务器端收发模块104等待客户端200的同步请求,但如果判断二者的修改时间不一致,则
[0052]在步骤S610,客户端判断模块204判断同步文件的大小是否大于一预设值,若判断同步文件的大小小于一预设值,则在步骤S620,客户端收发模块202直接将同步文件发送至服务器100,再在步骤S618更新被同步文件。若判断同步文件的大小大于一预设值,则
[0053]在步骤S612和步骤S614中,客户端文件校验模块206计算客户端200中的同步文件的第二校验信息并结合客户端收发模块202接收的第一校验信息计算差异文件。在本实施方式中,同步文件的第二校验信息包括同步文件的弱校验值和强校验值,同时,本实施方式中的差异文件包括一个指示表文件和一个差异数据文件,其中,指示表文件和差异数据文件根据RSYNC差异文件生成算法生成。
[0054]在步骤S616,客户端收发模块202将生成的差异文件以及第二校验信息发送至服务器100端。
[0055]在步骤S618,服务器端文件校验模块106根据服务器端收发模块104接收的差异文件生成一个新文件,并将旧的被同步文件替换成所生成的新文件,同时,也将校验信息库103中的第一校验信息替换成第二校验信息,在本实施方式中,新文件和修改后的同步文件相同,并且和被同步文件具有相同的文件名。
[0056]根据本发明,在文件同步的过程中,通过事先建立好被同步文件的信息库,减少了服务器100端的计算量,节约了计算时间,提高了文件同步效率。
【权利要求】
1.一种服务器,与客户端相连,所述服务器存储被同步文件,所述客户端存储同步文件,其特征在于,所述服务器包括: 校验信息库建立模块,用于计算所述被同步文件的第一校验信息,并建立校验信息库,所述校验信息库包括所述第一校验信息; 服务器端收发模块,用于在接收所述客户端发送的同步文件请求后发送所述第一校验信息至所述客户端,并从所述客户端接收所述同步文件的第二校验信息以及所述同步文件与所述被同步文件之间的差异文件;及 服务器端文件校验模块,用于根据接收到的所述差异文件更新所述被同步文件并将所述校验信息库中的所述第一校验信息替换为所述第二校验信息。
2.如权利要求1所述的服务器,其特征在于,所述校验信息库建立模块将所述校验信息库的信息以哈希单链表的形式存储,一个所述哈希单链表存储一个所述被同步文件的信肩、O
3.如权利要求1所述的服务器,其特征在于,所述第一校验信息为所述被同步文件的弱校验值和强校验值,所述第二校验信息为所述同步文件的弱校验值和强校验值。
4.如权利要求1所述的服务器,其特征在于,所述校验信息库还包括所述被同步文件的修改时间,所述服务器端收发模块还用于将所述被同步文件的修改时间发送至所述客户端。
5.一种客户端,与服务器相连,所述客户端存储同步文件、所述同步文件的修改时间以及一个文件大小的预设值,所述服务器存储被同步文件以及所述被同步文件的修改时间,其特征在于,所述客户端包括: 客户端收发模块,用于向所述服务器发送同步文件请求,还用于接收所述服务器发送的所述被同步文件的第一校验信息和修改时间; 客户端判断模块,用于判断所述同步文件的修改时间是否与所述被同步文件的修改时间相同,还用于判断所述同步文件的大小是否大于所述预设值; 客户端文件校验模块,用于在所述同步文件的修改时间与所述被同步文件的修改时间不同且所述同步文件的大小大于所述预设值时,计算所述客户端中的所述同步文件的第二校验信息并结合所述第一校验信息计算所述同步文件与所述被同步文件之间的差异文件。
6.如权利要求5所述的客户端,其特征在于,所述客户端收发模块还用于发送所述差异文件以及所述第二校验信息至所述服务器。
7.如权利要求5所述的客户端,其特征在于,所述第一校验信息为所述被同步文件的弱校验值和强校验值,所述第二校验信息为所述同步文件弱校验值和强校验值。
8.如权利要求5所述的客户端,其特征在于,还包括: 当所述同步文件的修改时间与所述被同步文件的修改时间相同时,所述客户端不再进行文件同步; 当所述同步文件的修改时间与所述被同步文件的修改时间不同且所述同步文件的大小小于所述预设值时,所述客户端发送模块直接将所述同步文件传送至所述服务器。
9.一种文件同步方法,应用于服务器和客户端之间同步文件,所述服务器存储被同步文件,所述客户端存储同步文件、所述同步文件的修改时间以及一个文件大小的预设值,其特征在于,所述文件同步方法包括: 所述服务器计算所述被同步文件的第一校验信息并建立校验信息库,所述校验信息库的信息包括所述第一校验信息和所述被同步文件的修改时间; 所述客户端发送同步请求; 所述服务器接收所述同步请求后发送所述第一校验信息和所述被同步文件的修改时间至所述客户端; 所述客户端若判断所述同步文件的修改时间与所述被同步文件的修改时间不同且所述同步文件的大小大于所述预设值,则计算所述同步文件的第二校验信息; 所述客户端根据所述第二校验信息和所述第一校验信息计算所述同步文件与所述被同步文件之间的差异文件; 所述客户端再将所述差异文件以及所述第二校验信息发送至所述服务器;及 所述服务器接收所述差异文件以及所述第二校验信息后,根据所述差异文件更新所述被同步文件并将所述校验信息库中的所述第一校验信息替换为所述第二校验信息。
10.如权利要求9所述的文件同步方法,其特征在于,所述校验信息库的信息以哈希单链表的形式存储,一个所述哈希单链表存储一个所述被同步文件的信息。
11.如权利要求9所述的文件同步方法,其特征在于,所述第一校验信息为所述被同步文件的弱校验值和强校验值,所述第二校验信息为所述同步文件的弱校验值和强校验值。
12.如权利要求9所述的文件同步方法,其特征在于,还包括: 当所述客户端判断所述被同步文件的修改时间与所述同步文件的修改时间相同时,则不进行文件同步; 当所述客户端判断所述被同步文件的修改时间与所述同步文件的修改时间不同且所述同步文件的大小小于所述预设值时,则直接传送所述同步文件至所述服务器,再由所述服务器更新所述被同步文件。
【文档编号】H04L29/06GK104243508SQ201310225820
【公开日】2014年12月24日 申请日期:2013年6月7日 优先权日:2013年6月7日
【发明者】周泗平 申请人:富鸿康科技(深圳)有限公司, 建汉科技股份有限公司
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1