CN106657174B - 一种数据同步方法、更新方法及装置 - Google Patents
一种数据同步方法、更新方法及装置 Download PDFInfo
- Publication number
- CN106657174B CN106657174B CN201510716050.4A CN201510716050A CN106657174B CN 106657174 B CN106657174 B CN 106657174B CN 201510716050 A CN201510716050 A CN 201510716050A CN 106657174 B CN106657174 B CN 106657174B
- Authority
- CN
- China
- Prior art keywords
- node
- file tree
- file
- nodes
- version number
- 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.)
- Active
Links
Images
Classifications
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L67/00—Network arrangements or protocols for supporting network services or applications
- H04L67/01—Protocols
- H04L67/10—Protocols in which an application is distributed across nodes in the network
- H04L67/1095—Replication or mirroring of data, e.g. scheduling or transport for data synchronisation between network nodes
Landscapes
- Engineering & Computer Science (AREA)
- Computer Networks & Wireless Communication (AREA)
- Signal Processing (AREA)
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
- Information Transfer Between Computers (AREA)
Abstract
本申请公开了一种数据同步方法、更新方法及装置。本申请实施例中,网络侧接收到客户端设备发送的数据同步请求后,获取网络侧存储的对应的文件树,确定需要待同步给客户端设备的节点,并客户端设备发送数据同步命令,使客户端设备根据该数据同步命令进行数据同步。由于每次进行文件树同步时需要针对网络侧存储的文件树确定待同步给客户端设备的节点,而非将该文件树的全部节点同步给客户端设备,因此可以提高数据同步效率。
Description
技术领域
本申请涉及通信技术领域,尤其涉及一种数据同步方法、更新方法及装置。
背景技术
网络存储或者称云存储技术近年来发展迅速。网络存储技术一方面为客户端设备的本地文件提供网络存储功能,另一方面可以实现多客户端设备、多存储设备或者多平台储存数据的自动同步功能。
用户的文件以树状形式存储在服务器端,其它客户端设备与服务端通信,获取或者提交文件树的变化,实现各客户端设备与服务器之间的文件同步,省去了用户在各个客户端设备之间对比和拷贝文件的过程,为移动时代用户的文件存储需求提供了方便。
典型的同步流程为:客户端设备A的本地文件树发生变化后,提交变化信息到服务器,实现到客户端设备A与服务端数据一致;客户端设备B感知并获取到服务器端的变化信息,将客户端设备B的本地文件树同步为与服务器端一致。同步完成后,客户端设备A与客户端设备B的文件树结构达到一致。
申请内容
本申请实施例提供一种数据同步方法及装置,用以根据文件树上待同步给客户端设备的节点实现文件树更新。
本申请实施例提供的数据同步方法,包括:
接收客户端设备发送的数据同步请求,所述数据同步请求中包括文件树索引信息;
根据所述文件树索引信息,获取网络侧存储的与所述文件树索引信息对应的第一文件树;
确定所述第一文件树上待同步给所述客户端设备的节点,一个文件树中除根节点以外的每个节点对应的一个文件或文件夹;
根据确定出的待同步给所述客户端设备的节点,向所述客户端设备发送数据同步命令,所述数据同步命令用于指示所述客户端设备对所述客户端设备存储的与所述文件树索引信息对应的第二文件树进行更新。
优选地,所述确定所述第一文件树上待同步给所述客户端设备的节点,包括:确定数据同步方式,所确定的数据同步方式包括全量更新或差量更新;根据确定的同步方式,确定所述第一文件树上待同步给所述客户端设备的节点。
优选地,所述数据同步请求中还包括与所述文件树索引信息对应的第二文件树的版本号;
所述第一文件树以及所述第二文件树中,根节点的版本号与除根节点以外的其它所有节点中的最大版本号相同,文件树的版本号与该文件树的根节点的版本号相同;当文件树中的一个节点更新时,该节点的版本号递增。
优选地,所述确定数据同步方式,包括:
确定所述第一文件树中的有效节点数,其中,一个文件树上的有效节点是指该文件树上除被标记为已删除节点之外的所有节点;
确定所述第一文件树与所述第二文件树的差量节点数,其中,所述第一文件树与所述第二文件树的差量节点是指所述第一文件树上版本号大于所述第二文件树的版本号的节点;
若所述差量节点数大于或等于所述有效节点数的n倍,则确定采用全量更新,否则确定采用差量更新,n≥1。
优选地,所述数据同步请求中还包括同步方式指示信息,所述同步方式指示信息所指示的同步方式包括全量更新或差量更新;
所述确定数据同步方式,包括:
根据所述数据同步请求中包括的同步方式指示信息,确定数据同步方式。
优选地,若所述同步方式指示信息为全量更新指示信息,则所述全量更新指示信息是所述客户端设备在根据接收到的数据同步命令进行文件树同步操作失败后,携带于所述数据同步请求中的。
优选地,所述根据确定的同步方式,确定所述第一文件树上待同步给所述客户端设备的节点,包括:
若确定出的同步方式为全量更新,则将所述第一文件树上的有效节点确定为待同步给所述客户端设备的节点;其中,一个文件树上的有效节点是指该文件树上除被标记为已删除节点之外的所有节点;或者
若确定出的同步方式为差量更新,则将所述第一文件树与所述第二文件树的差量节点确定为待同步给所述客户端设备的节点,其中,所述第一文件树与所述第二文件树的差量节点是指所述第一文件树上版本号大于所述第二文件树的版本号的节点。
优选地,所述向所述客户端设备发送数据同步命令,包括:
根据确定出的所述第一文件树上待同步给所述客户端设备的节点,以及分页大小参数,确定总分页页数,以及每页对应的节点的更新信息;其中,所述分页大小参数用节点数量表示,一个分页对应的节点数量等于所述分页大小参数;
根据分页顺序,向所述客户端设备发送数据同步命令,其中携带当前分页对应的节点的更新信息、当前分页的页号以及总分页页数。
其中,根据分页顺序,向所述客户端设备发送数据同步命令之后,还包括:
接收所述客户端设备再次发送的数据同步请求,其中携带有所请求的分页的页号;
根据所述客户端设备再次发送的数据同步请求中携带的分页页号,获取对应分页所对应的节点的更新信息;
向所述客户端设备发送数据同步命令,其中携带有当前分页对应的节点的更新信息、当前分页的页号以及总分页页数。
优选地,若在向所述客户端设备发送数据同步命令后,所述第一文件树的版本号发生更新,则还包括:
将更新后的所述第一文件树上,版本号大于所述第一文件树更新前的版本号的节点的更新信息,发送给所述客户端设备;或者
向所述客户端设备发送通知消息,所述通知消息用于通知所述第一文件树的版本号发生更新并征询所述客户端设备是否发起数据同步请求;其中,所述通知消息中包括所述第一文件树更新后的版本号。
本申请实施例还提供了一种数据同步装置,包括:
接收模块,用于接收客户端设备发送的数据同步请求,所述数据同步请求中包括文件树索引信息;
获取模块,用于根据所述文件树索引信息,获取网络侧存储的与所述文件树索引信息对应的第一文件树;
确定模块,用于确定所述第一文件树上待同步给所述客户端设备的节点,一个文件树中除根节点以外的每个节点对应的一个文件或文件夹;
发送模块,用于根据确定出的待同步给所述客户端设备的节点,向所述客户端设备发送数据同步命令,所述数据同步命令用于指示所述客户端设备对所述客户端设备存储的与所述文件树索引信息对应的第二文件树进行更新。
优选地,所述确定模块具体用于:确定数据同步方式,所确定的数据同步方式包括全量更新或差量更新;根据确定的同步方式,确定所述第一文件树上待同步给所述客户端设备的节点。
其中,所述数据同步请求中还包括与所述文件树索引信息对应的第二文件树的版本号;所述第一文件树以及所述第二文件树中,根节点的版本号与除根节点以外的其它所有节点中的最大版本号相同,文件树的版本号与该文件树的根节点的版本号相同;当文件树中的一个节点更新时,该节点的版本号递增。
优选地,所述确定模块具体用于:
确定所述第一文件树中的有效节点数,其中,一个文件树上的有效节点是指该文件树上除被标记为已删除节点之外的所有节点;
确定所述第一文件树与所述第二文件树的差量节点数,其中,所述第一文件树与所述第二文件树的差量节点是指所述第一文件树上版本号大于所述第二文件树的版本号的节点;
若所述差量节点数大于或等于所述有效节点数的n倍,则确定采用全量更新,否则确定采用差量更新,n≥1。
本申请实施例中,网络侧接收到客户端设备发送的数据同步请求后,获取网络侧存储的对应的文件树,确定该网络侧存储的文件树上需要待同步给客户端设备的节点,并向客户端设备发送数据同步命令,使客户端设备根据该数据同步命令进行数据同步。与每次文件树同步时将文件树的全部节点发送给客户端进行同步更新相比,可以提高数据同步效率。
本申请实施例还提供一种数据更新方法及装置,用以实现基于文件树的数据更新。
本实施例提供的数据更新方法,包括:
接收数据同步命令,所述数据同步命令中包括文件树索引信息以及节点的更新信息;其中,一个文件树中除根节点以外的每个节点对应一个文件或文件夹;
根据所述文件树索引信息,获取对应的待同步的文件树;
根据所述数据同步命令中包括的节点的更新信息,更新所述待同步的文件树;其中,一个文件树中,根节点的版本号与除根节点以外的其他所有节点中的最大版本号相同,文件树的版本号与该文件树的根节点的版本号相同,当文件树中的一个节点更新时,该节点的版本号递增。
优选地,所述节点的更新信息包括:待修改文件名称的节点的在文件树中的位置信息以及修改后的文件名;相应地,所述更新所述待同步的文件树,包括:
根据所述待修改文件名称的节点的位置信息,将所述待同步的文件树上相应节点的版本号加1,并更新该文件树的版本号;
根据修改后的文件名称,更新节点与文件的关联关系中所述待修改文件名称的节点所对应的文件的名称。
优选地,所述节点的更新信息包括:待修改文件夹名称的节点在文件树中的位置信息以及修改后的文件夹名称;相应地,所述更新所述待同步的文件树,包括:
根据所述待修改文件夹名称的节点的位置信息,将所述待同步的文件树上相应节点的版本号加1;
若所述待修改文件夹名称的节点下包含子节点,则分别更新所述待修改文件夹名称的节点下的所有子节点的版本号;其中,对于每个子节点,更新该子节点的版本号时,在该子节点当前的版本号上加上该子节点的父节点的版本差,所述父节点的版本差为该父节点更新后的版本号与更新前的版本号之差;
更新所述待同步的文件树的版本号;
根据修改后的文件夹名称,更新节点与文件夹的关联关系中,所述待修改文件夹名称的节点所对应的文件夹的名称。
优选地,所述节点的更新信息包括:待删除的节点在文件树中的位置信息;相应地,所述更新待同步的文件树,包括:
根据所述待删除的节点的位置信息,在所述待同步的文件树上将相应节点标记为删除;
将所述被标记为删除的节点的版本号加1,并更新所述待同步的文件树的版本号。
优选地,所述节点的更新信息包括:待删除的节点在文件树中的位置信息;相应地,所述更新所述待同步的文件树,包括:
根据所述待删除的节点的位置信息,在所述待同步的文件树上将相应节点标记为删除,以及将所述被标记为删除的节点的所有子节点标记为删除;
分别将所述标记为删除的节点的版本号加1,并更新所述待同步的文件树的版本号。
优选地,所述节点的更新信息包括:新增加的节点在文件树中的位置信息以及所述新增加的节点所对应的文件;相应地,所述更新所述待同步的文件树,包括:
根据所述新增加的节点的位置信息,在所述待同步的文件树上增加节点;
将新增加的节点的版本号设置为所述待同步的文件树的版本号加1,并更新所述待同步的文件树的版本号;
存储所述新增加的节点所对应的文件,建立所述新增加的节点与该节点所对应的文件的关联关系。
优选地,所述节点的更新信息包括:新增加的节点在文件树中的位置信息以及所述新增加的节点所对应的文件夹;相应地,所述更新所述待同步的文件树,包括:
根据所述新增加的节点的位置信息,在所述待同步的文件树上增加节点;
将新增加的节点的版本号设置为所述待同步的文件树的版本号加1,并更新所述待同步的文件树的版本号;
建立所述新增加的节点与该节点所对应的文件夹的关联关系。
本申请实施例还提供了一种数据更新装置,包括:
接收模块,用于接收数据同步命令,所述数据同步命令中包括文件树索引信息以及节点的更新信息;其中,一个文件树中除根节点以外的每个节点对应一个文件或文件夹;
获取模块,用于根据所述文件树索引信息,获取对应的待同步的文件树;
更新模块,用于根据所述数据同步命令中包括的节点的更新信息,更新所述待同步的文件树;其中,一个文件树中,根节点的版本号与除根节点以外的其他所有节点中的最大版本号相同,文件树的版本号与该文件树的根节点的版本号相同,当文件树中的一个节点更新时,该节点的版本号递增。
本申请实施例中,接收到数据同步命令后,根据该数据同步命令中包含的文件树索引信息获取对应的文件树,根据该数据同步命令中包含的节点更新信息更新该文件树,从而实现了基于文件树的数据更新过程。
附图说明
为了更清楚地说明本申请实施例中的技术方案,下面将对实施例描述中所需要使用的附图作简要介绍,显而易见地,下面描述中的附图仅仅是本申请的一些实施例,对于本领域的普通技术人员来讲,在不付出创造性劳动性的前提下,还可以根据这些附图获得其他的附图。
图1为本申请实施例提供的网络架构示意图;
图2为本申请实施例提供的文件树更新流程示意图;
图3为本申请实施例提供的文件树版本号更新流程示意图;
图4至图7分别为本申请实施例提供的文件树更新示意图;
图8为本申请实施例提供的文件树同步流程示意图;
图9为本申请实施例提供的文件树同步过程中网络侧的文件树发生更新的示意图;
图10为本申请实施例提供的数据更新装置的结构示意图;
图11为本申请实施例提供的数据同步装置的结构示意图;
图12为本申请实施例提供的客户端设备的结构示意图;
图13为本申请实施例提供的服务器的结构示意图。
具体实施方式
为了使本申请的目的、技术方案和优点更加清楚,下面将结合附图对本申请作进一步地详细描述,显然,所描述的实施例仅仅是本申请一部份实施例,而不是全部的实施例。基于本申请中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其它实施例,都属于本申请保护的范围。
图1示例性地示出了本申请实施例适用的网络系统架构。
如图1所示,该架构中包括服务器101,服务器101通过网络102与多个客户端设备通信。所述网络可以是无线通信网络,也可以是有线通信网络。
所述客户端设备可包括无线通信设备,比如手机、平板电脑、穿戴设备等,所述客户端设备也可以是个人计算机、笔记本电脑等。比如,图中示出的客户端设备包括:第一手机103、第二手机104、平板电脑105、笔记本电脑106、计算机107。
所述服务器101可以是采用云计算技术的服务器或服务器集群。服务器101能够提供网络存储功能。
在实际应用中,该服务器101可为网盘服务器,提供文件通过功能,客户端设备可与服务器101进行文件同步。比如,第二手机104的本地文件发生变化后,提交变化信息到服务器101,实现到第二手机104与服务端数据一致;平板电脑105感知并获取到服务器端的变化信息,将平板电脑105的本地文件同步为与服务器端一致。同步完成后,第二手机04与平板电脑105的文件树结构达到一致。
用户在使用文件同步功能时,一般需要使用用户账户登录服务器。一个用户可以使用不同的登录服务器使用文件同步功能,这样一个用户在这些客户端设备上的文件与服务器上存储的该用户的文件保持同步。所有使用文件同步服务功能的用户均分配有唯一用户ID,客户端设备上存储的用户文件,以及服务器上存储的用户文件,可以使用用户ID进行索引或标识。一个用户ID仅对于一个文件树。
本申请实施例中,客户端设备和服务器均以文件树形式存储文件。文件树是指以树形结构存储文件。文件树包括一个根节点以及根节点下的各级节点,除根节点以外的任何一个节点标识一个文件或文件夹,如果一个节点标识一个文件夹且该文件夹下还有子文件夹和/或文件,则文件夹对应的节点下包含一个或多个子节点。如果一个节点对应一个文件,则该节点的属性信息中可包含该文件的名称、存储位置信息等,如果一个节点对应一个文件夹,则该节点的属性信息可包含该文件夹的名称、存储位置信息等。
本申请实施例中,客户端设备和服务器均以文件树的形式存储文件,客户端设备在客户端设备侧存储的文件树与服务器在网络侧存储的文件树需要保持同步,文件树中的每个节点均对应一个文件或文件夹。
本申请实施例中的文件树具有以下特点:
-对应于每个文件树维护有该文件树的版本号,文件树的版本号在每次节点更新时均会变化。本申请实施例中,以文件树版本号递增变化为例描述。
-对应于每个文件节点维护有该节点的版本号,一个节点的版本号在每次该节点发生变化时会变化;
-文件树节点包括文件节点和文件夹节点,一个文件节点对应一个文件,一个文件夹节点对应一个文件夹;
-文件节点发生任何变化(比如增加文件节点、删除文件节点或修改文件节点)时,目标节点新版本号=文件树当前版本号+1,文件树当前版本号=文件树节点最大版本号;
-文件夹节点发生新增时,目标节点新版本号=文件树当前版本号+1,文件树当前版本号=文件树节点最大版本号;
-文件夹节点发生删除时,目标节点新版本号=文件树当前版本号+1,文件树当前版本号=文件树节点最大版本号;文件夹节点及其子文件夹/子文件的节点直接删除,版本号不发生变化
-文件夹节点发生修改时,目标节点新版本号=文件树当前版本号+1,文件树当前版本号=文件树节点最大版本号;其子文件夹和子文件节点(向下递归)的版本号=当前版本号+目标节点版本差,版本差=目标节点新旧版本号之差;
-客户端维护本地文件树的版本号,每次更新完成后更新为与服务端文件树版本号一致。
本实施例中,“文件/文件夹”的表达方式表示“文件和/或文件夹,以下描述中的“文件/文件夹”可按照此处的说明进行解释。
基于图1所示的系统架构,图2示出了本申请实施例提供的一种数据更新流程,该流程可在客户端设备侧执行,也可在服务器侧执行。
比如,在一些场景中,用户登录客户端设备A,客户端设备A自动启动检查文件是否有更新,如果有更新,则客户端设备A向服务器发送数据同步命令,服务器根据该数据同步命令更新网络侧存储的与该用户的ID对应的文件树,以使客户端设备A上该用户ID对应的文件树与网络侧该用户ID对应的文件树保持同步,再例如,用户修改客户端设备A上的文件,客户端设备A向服务器发送数据同步命令,服务器根据该数据同步命令更新网络侧存储的与该用户的ID对应的文件树,以使客户端设备A上该用户ID对应的文件树与网络侧该用户ID对应的文件树保持同步。再比如,在另一些场景中,服务器根据客户端设备A发送的数据同步命令对某个用户ID对应的文件树更新后,向客户端设备B发送数据同步命令,客户端设备B根据该数据同步命令进行文件树更新,以使客户端设备B上该用户ID对应的文件树与网络侧该用户ID对应的文件树保持同步。
如图2所示,该数据同步流程可包括以下步骤:
步骤201:接收数据同步命令,所述数据同步命令中包括文件树索引信息以及节点的更新信息。
所述数据同步命令中至少包括文件树的索引信息以及发生变更的节点的更新信息。如前所述,用户ID可作为文件树的索引信息,当然也不排除使用文件树ID作为文件树索引信息的情况,本申请实施例对此不作限制。所述数据同步命令中携带的节点的更新信息中,通常会包括操作类型指示信息。进一步地,根据文件操作类型的不同而不同,比如,节点的更新信息可包括:发生变更的节点在文件树中的位置信息、发生变更的节点所对应的文件/文件夹。
举例来说,根据文件/文件夹的操作类型,节点的更新信息的内容可包括以下几种情况:
-对于修改文件名的操作,节点的更新信息可包括:待修改文件名称的节点在文件树中的位置信息以及修改后的文件名;
-对于修改文件夹名称的操作,节点的更新信息可包括:待修改文件夹名称的节点在文件树中的位置信息以及修改后的文件夹名称;
-对于删除文件的操作,节点的更新信息可包括:待删除的节点在文件树中的位置信息;
-对于删除文件夹的操作,节点的更新信息可包括:待删除的节点在文件树中的位置信息;
-对于新增加文件的操作,节点的更新信息可包括:新增加的节点在文件树中的位置信息以及所述新增加的节点所对应的文件;
-对于新增加文件夹的操作,节点的更新信息可包括:新增加的节点在文件树中的位置信息以及所述新增加的节点所对应的文件夹。
其中,节点在文件树中的位置信息,可采用相对位置来表示,比如,通过指示出一个节点的父节点的标识,从而可以定位出该节点的位置。
步骤202:根据数据同步命令中的文件树索引信息,获取对应的待同步的文件树。
如前所述,文件树索引信息可以是用户ID,该步骤中可根据用户ID获取网络侧存储的与该用户ID对应的文件树。
进一步地,在根据用户ID确定出待同步的文件树后,可以锁定该文件树,以保证在对该文件树进行更新的过程中,不会有其它操作对本次更新有任何影响。
步骤203:根据数据同步命令中的节点的更新信息,更新待同步的文件树。进一步地,在完成文件树更新操作后,可解除对该文件树的锁定。
如前所述,文件/文件夹的操作类型可包括:修改文件名的操作、修改文件夹名称的操作、删除文件的操作、删除文件夹的操作、新增加文件的操作、新增加文件夹的操作等。文件/文件夹的位置移动操作可转化为在目的位置新增文件/文件夹的操作以及在源位置删除文件/文件夹的操作,因此,下面仅以上述几种操作类型对文件树的根系过程进行描述。
(1)修改文件名的操作
此种情况下,数据同步命令中包含的节点的更新信息,可包括:待修改文件名称的节点的在文件树中的位置信息以及修改后的文件名。
步骤203的具体实现过程可以是:根据待修改文件名称的节点的位置信息,将待同步的文件树上相应节点的版本号加1,并更新该文件树的版本号;根据修改后的文件名称,更新节点与文件的关联关系中该待修改文件名称的节点所对应的文件的名称。
其中,如前所述,文件树中除根节点以外的每个节点对应一个文件或文件夹,节点与文件/文件夹的关联关系可通过关联关系表来保存,该关联关系表中记录了文件树上的每个节点(除根节点以外)的标识信息,以及每个节点对应的文件/文件夹的存储路径(可包括存储位置以及文件/文件夹名称)。相应地,当文件名更新时,需要针对相应节点更新该关联关系表中该节点所对应的文件的名称。
(2)修改文件夹名称的操作
此种情况下,数据同步命令中包含的节点的更新信息,可包括:待修改文件夹名称的节点在文件树中的位置信息以及修改后的文件夹名称。
步骤203的具体实现过程可以是:根据待修改文件夹名称的节点的位置信息,将待同步的文件树上相应节点的版本号加1;若待修改文件夹名称的节点下包含子节点,则分别更新该待修改文件夹名称的节点下的所有子节点的版本号,其中,对于每个子节点,更新该子节点的版本号时,在该子节点当前的版本号的基础上加上该子节点的父节点(即上述更新名称的文件夹所对应的节点)的版本差,所述父节点的版本差为该父节点更新后的版本号与更新前的版本号之差;更新所述待同步的文件树的版本号,比如更新为该文件树上除根节点以外的所有节点中的最大版本号。此为,还要根据修改后的文件夹名称,更新节点与文件夹的关联关系中,所述待修改文件夹名称的节点所对应的文件夹的名称。
其中,如前所述,文件树中除根节点以外的每个节点对应一个文件或文件夹,节点与文件/文件夹的关联关系可通过关联关系表来保存。相应地,当文件夹名更新时,需要针对相应节点更新该关联关系表中该节点所对应的文件夹的名称。
(3)删除文件的操作
此种情况下,数据同步命令中包含的节点的更新信息,可包括:待删除的节点在文件树中的位置信息。
步骤203的具体实现过程可以是:根据待删除的节点的位置信息,在待同步的文件树上将相应节点标记为删除;将被标记为删除的节点的版本号加1,并更新待同步的文件树的版本号。
其中,如前所述,文件树中除根节点以外的每个节点对应一个文件或文件夹,节点与文件/文件夹的关联关系可通过关联关系表来保存。相应地,当删除文件时,可进一步地针对相应节点删除该节点与文件的关联关系信息。
(4)删除文件夹的操作
此种情况下,数据同步命令中包含的节点的更新信息,可包括:待删除的节点在文件树中的位置信息。
步骤203的具体实现过程可以是:根据待删除的节点的位置信息,在待同步的文件树上将相应节点标记为删除,以及将被标记为删除的节点的所有子节点标记为删除;分别将标记为删除的节点的版本号加1,并更新待同步的文件树的版本号。
其中,如前所述,文件树中除根节点以外的每个节点对应一个文件或文件夹,节点与文件/文件夹的关联关系可通过关联关系表来保存。相应地,当删除文件夹时,可进一步地针对相应节点删除该节点与文件夹的关联关系信息。
(5)新增加文件的操作
此种情况下,数据同步命令中包含的节点的更新信息,可包括:新增加的节点在文件树中的位置信息以及所述新增加的节点所对应的文件。
步骤203的具体实现过程可以是:根据新增加的节点的位置信息,在待同步的文件树上增加节点;将新增加的节点的版本号设置为待同步的文件树的版本号加1,并更新待同步的文件树的版本号;存储新增加的节点所对应的文件,建立该新增加的节点与该节点所对应的文件的关联关系。
其中,如前所述,文件树中除根节点以外的每个节点对应一个文件或文件夹,节点与文件/文件夹的关联关系可通过关联关系表来保存。相应地,当新增加文件时,可在该关联关系表中增加一条记录,用来记录该新增加的节点与对应的文件的关联关系。
(6)新增加文件夹的操作
此种情况下,数据同步命令中包含的节点的更新信息,可包括:新增加的节点在文件树中的位置信息以及所述新增加的节点所对应的文件夹。
步骤203的具体实现过程可以是:根据新增加的节点的位置信息,在待同步的文件树上增加节点;将新增加的节点的版本号设置为待同步的文件树的版本号加1,并更新待同步的文件树的版本号;建立该新增加的节点与该节点所对应的文件夹的关联关系。
其中,如前所述,文件树中除根节点以外的每个节点对应一个文件或文件夹,节点与文件/文件夹的关联关系可通过关联关系表来保存。相应地,当新增加文件夹时,可在该关联关系表中增加一条记录,用来记录该新增加的节点与对应的文件夹的关联关系。
基于图2所示的数据同步流程以及数据同步原理,图3以对客户端设备上的文件树进行更新为例,示出了一种具体实施时的文件树及节点的版本流程,该流程仅示出了文件树版本以及节点版本的更新相关流程,可由客户端设备或客户端设备中的数据更新装置执行。
如图3所示,当客户端设备中的用户文件/文件夹发生更新时(步骤301),该装置该确定更新操作所对应的文件树上的目标节点,更新目标节点的版本号,即,目标节点版本号=文件树版本号+1(步骤302);
在步骤303中,如果判断该目标节点对应一文件夹,则计算该目标节点的版本差:版本差=目标节点新版本号-目标节点旧版本号(步骤303~步骤304)。
在步骤305中,如果判断为是删除操作,则遍历该目标节点下的所有子节点,并将遍历到的子节点设置为删除(步骤305、步骤309至步骤311)。在遍历过程中,如果遍历到的子节点对应的是文件,则更新文件树的版本号:文件树版本号=除根节点外所有节点中最大的版本号,并结束此版本更新流程(步骤312);如果遍历到的子节点对应的是文件夹,则针对当前遍历到的子节点,跳转到步骤309执行,以遍历该子节点下的子节点,以此类推,直到遍历完成该目标节点下的最低级别的子节点。
在步骤305中,如果判断为不是删除操作,则遍历该目标节点的子节点,对遍历到的子节点更新其版本号:子节点版本号=版本差+子节点当前版本号(步骤306、步骤307)。在遍历过程中,如果遍历到的子节点对应的是文件,则更新文件树的版本号:文件树版本号=除根节点外所有节点中最大的版本号,并结束此版本更新流程(步骤312);如果遍历到的子节点对应的是文件夹,则针对当前遍历到的子节点,跳转到步骤306执行,以遍历该子节点下的子节点,以此类推,直到遍历完成该目标节点下的最低级别的子节点。
在步骤303中,如果判断该目标节点对应一文件,则更新文件树的版本号:文件树版本号=除根节点外所有节点中最大的版本号,并结束此版本更新流程(步骤312),并结束此版本更新流程。
优选地,在一些实施例中,如果对目标节点的更新操作类型为删除操作,则对于该目标节点的子节点的版本号可不做更新,并且将该目标节点及其所有子节点的状态设置为已删除,这样可以保证用户或者应用程序在误删除文件或文件夹时,可以找回被删除的数据。在实际应用中,优选地,也可以将文件树中标记为已删除状态的节点保留一段时间,比如一个月,如果超过了这个时间长度,则被标记为已删除的节点将被从文件树上删除,这样一方面给用户恢复数据的操作保留了一段时间,另一方面也可以降低存储设备的存储空间开销。
为了更清楚地说明文件树的版本号以及文件树中的节点的版本号的更新过程,下面以三种具有应用场景为例举例说明。
场景一
参见图4,文件树更新过程包括:
(1)创建文件树
创建根节点ROOT,目前尚未创建任何文件/文件夹,因此文件树版本号为0,表示为ROOT(0)。以下描述中,括号内的数字均表示该节点的版本号。
(2)在根目录下创建文件夹:D1、D2、D3、D4;
在根节点ROOT下增加节点D1(1),根节点更新为ROOT(1);
在根节点ROOT下增加节点D2(2),根节点更新为ROOT(2);
在根节点ROOT下增加节点D3(2),根节点更新为ROOT(3);
在根节点ROOT下增加节点D2(4),根节点更新为ROOT(4);
(3)在文件夹D2下创建文件:F1、F2;
在节点D2下增加节点F1(5),根节点更新为ROOT(5);
在节点D2下增加节点F2(6),根节点更新为ROOT(6);
(4)在根目录下创建文件夹:D5、D6、D7、D8;
在根节点ROOT下增加节点D5(7),根节点更新为ROOT(7);
在根节点ROOT下增加节点D6(8),根节点更新为ROOT(8);
在根节点ROOT下增加节点D7(9),根节点更新为ROOT(9);
在根节点ROOT下增加节点D8(10),根节点更新为ROOT(10);
(5)在文件夹D4下创建文件:F3、F4;
在节点D4下增加节点F3(11),根节点更新为ROOT(11);
在节点D4下增加节点F4(12),根节点更新为ROOT(12);
(6)在文件夹D5下创建文件:F5、F6、F7、F8;
在节点D5下增加节点F5(13),根节点更新为ROOT(13);
在节点D5下增加节点F6(14),根节点更新为ROOT(14);
在节点D5下增加节点F7(15),根节点更新为ROOT(15);
在节点D5下增加节点F8(16),根节点更新为ROOT(16);
(7)在文件夹D6下创建文件:F9、F10;
在节点D6下增加节点F9(17),根节点更新为ROOT(17);
在节点D6下增加节点F10(18),根节点更新为ROOT(18)。
场景二
基于图4所示的文件树,将节点D2对应的文件夹的名称修改为D2New。
针对该文件夹名称修改操作,参见图5,将节点D2对应的文件夹名称修改为D2New,相应地,该节点表示为节点D2New,并对该文件树执行以下版本更新操作:
更新节点D2New的版本号为19,更新根节点为ROOT(19);
更新节点D2New下的子节点F1的版本号为:5+(19-2)=22,更新根节点为ROOT(22);
更新节点D2New下的子节点F2的版本号为:6+(19-2)=23,更新根节点为ROOT(23)。
场景三
基于图5所示的文件树,删除节点D4对应的文件夹。
针对该删除文件夹的操作,参见图6,对该文件树执行以下更新操作:
将节点D4标记为已删除,更新节点D4的版本号为24,更新根节点为ROOT(24);
将节点D4下的子节点F3和子节点F4标记为删除,不修改子节点F4和子节点F4的版本号。
场景四
基于图6所示的文件树,将文件夹D5移动至文件夹D2New下。
针对该移动文件夹的操作,参见图7,对该文件树执行以下更新操作:
将节点D5及其子节点移动到节点D2New下,更新节点D5的版本号为25,更新根节点为ROOT(25);
更新节点F5的版本号为:13+(25-7)=31,更新根节点为ROOT(31);
更新节点F6的版本号为:14+(25-7)=32,更新根节点为ROOT(32);
更新节点F7的版本号为:15+(25-7)=33,更新根节点为ROOT(33);
更新节点F8的版本号为:16+(25-7)=34,更新根节点为ROOT(34)。
以上实施例描述了文件树的更新过程。上述文件树更新过程可应用于以下场景:客户端设备向网络侧发送数据同步请求,以便将本客户端设备上的文件树与网络侧的文件树保持同步。比如,当客户端设备开启后发送该数据同步请求,也可以是基于用户的操作(比如用户在数据同步请求界面中通过触屏操作提交数据同步请求)发送该数据同步请求,或者,客户端设备也可以根据设置的时间或周期发送该数据同步请求。
现有技术中常见的同步方法是,客户端设备定时到服务器端请求更新,服务器端每次都返回当前服务器端最新的完整文件树结构,然后客户端设备与本地数据进行逐一对比并处理差异。
上述过程中,由于服务器每次均返回给客户端设备全量数据,一方面网络传输数据量大,另一方面客户端设备处理开销大,进而导致客户端设备执行数据同步的效率较低。
可以看出,为了实现多客户端设备的数据同步,其中一个重要环节就是对比客户端设备与服务器端的文件树差异,并实现差异同步更新处理。对此,本申请实施例提供了数据同步方案,以实现差异化同步更新处理。
下面结合图8,对基于客户端设备发送的数据同步请求进行数据同步的过程进行描述。
参见图8,为本申请实施例提供的数据同步流程示意图。该流程可由网络侧的设备执行,比如可由网络侧的服务器执行,该服务器存储有用户的文件树可以实现文件树更新和同步操作,并可对客户端设备发送的数据同步请求进行响应处理。进一步地,针对客户端设备发送的数据同步请求,该服务器可以确定所采用的数据同步方式,比如采用全量更新还是差量更新,并根据所采用的数据同步方式将文件树的节点信息发送给客户端设备,从而实现客户端设备与该服务器上的文件树保持同步。
如图所示,该流程可包括如下步骤:
步骤801:接收客户端设备发送的数据同步请求,所述数据同步请求中包括文件树索引信息。
其中,文件树索引信息的解释说明可参见前述实施例,在此不再重复。
优选地,所述数据同步请求中还可包括与该文件树索引信息对应的该客户端设备上存储的文件树的版本号。以下为描述方便,将同一文件树索引信息所对应的在服务器端存储的文件树称为第一文件树,将在客户端设备上存储的文件树称为第二文件树。服务器可根据该数据同步请求中携带的第二文件树的版本号,确定是否需要执行数据同步流程。比如,如果第二文件树的版本号与网络侧存储的第一文件树的版本号相同,则表明客户端设备和网络侧的文件树已经同步,则可以不再执行后续同步流程。
步骤802:根据所述文件树索引信息,获取网络侧存储的与所述文件树索引信息对应的第一文件树。
步骤803:确定第一文件树上待同步给该客户端设备的节点。
在具体实施时,可首先确定数据同步方式;然后根据确定出的数据同步方式,确定第一文件树上待同步给该客户端设备的节点。其中,所确定的数据同步方式包括全量更新或差量更新。相应地,若确定出的同步方式为全量更新,则将第一文件树上的有效节点确定为待同步给该客户端设备的节点;或者,若确定出的同步方式为差量更新,则将第一文件树与第二文件树的差量节点确定为待同步给该客户端设备的节点。
其中,全量更新是指忽略客户端设备现有文件树结构和网络侧变化历史,更新文件树上的所有节点;差量更新是指在客户端设备现有文件树的基础上,根据网络侧变化情况,同步更新变化的那一部分节点。
服务器可以采用多种方法确定数据同步方式,以下列举其中部分优选的实现方法:
(1)数据同步方式确定方法一
确定第一文件树中的有效节点数,其中,一个文件树上的有效节点是指该文件树上除被标记为已删除节点之外的所有节点;确定第一文件树与第二文件树的差量节点数,其中,第一文件树与第二文件树的差量节点是指第一文件树上版本号大于第二文件树的版本号的节点;若差量节点数大于或等于有效节点数的n倍(n≥1),则确定采用全量更新,否则确定采用差量更新。在实际应用中,优选地,n可以取值为2。
例如,网络侧的第一文件树和客户端设备的第二文件树的版本号均为2000,文件树上的节点数均为3000。如果此后,第一文件树发生了以下更新过程:添加了2000个文件,此时第一文件树的版本更新为4000,文件树中有5000个节点;然后,又删除其中一个文件夹节点下的4999个文件,此时第一文件树的版本更新为5001,文件树中剩余一个节点。当客户端设备发起数据同步请求时,第一文件树的有效节点数为1,差量节点树为2000(第一文件树的节点数5000减去第二文件树的节点数3000的差值),因为差量节点数2000大于有效节点数1的2倍,即2000>2,因此服务器选择的数据同步方式为全量更新。
该种数据同步确定方法中,如果差量节点数大于或等于有效节点数的n倍,则表明第一文件树和第二文件树的差异较大,此时采用全量更新可以更好地保证文件树同步;如果差量节点数小于有效节点数的n倍,则表明第一文件树和第二文件树的差异相对较小,采用差量更新可以在保证文件树同步的同时,减少网络资源的开销以及客户端设备的处理操作开销。
(2)数据同步方式确定方法二
数据同步请求中还可以包括同步方式指示信息,该同步方式指示信息所指示的同步方式包括全量更新或差量更新。相应地,服务器可根据数据同步请求中包括的同步方式指示信息确定数据同步方式。
其中,在一些场景中,若同步方式指示信息为全量更新指示信息,则该全量更新指示信息是客户端设备在根据接收到的数据同步命令进行文件树同步操作失败后,携带于该数据同步请求中的。也就是说,在此之前,客户端设备根据服务器发送的数据同步命令执行文件树同步操作时发生异常,操作失败,为了保证文件树的同步,该客户端设备再次发起数据同步请求时,可请求进行全量更新,此时,数据同步请求中携带有全量更新指示信息。
除了以上数据同步方式确定方法,在一些实施例中,也可以默认采用差量更新,在差量更新失败的情况下,可进一步采用全量更新。例如,客户端设备根据服务器发送的数据同步命令执行文件树同步操作时发生异常,操作失败,则向服务器反馈数据同步操作失败信息,此时,服务器可确定采用全量更新的方式,指示该客户端设备对文件树进行全量更新。
步骤804:根据确定出的待同步给所述客户端设备的节点,向该客户端设备发送数据同步命令,所述数据同步命令用于指示该客户端设备对该客户端设备存储的与该文件树索引信息对应的第二文件树进行更新。文件树的更新过程可参见前述实施例,在此不再赘述。
上述流程中,优选地,服务器在向客户端设备发送数据同步命令之前,可先根据确定出的第一文件树上待同步给客户端设备的节点,以及分页大小参数,确定总分页页数,以及每页对应的节点的更新信息,然后,根据分页顺序,向所述客户端设备发送数据同步命令,其中携带当前分页对应的节点的更新信息、当前分页的页号以及总分页页数。
在实际应用中,由于一次需要同步的节点数量可能比较多,若在一次数据同步命令过程中将所有待同步的节点通知给客户端设备,一方面可能会占用较大的网络资源开销,同时客户端设备也可能占用较多的处理资源开销,此外,用户可能会有中断同步操作的需求,为此,本申请实施例给出一种采用分页方式指示客户端设备进行文件树同步操作的方案。
具体地,在步骤804中,服务器每次向客户端设备发送的数据同步命令中仅包含一页内容的节点信息。具体每页的大小可由分页大小参数指示,该参数可用节点数量来表示。例如,如果步骤803中确定出待同步给该客户端设备的节点数量有100个,而分页大小参数为10,则需要10页(每页包含10个节点的信息),即发送10个数据同步命令,才能将这100个节点的信息发送给客户端设备。其中,分页大小参数可预先设置,比如,可由系统约定,也可以允许客户端设备自行设置和修改。如果由客户端设备自行设置或修改,则客户端设备发送的数据同步请求中可携带由该客户端设备自行设置或修改的分页大小参数。分页大小参数的取值,可根据网络状况、服务器处理能力、客户端设备处理能力来综合考虑。
具体地,在步骤804中,服务器可根据确定出的第一文件树上待同步给客户端设备的节点以及分页大小参数,确定总分页页数,以及每页对应的节点的更新信息;然后,根据分页顺序,向该客户端设备发送数据同步命令,其中携带当前分页对应的节点的更新信息、当前分页的页号以及总分页页数。
进一步地,在根据分页顺序向客户端设备发送数据同步命令之后,如果当前已发送的分页还未到达最后一页,则客户端设备还可能通过数据同步请求来请求下一页节点更新信息,这样,服务器端还可包括以下步骤:
接收客户端设备再次发送的数据同步请求,其中携带有所请求的分页的页号;根据客户端设备再次发送的数据同步请求中携带的分页页号,获取对应分页所对应的节点的更新信息;向该客户端设备发送数据同步命令,其中携带有当前分页对应的节点的更新信息、当前分页的页号以及总分页页数。
在一些实施例中,服务器指示客户端设备进行文件树同步的过程中,对第一文件树进行锁树操作,从而使得第一文件树与第二文件树的同步过程中,不允许对第一文件树进行更新操作。
在另一些实施例中,服务器指示客户端设备进行文件树同步的过程中,可以不对第一文件树进行锁树操作,即,在第一文件树与第二文件树的同步过程中,允许对第一文件树进行更新操作。例如,在服务器采用分页方式向客户端设备发送节点更新信息的过程中,可以不对第二文件树进行锁树操作,因此在该过程中,第二文件树可能会发生更新。针对这种情况,本申请实施例给出了以下优选方案,可以提升用户体验度以及实用价值。
若在向客户端设备发送数据同步命令后,第一文件树的版本号发生更新,则服务器可将更新后的第一文件树上,版本号大于第一文件树更新前的版本号的节点的更新信息,发送给该客户端设备,从而将在步骤803之后第一文件树上再次更新的节点的相关信息发送给客户端设备,从而使客户端设备上的第二文件树与第一文件树保持同步。服务器也可以向该客户端设备发送通知消息,该通知消息用于通知第一文件树的版本号发生更新并征询该客户端设备是否发起数据同步请求,如果客户端设备根据该通知消息再次发送数据同步请求,则此后的流程可同前所述。进一步地,该通知消息中可可包括第一文件树更新后的版本号,以便该客户端设备将该版本号呈现给用户,供用户选择是否再次发起数据同步请求。
为了更清楚地理解上述流程,下面结合一个具体应用场景描述在服务器采用分页方式向客户端设备发送待同步的节点的更新信息的过程中,网络侧的第一文件树发生更新,此种情况下的处理操作。
此场景下,网络侧的第一文件树如图7所示。服务器确定出采用全量更新方式进行数据同步,每个分页包含的最大节点数为3,按节点版本号从小到大的顺序,各分页对应的节点具体如下所示:
第1页:D1(1)、D3(3)、D6(8);
第2页:D7(9)、D8(10)、F9(17);
第3页:F10(18)、D2New(19)、F1(22);
第4页:F2(23)、D5(25)、F5(31);
第5页:F6(32)、F7(33)、F8(34)。
当服务器向客户端设备发送第3页的节点更新信息后,网络侧的第一文件树发生以下更新操作:节点D6及其子节点移动至节点D7下,第一文件树更新后的结构以及版本号可如图9所示。
根据客户端设备的请求,服务器按照之前确定出的5个分页,将第4页和第5页的节点更新信息依次发给该客户端设备。
第4页:F2(23)、D5(25)、F5(31);
第5页:F6(32)、F7(33)、F8(34)。
待上述5个分页的节点更新信息发送完成之后,服务器向该客户端设备发送通知消息,通知客户端设备文件树有更新,然后根据该客户端设备继续进行数据同步的请求,确定版本号大于34的节点,这些节点包括:
D6(35)、F9(44)、F10(45)
服务器以差量更新的方式指示客户端设备进行文件树同步,即,仅将这些节点的更新信息发送给客户端设备。
通过以上描述可以看出,本申请实施例中,网络侧接收到客户端设备发送的数据同步请求后,获取网络侧存储的对应的文件树,确定数据同步方式,并根据确定出的数据同步方式确定需要待同步给客户端设备的节点,并客户端设备发送数据同步命令,使客户端设备根据该数据同步命令进行数据同步。其中,如果确定出的数据同步方式为差量更新,则根据该同步方式确定出的待同步给客户端设备的节点仅为文件树中的部分节点,因此与现有技术中根据文件树的全部节点进行全量同步的方式相比,可以提高数据同步效率。
基于相同的技术构思,本申请实施例还提供了一种数据同步装置,可用于前述数据同步流程,比如图8所示的流程。该数据同步装置可以是网络侧用于文件同步的服务器,也可以是该服务器中的用于实现文件同步的功能模块。
参见图10,为本申请实施例提供的数据同步装置的结构示意图,该装置可包括:接收模块1001、获取模块1002、确定模块1003以及发送模块1004,其中:
接收模块1001,用于接收客户端设备发送的数据同步请求,所述数据同步请求中包括文件树索引信息;
获取模块1002,用于根据所述文件树索引信息,获取网络侧存储的与所述文件树索引信息对应的第一文件树;
确定模块1003,用于确定所述第一文件树上待同步给所述客户端设备的节点,一个文件树中除根节点以外的每个节点对应的一个文件或文件夹;
发送模块1004,用于根据确定出的待同步给所述客户端设备的节点,向所述客户端设备发送数据同步命令,所述数据同步命令用于指示所述客户端设备对所述客户端设备存储的与所述文件树索引信息对应的第二文件树进行更新。
优选地,确定模块1003可具体用于:确定数据同步方式,所确定的数据同步方式包括全量更新或差量更新;根据确定的同步方式,确定所述第一文件树上待同步给所述客户端设备的节点。
优选地,所述数据同步请求中还包括与所述文件树索引信息对应的第二文件树的版本号;第一文件树以及所述第二文件树中,根节点的版本号与除根节点以外的其它所有节点中的最大版本号相同,文件树的版本号与该文件树的根节点的版本号相同;当文件树中的一个节点更新时,该节点的版本号递增。
优选地,确定模块1003可具体用于:确定所述第一文件树中的有效节点数,其中,一个文件树上的有效节点是指该文件树上除被标记为已删除节点之外的所有节点;确定所述第一文件树与所述第二文件树的差量节点数,其中,所述第一文件树与所述第二文件树的差量节点是指所述第一文件树上版本号大于所述第二文件树的版本号的节点;若所述差量节点数大于或等于所述有效节点数的n倍,则确定采用全量更新,否则确定采用差量更新,n≥1。
优选地,数据同步请求中还包括同步方式指示信息,所述同步方式指示信息所指示的同步方式包括全量更新或差量更新;相应地,确定模块1003可具体用于:根据所述数据同步请求中包括的同步方式指示信息,确定数据同步方式。
其中,若所述同步方式指示信息为全量更新指示信息,则所述全量更新指示信息是所述客户端设备在根据接收到的数据同步命令进行文件树同步操作失败后,携带于所述数据同步请求中的。
优选地,确定模块1003可具体用于:
若确定出的同步方式为全量更新,则将所述第一文件树上的有效节点确定为待同步给所述客户端设备的节点;其中,一个文件树上的有效节点是指该文件树上除被标记为已删除节点之外的所有节点;或者
若确定出的同步方式为差量更新,则将所述第一文件树与所述第二文件树的差量节点确定为待同步给所述客户端设备的节点,其中,所述第一文件树与所述第二文件树的差量节点是指所述第一文件树上版本号大于所述第二文件树的版本号的节点。
优选地,发送模块1004可具体用于:
根据确定出的所述第一文件树上待同步给所述客户端设备的节点,以及分页大小参数,确定总分页页数,以及每页对应的节点的更新信息;其中,所述分页大小参数用节点数量表示,一个分页对应的节点数量等于所述分页大小参数;
根据分页顺序,向所述客户端设备发送数据同步命令,其中携带当前分页对应的节点的更新信息、当前分页的页号以及总分页页数。
优选地,接收模块1001还可用于:在发送模块1004根据分页顺序,向所述客户端设备发送数据同步命令之后,接收所述客户端设备再次发送的数据同步请求,其中携带有所请求的分页的页号;发送模块1004还用于:根据所述客户端设备再次发送的数据同步请求中携带的分页页号,获取对应分页所对应的节点的更新信息,向所述客户端设备发送数据同步命令,其中携带有当前分页对应的节点的更新信息、当前分页的页号以及总分页页数。
优选地,发送模块1004还可用于:
若在向所述客户端设备发送数据同步命令后,所述第一文件树的版本号发生更新,则将更新后的所述第一文件树上,版本号大于所述第一文件树更新前的版本号的节点的更新信息,发送给所述客户端设备;或者
向所述客户端设备发送通知消息,所述通知消息用于通知所述第一文件树的版本号发生更新并征询所述客户端设备是否发起数据同步请求;其中,所述通知消息中包括所述第一文件树更新后的版本号。
基于相同的技术构思,本申请实施例还提供了一种数据更新装置,该装置可以执行前述实施例描述的数据更新流程,比如图2所示的流程。该装置可以是客户端设备、也可以是网络侧用于实现文件同步的服务器,或者是该客户端设备或服务器中实现文件更新和同步的功能模块。
参见图11,为本申请实施例提供的数据更新装置的结构示意图,如图所示,该装置可包括:接收模块1101、获取模块1102、更新模块1103,其中:
接收模块1101,用于接收数据同步命令,所述数据同步命令中包括文件树索引信息以及节点的更新信息;其中,一个文件树中除根节点以外的每个节点对应一个文件或文件夹;
获取模块1102,用于根据所述文件树索引信息,获取对应的待同步的文件树;
更新模块1103,用于根据所述数据同步命令中包括的节点的更新信息,更新所述待同步的文件树;其中,一个文件树中,根节点的版本号与除根节点以外的其他所有节点中的最大版本号相同,文件树的版本号与该文件树的根节点的版本号相同,当文件树中的一个节点更新时,该节点的版本号递增。
优选地,所述节点的更新信息包括:待修改文件名称的节点的在文件树中的位置信息以及修改后的文件名。相应地,更新模块1103可具体用于:根据所述待修改文件名称的节点的位置信息,将所述待同步的文件树上相应节点的版本号加1,并更新该文件树的版本号;根据修改后的文件名称,更新节点与文件的关联关系中所述待修改文件名称的节点所对应的文件的名称。
优选地,所述节点的更新信息包括:待修改文件夹名称的节点在文件树中的位置信息以及修改后的文件夹名称。相应地,更新模块1103可具体用于:根据所述待修改文件夹名称的节点的位置信息,将所述待同步的文件树上相应节点的版本号加1;若所述待修改文件夹名称的节点下包含子节点,则分别更新所述待修改文件夹名称的节点下的所有子节点的版本号;其中,对于每个子节点,更新该子节点的版本号时,在该子节点当前的版本号上加上该子节点的父节点的版本差,所述父节点的版本差为该父节点更新后的版本号与更新前的版本号之差;更新所述待同步的文件树的版本号;根据修改后的文件夹名称,更新节点与文件夹的关联关系中,所述待修改文件夹名称的节点所对应的文件夹的名称。
优选地,所述节点的更新信息包括:待删除的节点在文件树中的位置信息。相应地,更新模块1103可具体用于:根据所述待删除的节点的位置信息,在所述待同步的文件树上将相应节点标记为删除;将所述被标记为删除的节点的版本号加1,并更新所述待同步的文件树的版本号。
优选地,所述节点的更新信息包括:待删除的节点在文件树中的位置信息。相应地,更新模块1103可具体用于:根据所述待删除的节点的位置信息,在所述待同步的文件树上将相应节点标记为删除,以及将所述被标记为删除的节点的所有子节点标记为删除;分别将所述标记为删除的节点的版本号加1,并更新所述待同步的文件树的版本号。
优选地,所述节点的更新信息包括:新增加的节点在文件树中的位置信息以及所述新增加的节点所对应的文件。相应地,更新模块1103可具体用于:根据所述新增加的节点的位置信息,在所述待同步的文件树上增加节点;将新增加的节点的版本号设置为所述待同步的文件树的版本号加1,并更新所述待同步的文件树的版本号;存储所述新增加的节点所对应的文件,建立所述新增加的节点与该节点所对应的文件的关联关系。
优选地,所述节点的更新信息包括:新增加的节点在文件树中的位置信息以及所述新增加的节点所对应的文件夹。相应地,更新模块1103可具体用于:根据所述新增加的节点的位置信息,在所述待同步的文件树上增加节点;将新增加的节点的版本号设置为所述待同步的文件树的版本号加1,并更新所述待同步的文件树的版本号;建立所述新增加的节点与该节点所对应的文件夹的关联关系。
基于相同的技术构思,本申请实施例还提供了一种服务器。
参见图12,为本申请实施例提供的服务器的结构示意图,如图所示,该服务器可包括:接口1201、处理单元1202和存储器1203。处理单元1202用于控制该装置的操作;存储器1203可以包括只读存储器和随机存取存储器,用于向处理单元1202提供指令和数据。存储器1203的一部分还可以包括非易失行随机存取存储器(NVRAM)。该装置的各个组件通过总线系统耦合在一起,其中总线系统1209除包括数据总线之外,还包括电源总线、控制总线和状态信号总线。但是为了清楚说明起见,在图中将各种总线都标为总线系统1209。
本发明实施例揭示的数据同步流程可以应用于处理单元1202中,或者由处理单元1202实现。在实现过程中,该装置实现的数据同步流程的各步骤可以通过处理单元1202中的硬件的集成逻辑电路或者软件形式的指令完成。处理单元1202可以是通用处理器、数字信号处理器、专用集成电路、现场可编程门阵列或者其他可编程逻辑器件、分立门或者晶体管逻辑器件、分立硬件组件,可以实现或者执行本发明实施例中的公开的各方法、步骤及逻辑框图。通用处理器可以是微处理器或者任何常规的处理器等。结合本发明实施例所公开的方法的步骤可以直接体现为硬件处理器执行完成,或者用处理器中的硬件及软件模块组合执行完成。软件模块可以位于随机存储器,闪存、只读存储器,可编程只读存储器或者电可擦写可编程存储器、寄存器等本领域成熟的存储介质中。该存储介质位于存储器1203,处理单元1202读取存储器1203中的信息,结合其硬件完成数据同步流程的步骤。
具体地,处理单元1202可被配置以执行前述实施例所述的数据同步流程。该流程的具体实现过程可参见前述图8所示的流程,在此不再重复。
基于相同的技术构思,本发明实施例还提供了一种设备。该设备可以是客户端设备也可以是服务器,可实现前述实施例提供的数据更新流程。
参见图13,为本申请实施例提供的设备的结构示意图,如图所示,该设备可包括:接口1301、处理单元1302和存储器1303。处理单元1302用于控制该装置的操作;存储器1303可以包括只读存储器和随机存取存储器,用于向处理单元1302提供指令和数据。存储器1303的一部分还可以包括非易失行随机存取存储器(NVRAM)。该装置的各个组件通过总线系统耦合在一起,其中总线系统1309除包括数据总线之外,还包括电源总线、控制总线和状态信号总线。但是为了清楚说明起见,在图中将各种总线都标为总线系统1309。
本发明实施例揭示的数据更新流程可以应用于处理单元1302中,或者由处理单元1302实现。在实现过程中,该装置实现的数据更新流程的各步骤可以通过处理单元1302中的硬件的集成逻辑电路或者软件形式的指令完成。处理单元1302可以是通用处理器、数字信号处理器、专用集成电路、现场可编程门阵列或者其他可编程逻辑器件、分立门或者晶体管逻辑器件、分立硬件组件,可以实现或者执行本发明实施例中的公开的各方法、步骤及逻辑框图。通用处理器可以是微处理器或者任何常规的处理器等。结合本发明实施例所公开的方法的步骤可以直接体现为硬件处理器执行完成,或者用处理器中的硬件及软件模块组合执行完成。软件模块可以位于随机存储器,闪存、只读存储器,可编程只读存储器或者电可擦写可编程存储器、寄存器等本领域成熟的存储介质中。该存储介质位于存储器1303,处理单元1302读取存储器1303中的信息,结合其硬件完成数据更新流程的步骤。
具体地,处理单元1302可被配置以执行前述实施例所述的数据更新流程。该流程的具体实现过程可参见前述图2所示的流程,在此不再重复。
本申请是参照根据本申请实施例的方法、设备(系统)、和计算机程序产品的流程图和/或方框图来描述的。应理解可由计算机程序指令实现流程图和/或方框图中的每一流程和/或方框、以及流程图和/或方框图中的流程和/或方框的结合。可提供这些计算机程序指令到通用计算机、专用计算机、嵌入式处理机或其他可编程数据处理设备的处理器以产生一个机器,使得通过计算机或其他可编程数据处理设备的处理器执行的指令产生用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的装置。
这些计算机程序指令也可存储在能引导计算机或其他可编程数据处理设备以特定方式工作的计算机可读存储器中,使得存储在该计算机可读存储器中的指令产生包括指令装置的制造品,该指令装置实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能。
这些计算机程序指令也可装载到计算机或其他可编程数据处理设备上,使得在计算机或其他可编程设备上执行一系列操作步骤以产生计算机实现的处理,从而在计算机或其他可编程设备上执行的指令提供用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的步骤。
尽管已描述了本申请的优选实施例,但本领域内的技术人员一旦得知了基本创造性概念,则可对这些实施例作出另外的变更和修改。所以,所附权利要求意欲解释为包括优选实施例以及落入本申请范围的所有变更和修改。
显然,本领域的技术人员可以对本申请进行各种改动和变型而不脱离本申请的精神和范围。这样,倘若本申请的这些修改和变型属于本申请权利要求及其等同技术的范围之内,则本申请也意图包含这些改动和变型在内。
Claims (32)
1.一种数据同步方法,其特征在于,应用于网络侧设备,包括:
接收客户端设备发送的数据同步请求,所述数据同步请求中包括文件树索引信息;
根据所述文件树索引信息,获取网络侧存储的与所述文件树索引信息对应的第一文件树;
确定所述第一文件树上待同步给所述客户端设备的节点,一个文件树中除根节点以外的每个节点对应一个文件或文件夹;
根据确定出的待同步给所述客户端设备的节点,向所述客户端设备发送数据同步命令,所述数据同步命令用于指示所述客户端设备对所述客户端设备存储的与所述文件树索引信息对应的第二文件树进行更新;
其中,所述确定所述第一文件树上待同步给所述客户端设备的节点,包括:
确定数据同步方式,所确定的数据同步方式包括全量更新或差量更新;
根据确定的同步方式,确定所述第一文件树上待同步给所述客户端设备的节点。
2.如权利要求1所述的方法,其特征在于,所述确定数据同步方式,包括:
确定所述第一文件树中的有效节点数,其中,一个文件树上的有效节点是指该文件树上除被标记为已删除节点之外的所有节点;
确定所述第一文件树与所述第二文件树的差量节点数,其中,所述第一文件树与所述第二文件树的差量节点是指所述第一文件树上版本号大于所述第二文件树的版本号的节点;
若所述差量节点数大于或等于所述有效节点数的n倍,则确定采用全量更新,否则确定采用差量更新,n≥1。
3.如权利要求2所述的方法,其特征在于,所述数据同步请求中还包括同步方式指示信息,所述同步方式指示信息所指示的同步方式包括全量更新或差量更新;
所述确定数据同步方式,包括:
根据所述数据同步请求中包括的同步方式指示信息,确定数据同步方式。
4.如权利要求3所述的方法,其特征在于,若所述同步方式指示信息为全量更新指示信息,则所述全量更新指示信息是所述客户端设备在根据接收到的数据同步命令进行文件树同步操作失败后,携带于所述数据同步请求中的。
5.如权利要求2至4中任一项所述的方法,其特征在于,所述根据确定的同步方式,确定所述第一文件树上待同步给所述客户端设备的节点,包括:
若确定出的同步方式为全量更新,则将所述第一文件树上的有效节点确定为待同步给所述客户端设备的节点;其中,一个文件树上的有效节点是指该文件树上除被标记为已删除节点之外的所有节点;或者
若确定出的同步方式为差量更新,则将所述第一文件树与所述第二文件树的差量节点确定为待同步给所述客户端设备的节点,其中,所述第一文件树与所述第二文件树的差量节点是指所述第一文件树上版本号大于所述第二文件树的版本号的节点。
6.如权利要求2至4中任一项所述的方法,其特征在于,所述向所述客户端设备发送数据同步命令,包括:
根据确定出的所述第一文件树上待同步给所述客户端设备的节点,以及分页大小参数,确定总分页页数,以及每页对应的节点的更新信息;其中,所述分页大小参数用节点数量表示,一个分页对应的节点数量等于所述分页大小参数;
根据分页顺序,向所述客户端设备发送数据同步命令,其中携带当前分页对应的节点的更新信息、当前分页的页号以及总分页页数。
7.如权利要求6所述的方法,其特征在于,根据分页顺序,向所述客户端设备发送数据同步命令之后,还包括:
接收所述客户端设备再次发送的数据同步请求,其中携带有所请求的分页的页号;
根据所述客户端设备再次发送的数据同步请求中携带的分页页号,获取对应分页所对应的节点的更新信息;
向所述客户端设备发送数据同步命令,其中携带有当前分页对应的节点的更新信息、当前分页的页号以及总分页页数。
8.如权利要求1所述的方法,其特征在于,若在向所述客户端设备发送数据同步命令后,所述第一文件树的版本号发生更新,则还包括:
将更新后的所述第一文件树上,版本号大于所述第一文件树更新前的版本号的节点的更新信息,发送给所述客户端设备;或者
向所述客户端设备发送通知消息,所述通知消息用于通知所述第一文件树的版本号发生更新并征询所述客户端设备是否发起数据同步请求;其中,所述通知消息中包括所述第一文件树更新后的版本号。
9.如权利要求1至4、8中任一项所述的方法,其特征在于,所述数据同步请求中还包括与所述文件树索引信息对应的第二文件树的版本号;
所述第一文件树以及所述第二文件树中,根节点的版本号与除根节点以外的其它所有节点中的最大版本号相同,文件树的版本号与该文件树的根节点的版本号相同;当文件树中的一个节点更新时,该节点的版本号递增。
10.一种数据更新方法,其特征在于,包括:
接收数据同步命令,所述数据同步命令中包括文件树索引信息以及节点的更新信息;其中,一个文件树中除根节点以外的每个节点对应一个文件或文件夹;
根据所述文件树索引信息,获取对应的待同步的文件树;
根据所述数据同步命令中包括的节点的更新信息,更新所述待同步的文件树;其中,一个文件树中,根节点的版本号与除根节点以外的其他所有节点中的最大版本号相同,文件树的版本号与该文件树的根节点的版本号相同,当文件树中的一个节点更新时,该节点的版本号递增。
11.如权利要求10所述的方法,其特征在于,所述节点的更新信息包括:待修改文件名称的节点的在文件树中的位置信息以及修改后的文件名;
所述更新所述待同步的文件树,包括:
根据所述待修改文件名称的节点的位置信息,将所述待同步的文件树上相应节点的版本号加1,并更新该文件树的版本号;
根据修改后的文件名称,更新节点与文件的关联关系中所述待修改文件名称的节点所对应的文件的名称。
12.如权利要求10所述的方法,其特征在于,所述节点的更新信息包括:待修改文件夹名称的节点在文件树中的位置信息以及修改后的文件夹名称;
所述更新所述待同步的文件树,包括:
根据所述待修改文件夹名称的节点的位置信息,将所述待同步的文件树上相应节点的版本号加1;
若所述待修改文件夹名称的节点下包含子节点,则分别更新所述待修改文件夹名称的节点下的所有子节点的版本号;其中,对于每个子节点,更新该子节点的版本号时,在该子节点当前的版本号上加上该子节点的父节点的版本差,所述父节点的版本差为该父节点更新后的版本号与更新前的版本号之差;
更新所述待同步的文件树的版本号;
根据修改后的文件夹名称,更新节点与文件夹的关联关系中,所述待修改文件夹名称的节点所对应的文件夹的名称。
13.如权利要求10所述的方法,其特征在于,所述节点的更新信息包括:待删除的节点在文件树中的位置信息;
所述更新待同步的文件树,包括:
根据所述待删除的节点的位置信息,在所述待同步的文件树上将相应节点标记为删除;
将所述被标记为删除的节点的版本号加1,并更新所述待同步的文件树的版本号。
14.如权利要求10所述的方法,其特征在于,所述节点的更新信息包括:待删除的节点在文件树中的位置信息;
所述更新所述待同步的文件树,包括:
根据所述待删除的节点的位置信息,在所述待同步的文件树上将相应节点标记为删除,以及将所述被标记为删除的节点的所有子节点标记为删除;
分别将所述标记为删除的节点的版本号加1,并更新所述待同步的文件树的版本号。
15.如权利要求10所述的方法,其特征在于,所述节点的更新信息包括:新增加的节点在文件树中的位置信息以及所述新增加的节点所对应的文件;
所述更新所述待同步的文件树,包括:
根据所述新增加的节点的位置信息,在所述待同步的文件树上增加节点;
将新增加的节点的版本号设置为所述待同步的文件树的版本号加1,并更新所述待同步的文件树的版本号;
存储所述新增加的节点所对应的文件,建立所述新增加的节点与该节点所对应的文件的关联关系。
16.如权利要求10所述的方法,其特征在于,所述节点的更新信息包括:新增加的节点在文件树中的位置信息以及所述新增加的节点所对应的文件夹;
所述更新所述待同步的文件树,包括:
根据所述新增加的节点的位置信息,在所述待同步的文件树上增加节点;
将新增加的节点的版本号设置为所述待同步的文件树的版本号加1,并更新所述待同步的文件树的版本号;
建立所述新增加的节点与该节点所对应的文件夹的关联关系。
17.一种数据同步装置,其特征在于,应用于网络侧设备,包括:
接收模块,用于接收客户端设备发送的数据同步请求,所述数据同步请求中包括文件树索引信息;
获取模块,用于根据所述文件树索引信息,获取网络侧存储的与所述文件树索引信息对应的第一文件树;
确定模块,用于确定所述第一文件树上待同步给所述客户端设备的节点,一个文件树中除根节点以外的每个节点对应的一个文件或文件夹;
发送模块,用于根据确定出的待同步给所述客户端设备的节点,向所述客户端设备发送数据同步命令,所述数据同步命令用于指示所述客户端设备对所述客户端设备存储的与所述文件树索引信息对应的第二文件树进行更新;
其中,所述确定模块具体用于:确定数据同步方式,所确定的数据同步方式包括全量更新或差量更新;根据确定的同步方式,确定所述第一文件树上待同步给所述客户端设备的节点。
18.如权利要求17所述的装置,其特征在于,所述确定模块具体用于:
确定所述第一文件树中的有效节点数,其中,一个文件树上的有效节点是指该文件树上除被标记为已删除节点之外的所有节点;
确定所述第一文件树与所述第二文件树的差量节点数,其中,所述第一文件树与所述第二文件树的差量节点是指所述第一文件树上版本号大于所述第二文件树的版本号的节点;
若所述差量节点数大于或等于所述有效节点数的n倍,则确定采用全量更新,否则确定采用差量更新,n≥1。
19.如权利要求18所述的装置,其特征在于,所述数据同步请求中还包括同步方式指示信息,所述同步方式指示信息所指示的同步方式包括全量更新或差量更新;
所述确定模块具体用于:根据所述数据同步请求中包括的同步方式指示信息,确定数据同步方式。
20.如权利要求19所述的装置,其特征在于,若所述同步方式指示信息为全量更新指示信息,则所述全量更新指示信息是所述客户端设备在根据接收到的数据同步命令进行文件树同步操作失败后,携带于所述数据同步请求中的。
21.如权利要求17至20中任一项所述的装置,其特征在于,所述确定模块具体用于:
若确定出的同步方式为全量更新,则将所述第一文件树上的有效节点确定为待同步给所述客户端设备的节点;其中,一个文件树上的有效节点是指该文件树上除被标记为已删除节点之外的所有节点;或者
若确定出的同步方式为差量更新,则将所述第一文件树与所述第二文件树的差量节点确定为待同步给所述客户端设备的节点,其中,所述第一文件树与所述第二文件树的差量节点是指所述第一文件树上版本号大于所述第二文件树的版本号的节点。
22.如权利要求17至20中任一项所述的装置,其特征在于,所述发送模块具体用于:
根据确定出的所述第一文件树上待同步给所述客户端设备的节点,以及分页大小参数,确定总分页页数,以及每页对应的节点的更新信息;其中,所述分页大小参数用节点数量表示,一个分页对应的节点数量等于所述分页大小参数;
根据分页顺序,向所述客户端设备发送数据同步命令,其中携带当前分页对应的节点的更新信息、当前分页的页号以及总分页页数。
23.如权利要求22所述的装置,其特征在于,所述接收模块还用于:在所述发送模块根据分页顺序,向所述客户端设备发送数据同步命令之后,接收所述客户端设备再次发送的数据同步请求,其中携带有所请求的分页的页号;
所述发送模块还用于:根据所述客户端设备再次发送的数据同步请求中携带的分页页号,获取对应分页所对应的节点的更新信息,向所述客户端设备发送数据同步命令,其中携带有当前分页对应的节点的更新信息、当前分页的页号以及总分页页数。
24.如权利要求17所述的装置,其特征在于,所述发送模块还用于:
若在向所述客户端设备发送数据同步命令后,所述第一文件树的版本号发生更新,则将更新后的所述第一文件树上,版本号大于所述第一文件树更新前的版本号的节点的更新信息,发送给所述客户端设备;或者
向所述客户端设备发送通知消息,所述通知消息用于通知所述第一文件树的版本号发生更新并征询所述客户端设备是否发起数据同步请求;其中,所述通知消息中包括所述第一文件树更新后的版本号。
25.如权利要求17至20、24中任一项所述的装置,其特征在于,所述数据同步请求中还包括与所述文件树索引信息对应的第二文件树的版本号;
所述第一文件树以及所述第二文件树中,根节点的版本号与除根节点以外的其它所有节点中的最大版本号相同,文件树的版本号与该文件树的根节点的版本号相同;当文件树中的一个节点更新时,该节点的版本号递增。
26.一种数据更新装置,其特征在于,包括:
接收模块,用于接收数据同步命令,所述数据同步命令中包括文件树索引信息以及节点的更新信息;其中,一个文件树中除根节点以外的每个节点对应一个文件或文件夹;
获取模块,用于根据所述文件树索引信息,获取对应的待同步的文件树;
更新模块,用于根据所述数据同步命令中包括的节点的更新信息,更新所述待同步的文件树;其中,一个文件树中,根节点的版本号与除根节点以外的其他所有节点中的最大版本号相同,文件树的版本号与该文件树的根节点的版本号相同,当文件树中的一个节点更新时,该节点的版本号递增。
27.如权利要求26所述的装置,其特征在于,所述节点的更新信息包括:待修改文件名称的节点的在文件树中的位置信息以及修改后的文件名;
所述更新模块具体用于:
根据所述待修改文件名称的节点的位置信息,将所述待同步的文件树上相应节点的版本号加1,并更新该文件树的版本号;
根据修改后的文件名称,更新节点与文件的关联关系中所述待修改文件名称的节点所对应的文件的名称。
28.如权利要求26所述的装置,其特征在于,所述节点的更新信息包括:待修改文件夹名称的节点在文件树中的位置信息以及修改后的文件夹名称;
所述更新模块具体用于:
根据所述待修改文件夹名称的节点的位置信息,将所述待同步的文件树上相应节点的版本号加1;
若所述待修改文件夹名称的节点下包含子节点,则分别更新所述待修改文件夹名称的节点下的所有子节点的版本号;其中,对于每个子节点,更新该子节点的版本号时,在该子节点当前的版本号上加上该子节点的父节点的版本差,所述父节点的版本差为该父节点更新后的版本号与更新前的版本号之差;
更新所述待同步的文件树的版本号;
根据修改后的文件夹名称,更新节点与文件夹的关联关系中,所述待修改文件夹名称的节点所对应的文件夹的名称。
29.如权利要求26所述的装置,其特征在于,所述节点的更新信息包括:待删除的节点在文件树中的位置信息;
所述更新模块具体用于:
根据所述待删除的节点的位置信息,在所述待同步的文件树上将相应节点标记为删除;
将所述被标记为删除的节点的版本号加1,并更新所述待同步的文件树的版本号。
30.如权利要求26所述的装置,其特征在于,所述节点的更新信息包括:待删除的节点在文件树中的位置信息;
所述更新模块具体用于:
根据所述待删除的节点的位置信息,在所述待同步的文件树上将相应节点标记为删除,以及将所述被标记为删除的节点的所有子节点标记为删除;
分别将所述标记为删除的节点的版本号加1,并更新所述待同步的文件树的版本号。
31.如权利要求26所述的装置,其特征在于,所述节点的更新信息包括:新增加的节点在文件树中的位置信息以及所述新增加的节点所对应的文件;
所述更新模块具体用于:
根据所述新增加的节点的位置信息,在所述待同步的文件树上增加节点;
将新增加的节点的版本号设置为所述待同步的文件树的版本号加1,并更新所述待同步的文件树的版本号;
存储所述新增加的节点所对应的文件,建立所述新增加的节点与该节点所对应的文件的关联关系。
32.如权利要求26所述的装置,其特征在于,所述节点的更新信息包括:新增加的节点在文件树中的位置信息以及所述新增加的节点所对应的文件夹;
所述更新模块具体用于:
根据所述新增加的节点的位置信息,在所述待同步的文件树上增加节点;
将新增加的节点的版本号设置为所述待同步的文件树的版本号加1,并更新所述待同步的文件树的版本号;
建立所述新增加的节点与该节点所对应的文件夹的关联关系。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201510716050.4A CN106657174B (zh) | 2015-10-28 | 2015-10-28 | 一种数据同步方法、更新方法及装置 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201510716050.4A CN106657174B (zh) | 2015-10-28 | 2015-10-28 | 一种数据同步方法、更新方法及装置 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN106657174A CN106657174A (zh) | 2017-05-10 |
CN106657174B true CN106657174B (zh) | 2020-11-03 |
Family
ID=58830736
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201510716050.4A Active CN106657174B (zh) | 2015-10-28 | 2015-10-28 | 一种数据同步方法、更新方法及装置 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN106657174B (zh) |
Families Citing this family (15)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN107347090A (zh) * | 2017-06-08 | 2017-11-14 | 广州市呼百应网络技术股份有限公司 | 数据同步方法 |
CN109660584A (zh) * | 2017-10-12 | 2019-04-19 | 阿里巴巴集团控股有限公司 | 一种客户端与服务器建立长连接的方法及通信方法与通信系统 |
CN109962942B (zh) * | 2017-12-22 | 2022-06-07 | 天翼云科技有限公司 | 副本更新方法和装置以及计算机可读存储介质 |
CN110545301B (zh) * | 2018-05-29 | 2022-06-17 | 视联动力信息技术股份有限公司 | 监控资源同步方法和装置 |
CN108833509A (zh) * | 2018-05-31 | 2018-11-16 | 出门问问信息科技有限公司 | 数据同步方法及装置 |
CN109657497B (zh) * | 2018-12-21 | 2023-06-13 | 北京思源理想控股集团有限公司 | 安全文件系统及其方法 |
CN109831323B (zh) * | 2019-01-15 | 2022-04-05 | 网宿科技股份有限公司 | 服务器信息的管理方法、管理系统及服务器 |
CN110377565A (zh) * | 2019-07-24 | 2019-10-25 | 东软集团股份有限公司 | 一种多媒体数据库的同步方法及车机 |
CN110659299B (zh) * | 2019-08-30 | 2020-11-10 | 珠海格力电器股份有限公司 | 数据更新的方法及装置、前端开发客户端 |
CN110661857B (zh) * | 2019-09-12 | 2021-12-07 | 京东数字科技控股有限公司 | 一种数据同步方法和装置 |
CN111078669B (zh) * | 2019-12-18 | 2022-08-09 | 新华三大数据技术有限公司 | 基于名字解析树的处理方法、装置、设备及存储介质 |
CN112437142B (zh) * | 2020-11-13 | 2022-05-31 | 杭州米络星科技(集团)有限公司 | 多个数据中心的数据同步系统和方法 |
CN113220236B (zh) * | 2021-05-17 | 2024-01-30 | 北京青云科技股份有限公司 | 一种数据管理方法、系统及设备 |
CN116680450A (zh) * | 2023-06-06 | 2023-09-01 | 智研汇(上海)科技有限公司 | 树形数据结构及其分页加载方法 |
CN117251434A (zh) * | 2023-11-20 | 2023-12-19 | 深圳万物安全科技有限公司 | 数据对比方法、服务器及可读存储介质 |
Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101930442A (zh) * | 2009-06-24 | 2010-12-29 | 侯方勇 | 一种哈希树的节点更新方法 |
CN102790760A (zh) * | 2012-05-31 | 2012-11-21 | 清华大学 | 安全网盘系统中一种基于目录树的数据同步方法 |
CN103685385A (zh) * | 2012-09-12 | 2014-03-26 | 中国移动通信集团公司 | 一种文件同步的方法、系统和装置 |
CN104580454A (zh) * | 2014-12-31 | 2015-04-29 | 乐视网信息技术(北京)股份有限公司 | 一种数据同步方法、装置及系统 |
Family Cites Families (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US6405219B2 (en) * | 1999-06-22 | 2002-06-11 | F5 Networks, Inc. | Method and system for automatically updating the version of a set of files stored on content servers |
-
2015
- 2015-10-28 CN CN201510716050.4A patent/CN106657174B/zh active Active
Patent Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101930442A (zh) * | 2009-06-24 | 2010-12-29 | 侯方勇 | 一种哈希树的节点更新方法 |
CN102790760A (zh) * | 2012-05-31 | 2012-11-21 | 清华大学 | 安全网盘系统中一种基于目录树的数据同步方法 |
CN103685385A (zh) * | 2012-09-12 | 2014-03-26 | 中国移动通信集团公司 | 一种文件同步的方法、系统和装置 |
CN104580454A (zh) * | 2014-12-31 | 2015-04-29 | 乐视网信息技术(北京)股份有限公司 | 一种数据同步方法、装置及系统 |
Also Published As
Publication number | Publication date |
---|---|
CN106657174A (zh) | 2017-05-10 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN106657174B (zh) | 一种数据同步方法、更新方法及装置 | |
CN106657170B (zh) | 一种数据同步方法及装置 | |
JP6629697B2 (ja) | 仮想マシンイメージファイルを抽出する方法および装置 | |
JP6419319B2 (ja) | 共有フォルダ及び共有ファイルの同期 | |
JP6236533B2 (ja) | 差分アップデートパッケージの作成方法及び装置、システム差分アップデート方法及び装置 | |
US10055149B2 (en) | Intelligent snapshot tree replication | |
US9635092B2 (en) | Method for processing shared file and cloud storage server | |
CN104503864A (zh) | 一种基于局域网的文件备份方法和装置 | |
US20170031948A1 (en) | File synchronization method, server, and terminal | |
US11265182B2 (en) | Messaging to enforce operation serialization for consistency of a distributed data structure | |
CN105302920A (zh) | 一种云存储数据的优化管理方法和系统 | |
US20140164534A1 (en) | System for sending a content item through an online content management system | |
CN109344006A (zh) | 一种镜像管理方法及镜像管理模块 | |
CN110659151A (zh) | 数据校验方法及装置,存储介质 | |
WO2017036183A1 (zh) | 差分升级包的处理方法及装置,升级方法、系统及装置 | |
CN114127690A (zh) | 用于协作的合并树 | |
CN111770153A (zh) | 一种对象下载方法、装置及电子设备和存储介质 | |
CN103369002A (zh) | 一种资源下载的方法及系统 | |
CN105069009A (zh) | 一种上传、下载文件夹的方法及装置 | |
WO2021233115A1 (zh) | 文件名称的修改方法和装置及存储介质 | |
US10394482B2 (en) | Snap tree arbitrary replication | |
CN106776131B (zh) | 一种数据备份方法及服务器 | |
WO2016176045A1 (en) | System, method, and apparatus for updating data in a distributed storage system | |
CN111708835A (zh) | 区块链数据存储方法及装置 | |
CN112579877A (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 | ||
TR01 | Transfer of patent right | ||
TR01 | Transfer of patent right |
Effective date of registration: 20201124 Address after: Room 603, 6 / F, Roche Plaza, 788 Cheung Sha Wan Road, Kowloon, China Patentee after: Zebra smart travel network (Hong Kong) Limited Address before: Cayman Islands Grand Cayman capital building, a four storey No. 847 mailbox Patentee before: Alibaba Group Holding Ltd. |