CN108573014B - 一种文件同步方法、装置、电子设备及可读存储介质 - Google Patents
一种文件同步方法、装置、电子设备及可读存储介质 Download PDFInfo
- Publication number
- CN108573014B CN108573014B CN201711377245.6A CN201711377245A CN108573014B CN 108573014 B CN108573014 B CN 108573014B CN 201711377245 A CN201711377245 A CN 201711377245A CN 108573014 B CN108573014 B CN 108573014B
- Authority
- CN
- China
- Prior art keywords
- file
- tree structure
- node
- server
- list
- 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
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F11/00—Error detection; Error correction; Monitoring
- G06F11/07—Responding to the occurrence of a fault, e.g. fault tolerance
- G06F11/14—Error detection or correction of the data by redundancy in operation
- G06F11/1402—Saving, restoring, recovering or retrying
- G06F11/1446—Point-in-time backing up or restoration of persistent data
- G06F11/1448—Management of the data involved in backup or backup restore
-
- 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)
- Theoretical Computer Science (AREA)
- Computer Networks & Wireless Communication (AREA)
- Signal Processing (AREA)
- Quality & Reliability (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
- Information Transfer Between Computers (AREA)
Abstract
本发明实施例提供了一种文件同步方法、装置、电子设备及可读存储介质,该方法包括:分别获取当前客户端文件列表快照、上一次同步完成时的文件列表快照、当前服务器文件列表快照,将当前客户端文件列表快照转换为对应的第一树形结构,将上一次同步完成时的文件列表快照转换为对应的第二树形结构,将当前服务器文件列表快照转换为对应的第三树形结构,对第一树形结构、第二树形结构、第三树形结构进行对比,确定待同步文件的文件信息和待同步文件的文件信息对应的更新操作,对待同步文件执行与待同步文件的文件信息对应的更新操作,实现对待同步文件的同步。实现对用户对客户端文件和服务器文件进行同步时,减少同步过程的时间开销,提高同步速度。
Description
技术领域
本发明涉及通信技术领域,特别是涉及一种文件同步方法、装置、电子设备及可读存储介质。
背景技术
随着云存储技术的发展,越来越多的用户喜欢使用云服务器管理文件,这样用户可以将云服务器中的文件同步到不同客户端上,还可以在不同的地点、不同客户端上将文件同步到云服务器上。
现有的文件同步技术中,用户在客户端生成本地当前文件列表快照,然后与上一次同步结束时的文件列表快照及当前服务器文件列表快照进行对比,得到本地当前文件列表与服务器文件列表的文件差异列表,再根据该文件差异列表,将与客户端文件不同的服务器文件同步到本地,或者将与服务器文件不同的客户端文件同步到服务器。
然而,当文件列表快照中根目录下的子目录或文件比较多时,上述进行对比的过程就会缓慢,从而增加了同步过程的时间开销。
发明内容
本发明实施例的目的在于提供一种文件同步方法、装置、电子设备及可读存储介质,以实现减少同步过程的时间开销。具体技术方案如下:
第一方面,本发明实施例提供了一种文件同步方法,所述方法包括:
分别获取当前客户端文件列表快照、上一次同步完成时的文件列表快照、当前服务器文件列表快照,其中,当前客户端文件列表快照包含当前客户端文件的文件信息,上一次同步完成时的文件列表快照包含上一次本地与服务器完成同步时的文件信息,当前服务器文件列表快照包含服务器文件的文件信息,文件信息包括文件名、文件类型、文件修改时间及文件路径;
将当前客户端文件列表快照转换为对应的第一树形结构,将上一次同步完成时的文件列表快照转换为对应的第二树形结构,将当前服务器文件列表快照转换为对应的第三树形结构;
对第一树形结构、第二树形结构、第三树形结构进行对比,确定待同步文件的文件信息和待同步文件的文件信息对应的更新操作;
对待同步文件执行与待同步文件的文件信息对应的更新操作。
可选的,将当前客户端文件列表快照转换为对应的第一树形结构,包括:
将当前客户端文件列表快照的根目录,作为第一树形结构的根节点,将当前客户端文件列表快照的根目录的第n级子目录,作为第一树形结构的根节点的第n级子节点,将当前客户端文件列表快照的根目录的第n级子目录的目录文件,作为第一树形结构的根节点的第n级子节点的叶子节点,得到第一树形结构,其中,当前客户端文件列表快照的根目录的第n级子目录至少为一个,第一树形结构的第n级子节点至少为一个,n为大于1的自然数;
可选的,将上一次同步完成时的文件列表快照转换为对应的第二树形结构,包括:
将上一次同步完成时的文件列表快照的根目录,作为第二树形结构的根节点,将上一次同步完成时的文件列表快照的根目录的第m级子目录,作为第二树形结构的根节点的第m级子节点,将上一次同步完成时的文件列表快照的根目录的第m级子目录的目录文件,作为第二树形结构的根节点的第m级子节点的叶子节点,得到第二树形结构,其中,上一次同步完成时的文件列表快照的根目录的第m级子目录至少为一个,第二树形结构的第m级子节点至少包括一个子节点,m为大于1的自然数;
可选的,将当前服务器文件列表快照转换为对应的第三树形结构,包括:
将当前服务器文件列表快照的根目录,作为第三树形结构的根节点,将当前服务器文件列表快照的根目录的第k级子目录,作为第三树形结构的根节点的第k级子节点,将当前服务器文件列表快照的根目录的第k级子目录的目录文件,作为第三树形结构的根节点的第k级子节点的叶子节点,得到第三树形结构,其中,当前服务器文件列表快照的根目录的第k级子目录至少为一个,第三树形结构的第k级子节点至少包括一个子节点,k为大于1的自然数。
可选的,对第一树形结构、第二树形结构、第三树形结构进行对比,确定待同步文件的文件信息和待同步文件的文件信息对应的更新操作,包括:
对比第一树形结构、第二树形结构,确定客户端文件变化列表;
对比第二树形结构、第三树形结构,确定服务器文件变化列表;
对比客户端文件变化列表和服务器文件变化列表,确定待同步文件的文件信息和待同步文件的文件信息对应的更新操作。
可选的,对比第一树形结构、第二树形结构,确定客户端文件变化列表,包括:
获取第一树形结构的根节点的第i级子节点的文件信息,与第二树形结构的第i级子节点的文件信息进行对比,确定第一树形结构的根节点的第i级子节点中发生改变的文件,并将第i级子节点中发生改变的文件的文件信息保存到客户端文件变化列表,其中,i为大于1且小于或等于n和m的自然数;
获取第一树形结构的根节点的第i级子节点的叶子节点的文件信息,与第二树形结构的第i级子节点的叶子节点的文件信息进行对比,确定第一树形结构的根节点的第i级子节点的叶子节点中发生改变的文件,并将第i级子节点的叶子节点中发生改变的文件的文件信息,保存到客户端文件变化列表;
遍历第一树形结构,得到第一树形结构中所有子节点和叶子节点中发生改变的文件的文件信息,确定客户端文件变化列表;
可选的,对比第二树形结构、第三树形结构,确定服务器文件变化列表,包括:
获取第三树形结构的根节点的第j级子节点的文件信息,与第二树形结构的第j级子节点的文件信息进行对比,确定第三树形结构的根节点的第j级子节点中发生改变的文件,并将第j级子节点中发生改变的文件的文件信息保存到服务器文件变化列表,其中,j为大于1且小于或等于m和k的自然数;
获取第三树形结构的根节点的第j级子节点的叶子节点的文件信息,与第二树形结构的第j级子节点的叶子节点的文件信息进行对比,确定第三树形结构的根节点的第j级子节点的叶子节点中发生改变的文件,并将第j级子节点的叶子节点中发生改变的文件的文件信息,保存到服务器文件变化列表;
遍历第三树形结构,得到第三树形结构中所有子节点和叶子节点中发生改变的文件的文件信息,确定服务器文件变化列表。
可选的,文件信息还包括文件版本号,对比第二树形结构、第三树形结构,确定服务器文件变化列表,包括:
对比第二树形结构中文件信息的版本号与第三树形结构中文件信息的版本号,确定服务器文件变化列表。
可选的,在对待同步文件执行与待同步文件的文件信息对应的更新操作之前,本发明实施例的文件同步方法还包括:
当接收到服务器发送的暂停同步的指令时,暂停执行与待同步文件的文件信息对应的更新操作。
可选的,更新操作包括:上传、下载、重命名或删除。
可选的,对待同步文件执行与待同步文件的文件信息对应的更新操作,包括:
对待同步文件单向执行与待同步文件的文件信息对应的更新操作;或者
对待同步文件双向执行与待同步文件的文件信息对应的更新操作;或者
对待同步文件选择性执行与待同步文件的文件信息对应的更新操作。
第二方面,本发明实施例还提供了一种文件同步装置,所述装置包括:
获取模块,用于分别获取当前客户端文件列表快照、上一次同步完成时的文件列表快照、当前服务器文件列表快照,其中,当前客户端文件列表快照包含当前客户端文件的文件信息,上一次同步完成时的文件列表快照包含上一次本地与服务器完成同步时的文件信息,当前服务器文件列表快照包含服务器文件的文件信息,文件信息包括文件名、文件类型、文件修改时间及文件路径;
转换模块,用于将当前客户端文件列表快照转换为对应的第一树形结构,将上一次同步完成时的文件列表快照转换为对应的第二树形结构,将当前服务器文件列表快照转换为对应的第三树形结构;
对比模块,用于对第一树形结构、第二树形结构、第三树形结构进行对比,确定待同步文件的文件信息和待同步文件的文件信息对应的更新操作;
更新模块,用于对待同步文件执行与待同步文件的文件信息对应的更新操作。
可选的,转换模块,包括:
第一树形结构转换子模块,用于将当前客户端文件列表快照的根目录,作为第一树形结构的根节点,将当前客户端文件列表快照的根目录的第n级子目录,作为第一树形结构的根节点的第n级子节点,将当前客户端文件列表快照的根目录的第n级子目录的目录文件,作为第一树形结构的根节点的第n级子节点的叶子节点,得到第一树形结构,其中,当前客户端文件列表快照的根目录的第n级子目录至少为一个,第一树形结构的第n级子节点至少为一个,n为大于1的自然数;
第二树形结构转换子模块,用于将上一次同步完成时的文件列表快照的根目录,作为第二树形结构的根节点,将上一次同步完成时的文件列表快照的根目录的第m级子目录,作为第二树形结构的根节点的第m级子节点,将上一次同步完成时的文件列表快照的根目录的第m级子目录的目录文件,作为第二树形结构的根节点的第m级子节点的叶子节点,得到第二树形结构,其中,上一次同步完成时的文件列表快照的根目录的第m级子目录至少为一个,第二树形结构的第m级子节点至少包括一个子节点,m为大于1的自然数;
第三树形结构转换子模块,用于将当前服务器文件列表快照的根目录,作为第三树形结构的根节点,将当前服务器文件列表快照的根目录的第k级子目录,作为第三树形结构的根节点的第k级子节点,将当前服务器文件列表快照的根目录的第k级子目录的目录文件,作为第三树形结构的根节点的第k级子节点的叶子节点,得到第三树形结构,其中,当前服务器文件列表快照的根目录的第k级子目录至少为一个,第三树形结构的第k级子节点至少包括一个子节点,k为大于1的自然数。
可选的,对比模块,包括:
客户端文件变化对比子模块,用于对比第一树形结构、第二树形结构,确定客户端文件变化列表;
服务器文件变化对比子模块,用于对比第二树形结构、第三树形结构,确定服务器文件变化列表;
待同步文件确定子模块,用于对比客户端文件变化列表和服务器文件变化列表,确定待同步文件的文件信息和待同步文件的文件信息对应的更新操作。
可选的,客户端文件变化对比子模块,具体用于:
获取第一树形结构的根节点的第i级子节点的文件信息,与第二树形结构的第i级子节点的文件信息进行对比,确定第一树形结构的根节点的第i级子节点中发生改变的文件,并将第i级子节点中发生改变的文件的文件信息保存到客户端文件变化列表,其中,i为大于1且小于或等于n和m的自然数;
获取第一树形结构的根节点的第i级子节点的叶子节点的文件信息,与第二树形结构的第i级子节点的叶子节点的文件信息进行对比,确定第一树形结构的根节点的第i级子节点的叶子节点中发生改变的文件,并将第i级子节点的叶子节点中发生改变的文件的文件信息,保存到客户端文件变化列表;
遍历第一树形结构,得到第一树形结构中所有子节点和叶子节点中发生改变的文件的文件信息,确定客户端文件变化列表;
可选的,服务器文件变化对比子模块,具体用于:
获取第三树形结构的根节点的第j级子节点的文件信息,与第二树形结构的第j级子节点的文件信息进行对比,确定第三树形结构的根节点的第j级子节点中发生改变的文件,并将第j级子节点中发生改变的文件的文件信息保存到服务器文件变化列表,其中,j为大于1且小于或等于m和k的自然数;
获取第三树形结构的根节点的第j级子节点的叶子节点的文件信息,与第二树形结构的第j级子节点的叶子节点的文件信息进行对比,确定第三树形结构的根节点的第j级子节点的叶子节点中发生改变的文件,并将第j级子节点的叶子节点中发生改变的文件的文件信息,保存到服务器文件变化列表;
遍历第三树形结构,得到第三树形结构中所有子节点和叶子节点中发生改变的文件的文件信息,确定服务器文件变化列表。
可选的,文件信息还包括文件版本号,服务器文件变化对比子模块,还用于对比第二树形结构中文件信息的版本号与第三树形结构中文件信息的版本号,确定服务器文件变化列表。
可选的,本发明实施例的文件同步装置,还包括:
暂停模块,用于当接收到服务器发送的暂停同步的指令时,暂停执行与待同步文件的文件信息对应的更新操作。
可选的,更新操作包括:上传、下载、重命名或删除。
可选的,更新模块,具体用于:
对待同步文件单向执行与待同步文件的文件信息对应的更新操作;或者
对待同步文件双向执行与待同步文件的文件信息对应的更新操作;或者
对待同步文件选择性执行与待同步文件的文件信息对应的更新操作。
第三方面,本发明实施例还提供了一种电子设备,包括处理器和机器可读存储介质,机器可读存储介质存储有能够被处理器执行的机器可执行指令,处理器被机器可执行指令促使:实现上述第一方面提供的一种文件同步方法步骤。
第四方面,本发明实施例还提供了一种计算机可读存储介质,计算机可读存储介质内存储有计算机程序,计算机程序被处理器执行时,实现上述第一方面提供的一种文件同步方法步骤。
第五方面,本发明实施例还提供了一种包含指令的计算机程序产品,当其在计算机上运行时,使得计算机执行上述第一方面提供的一种文件同步方法步骤。
第六方面,本发明实施例还提供了一种计算机程序,当其在计算机上运行时,使得计算机执行上述第一方面提供的一种文件同步方法步骤。
本发明实施例提供的一种文件同步方法、装置、电子设备及可读存储介质,通过将当前客户端文件列表快照转换为对应的第一树形结构,将上一次同步完成时的文件列表快照转换为对应的第二树形结构,将当前服务器文件列表快照转换为对应的第三树形结构,能够将当前客户端文件列表快照、上一次同步完成时的文件列表快照以及当前服务器文件列表快照之间的对比,转换为第一树形结构、第二树形结构以及第三树形结构之间的对比。然后对第一树形结构、第二树形结构以及第三树形结构进行对比,能够充分利用树形结构可以进行快速对比的特点,减少确定待同步文件的文件信息和待同步文件的文件信息对应的更新操作的时间开销,最后对待同步文件执行与待同步文件的文件信息对应的更新操作,从而可以降低同步过程的时间开销,提高同步速度。当然,实施本发明的任一产品或方法必不一定需要同时达到上述的所有优点。
附图说明
为了更清楚地说明本发明实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。
图1为本发明实施例的一种文件同步方法应用于单一客户端与服务器的系统示意图;
图2为本发明实施例的一种文件同步方法应用于多个客户端与服务器的系统示意图;
图3为本发明实施例的一种文件同步方法的流程图;
图4a为本发明实施例的一种文件同步方法的第一树形结构示意图;
图4b为本发明实施例的一种文件同步方法的第二树形结构示意图;
图4c为本发明实施例的一种文件同步方法的第三树形结构示意图;
图5a为本发明实施例的一种文件同步方法的第一树形结构与第二树形结构对比的第一种流程图;
图5b为本发明实施例的一种文件同步方法的第一树形结构与第二树形结构对比的第二种流程图;
图5c为本发明实施例的一种文件同步方法的第三树形结构与第二树形结构对比的第一种流程图;
图5d为本发明实施例的一种文件同步方法的第三树形结构与第二树形结构对比的第二种流程图;
图6为本发明实施例的一种文件同步装置的结构示意图;
图7为本发明实施例的一种文件同步方法应用于电子设备的结构示意图。
具体实施方式
下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。
首先,对快照的定义进行说明:
SNIA(Storage Networking Industry Association,全球网络存储工业协会)对快照(Snapshot)的定义是:关于指定数据集合的一个完全可用拷贝,该拷贝包括相应数据在某个时间点(拷贝开始的时间点)的映像。快照可以是其所表示的数据的一个副本,也可以是数据的一个复制品。具体的,快照是指向保存在存储设备中的数据的引用标记或指针。
为了解决现有技术存在的问题,本发明实施例提供了一种文件同步方法、装置、电子设备及可读存储介质,以减少同步过程的时间开销,提高同步速度。
在一些示例中,本发明实施例提供的一种文件同步方法,可以应用于以下任一电子设备:
(1)移动通信设备:这类设备的特点是具备移动通信功能,并且以提供语音、数据通信为主要目标。这类客户端包括:智能手机(例如iPhone)、多媒体手机等。
(2)个人计算机设备:这类设备一般由硬件系统和软件系统组成,是一种能独立运行,完成特定功能的设备,这类设备包括:台式计算机或桌面电脑、笔记本电脑、上网本等。
(3)超级个人计算机设备,这类设备属于个人计算机的范畴,有计算和处理功能,一般也具备移动上网特性。这类客户端包括:PDA(Personal Digital Assistant,掌上电脑)、MID(Mobile Internet Device,移动互联网设备)和UMPC(Ultra-mobile PersonalComputer,超级移动个人计算机设备)等,例如iPad。
还可以用于文件存储服务器,该服务器为提供计算服务的设备,可以存储客户端上传的各类文件,例如:视频文件、文档文件、音乐文件等。
例如,本发明实施例提供的文件同步方法,可以应用于单一客户端设备与服务器的系统,如图1所示,为本发明实施例的一种文件同步方法应用于单一客户端与服务器的系统示意图,该系统可以包括客户端101和服务器102。本发明实施例的一种文件同步方法可以应用于该系统中的客户端101,对客户端101本地的文件和服务器中保存的文件进行同步;也可以应用于该系统中的服务器102,对服务器102本地保存的文件和客户端101中的文件进行同步。
又如,本发明实施例提供的文件同步方法,也可以应用于多个客户端设备与服务器的系统。例如,如图2所示,为本发明实施例的一种文件同步方法应用于多个客户端与服务器的系统示意图,该系统可以包括:第一客户端201、第二客户端202、第三客户端203、第四客户端204和服务器205。其中,第一客户端201、第二客户端202、第三客户端203、第四客户端204均为应用本发明实施例提供的文件同步方法的客户端设备。上述四个客户端设备可以同时与服务器205进行文件同步,也可以在不同时间与服务器205进行文件同步。该四个客户端设备可以通过同一账号登录服务器205,服务器205可以分别记录该四个客户端设备的标识信息,其中,该标识信息可以是客户端设备的型号、客户端设备名称、客户端设备的物理地址之一或组合。
下面,对本发明实施例的文件同步方法进行介绍,如图3所示,为本发明实施例的一种文件同步方法的流程图,该方法可以包括:
S301,分别获取当前客户端文件列表快照、上一次同步完成时的文件列表快照、当前服务器文件列表快照。
其中,当前客户端文件列表快照包含当前客户端文件的文件信息,上一次同步完成时的文件列表快照包含上一次本地与服务器完成同步时的文件信息,当前服务器文件列表快照包含服务器文件的文件信息,文件信息包括文件名、文件类型、文件修改时间及文件路径。文件列表快照可以表示文件列表在某一个时间点的映像。
在一些示例中,当前客户端文件列表快照保存在客户端,当前服务器文件列表快照保存在服务器,上一次同步完成时的文件列表快照可以保存在客户端,也可以保存在服务器。
具体的,当本发明实施例的文件同步方法应用于客户端设备时,该客户端设备,可以在客户端本地获取当前客户端文件列表快照;可以发送获取当前服务器文件列表快照的获取指令至服务器,服务器在接收到该客户端发送的获取指令后,可以生成当前服务器文件列表快照,并反馈给该客户端设备。
在一些示例中,当前客户端文件列表快照、当前服务器文件列表快照以及上一次同步完成时的文件列表快照也可以都保存在客户端。
具体的,当本发明实施例的文件同步方法应用于客户端设备时,该客户端设备,可以在客户端本地获取当前客户端文件列表快照;可以发送获取指令至服务器,服务器在接收到该获取指令后,可以将服务器中保存的文件的文件结构和文件信息发送至该客户端,该客户端在接收到上述文件的文件结构和文件信息后,可以生成当前服务器文件列表快照。这样,可以使得服务器文件发生变化时,避免在服务器生成服务器文件列表快照,从而可以降低服务器的负载压力,避免生成当前服务器文件列表快照对服务器资源的占用,节省服务器资源。
在一些示例中,可以将上一次同步完成时的文件列表快照,保存在客户端设备,这样,可以使得在应用本发明实施例的一种文件同步方法时,减少客户端与服务器的数据交互,降低服务器的负载压力,减少同步过程的整体时间开销。因此,该客户端设备可以在客户端本地获取上一次同步完成时的文件列表快照。
在一些示例中,当本发明实施例的文件同步方法应用于服务器时,该服务器可以在服务器本地获取当前服务器文件列表快照;可以发送获取当前客户端文件列表快照的获取指令至客户端,客户端在接收到该服务器发送的获取指令后,可以生成当前客户端文件列表快照,并反馈给该服务器。
在一些示例中,当前客户端文件列表快照、当前服务器文件列表快照以及上一次同步完成时的文件列表快照都保存在客户端,当本发明实施例的文件同步方法应用于服务器时,该服务器可以发送获取指令至客户端,客户端在接收到该获取指令后,可以发送当前客户端文件列表快照、当前服务器文件列表快照以及上一次同步完成时的文件列表快照至该服务器。
作为一种优选的实施方式,可以将上一次同步完成时的文件列表快照保存在服务器,以减少服务器与客户端的数据交互,降低服务器的负载压力,减少同步过程的整体时间开销。因此,该服务器可以在服务器本地获取上一次同步完成时的文件列表快照。
例如,如表1所示,为Local Snapshot示例表,如表2所示,为Last Snapshot示例表,如表3所示,为remote Snapshot示例表。其中,Local Snapshot为当前客户端文件列表快照,last Snapshot为上一次同步完成时的文件列表快照,remote Snapshot为当前服务器文件列表快照。
表1 Local Snapshot示例表
文件名 | 文件类型 | 文件路径 | 文件修改时间 |
A | 文件夹 | Root\ | 20170510 |
B | 文件夹 | Root\ | 20170621 |
C | 文件夹 | Root\ | 20170701 |
A1 | 文件夹 | Root\A | 20170510 |
C1 | 文件夹 | Root\C | 20170701 |
A11 | .doc | Root\A\A1 | 20170510 |
A12 | .xls | Root\A\A1 | 20170417 |
C11 | .zip | Root\C\C1 | 20170710 |
表2 last Snapshot示例表
文件名 | 文件类型 | 文件路径 | 文件修改时间 |
A | 文件夹 | Root\ | 20170510 |
B | 文件夹 | Root\ | 20170621 |
C | 文件夹 | Root\ | 20170701 |
A1 | 文件夹 | Root\A | 20170510 |
C1 | 文件夹 | Root\C | 20170701 |
C11 | .zip | Root\C\C1 | 20170701 |
表3 remote Snapshot示例表
文件名 | 文件类型 | 文件路径 | 文件修改时间 |
A | 文件夹 | Root\ | 20170510 |
B | 文件夹 | Root\ | 20170621 |
C | 文件夹 | Root\ | 20170701 |
A1 | 文件夹 | Root\A | 20170510 |
C1 | .zip | Root\C | 20170701 |
表1所示的示例中,当前客户端文件列表快照包括目录A、目录B、目录C、目录A的子目录A1、目录B的子目录B1、目录C的子目录C1、子目录A1的目录文件A11、目录文件A12及子目录C1的目录文件C11的相关信息。每条记录包括文件名、文件类型、文件路径及文件修改时间。
表2所示的示例中,上一次同步完成同步时的文件列表快照包括目录A、目录B、目录C、目录A的子目录A1、目录C的子目录C1及子目录C1的目录文件C11的相关信息。
表3所示的示例中,当前服务器文件列表快照包括目录A、目录B、目录C、目录A的子目录A1、目录C的目录文件C1的相关信息。
其中,目录文件为文件目录里的单一文件。
在一些示例中,当第一次运行同步时,不存在上一次的同步过程,因此,不存在上一次同步完成时的文件列表快照。或者,由于上一次同步完成时的文件列表快照损坏或丢失而造成获取不到时,本发明实施例的一种文件同步方法还提供了一种可能的实现方式:
分别获取当前客户端文件列表快照和当前服务器文件列表快照,然后可以分别将当前客户端文件列表快照转换为第一树形结构,将服务器文件列表快照转换为第三树形结构,再将第一树形结构和第三树形结构进行对比,确定待同步文件的文件信息和待同步文件的文件信息对应的更新操作。
S302,将当前客户端文件列表快照转换为对应的第一树形结构,将上一次同步完成时的文件列表快照转换为对应的第二树形结构,将当前服务器文件列表快照转换为对应的第三树形结构。
在获取到上述当前客户端文件列表快照、上一次同步完成时的文件列表快照和当前服务器文件列表快照后,为了减少同步过程的时间开销,提高同步速度,可以分别将将当前客户端文件列表快照转换为对应的第一树形结构,将上一次同步完成时的文件列表快照转换为对应的第二树形结构,将当前服务器文件列表快照转换为对应的第三树形结构。
在本步骤中,可以预先设置一个空树形结构,该空树形结构中的根节点、每个子节点以及每个叶子节点中均未添加节点信息。在执行本步骤时,可以将当前客户端文件列表快照中的文件信息,按照当前客户端文件列表所表示的路径分别添加到该空树形结构中,得到第一树形结构;将上一次同步完成时的文件列表快照中的文件信息,按照上一次同步完成时的文件列表所表示的路径分别添加到该空树形结构中,得到第二树形结构;将当前服务器文件列表快照中的文件信息,按照当前服务器文件列表所表示的路径添加到该空树形结构中,得到第三树形结构。
例如,通过本步骤,可以将表1所示的Local Snapshot转换为如图4a所示的第一树形结构,将表2所示的last Snapshot转换为如图4b所示的第二树形结构,将表3所示的remote Snapshot转换为如图4c所示的第三树形结构。last Snapshot示例表,如表2所示,为last Snapshot示例表,如表3所示,为remote Snapshot示例表。
其中,在图4a中,Root为根节点,对应于表1所示的根目录,节点A、节点B、节点C分别为根节点Root的第一级子节点,节点A对应于根目录下的文件目录A,节点B对应于根目录下的文件目录B,节点C对应于根目录下的文件目录C,节点A1为根节点Root的第二级子节点或者节点A的第一级子节点,对应于文件目录A下的文件目录A1,节点C1为根节点Root的第二级子节点或者节点C的第一级子节点,对应于文件目录C下的文件目录C1,节点A11和节点A12分别为根节点Root的第三级子节点或者根节点Root的叶子节点,分别对应于文件目录A1下的目录文件A11和目录文件A12,节点C11为根节点Root的第三级子节点或者根节点Root的叶子节点,对应于文件目录C1下的目录文件C11。
在图4b中,Root为根节点,节点A、节点B、节点C分别为根节点Root的第一级子节点,节点C1为根节点Root的第二级子节点或者节点C的第一级子节点,节点C11为根节点Root的第三级子节点或者根节点Root的叶子节点。
在图4c中,Root为根节点,节点A、节点B、节点C分别为根节点Root的第一级子节点,节点C1为根节点Root的第二级子节点或者根节点Root的叶子节点。
通过将文件列表快照转换为树形结构,在通过后续步骤对比时,可以通过每个文件的文件路径快速在另外一个树形结构中查找,提高对比速度,降低同步过程中的时间开销。
S303,对第一树形结构、第二树形结构、第三树形结构进行对比,确定待同步文件的文件信息和待同步文件的文件信息对应的更新操作。
其中,该更新操作可以包括:上传、下载、重命名或删除。
在将文件列表快照转换为树形结构后,为了降低同步过程中的文件同步量,可以对客户端和服务器中存在差异的文件进行同步。因此,在本步骤中,可以对第一树形结构、第二树形结构、第三树形结构进行对比,从而确定待同步文件的文件信息和待同步文件的文件信息对应的更新操作。
在一些示例中,在进行对比时,可以同时对第一树形结构、第二树形结构、第三树形结构进行对比,也可以分别将第一树形结构与第二树形结构进行对比,得到客户端文件差异列表,将第二树形结构与第三树形结构进行对比,得到服务器文件差异列表,然后将客户端文件差异列表与服务器文件差异列表进行对比。
在对第一树形结构、第二树形结构、第三树形结构进行对比后,可以得到客户端文件和服务器文件的差异,进而可以根据客户端文件和服务器文件的差异,确定待同步文件的文件信息和待同步文件的文件信息的更新操作。
例如,通过将图4a所示的第一树形结构、图4b所示的第二树形结构、图4c所示的第三树形结构进行对比,可以得到待同步文件为文件目录A1、文件目录A1下的目录文件A11和目录文件A12,文件目录C1下的目录文件C11。如表4所示,为待同步文件的文件信息和待同步文件的更新操作表。
表4待同步文件的文件信息和待同步文件的更新操作表
文件名 | 更新操作 |
A1 | 上传 |
A11 | 上传 |
A12 | 上传 |
C11 | 删除 |
在表4中,待同步文件的文件信息可以包括文件名,与文件名A1对应的更新操作为上传,与文件名A11对应的更新操作为上传,与文件名A12对应的更新操作为上传,与文件名C11对应的更新操作为删除。
S304,对待同步文件执行与待同步文件的文件信息对应的更新操作。
在一些示例中,在执行本步骤时,应用本发明实施例的文件同步方法的设备可以首先发送同步请求指令,在对端设备反馈同意同步的指令后,对待同步文件执行与待同步文件的文件信息对应的更新操作。
在一些示例中,当发送同步请求指令的设备为客户端设备时,则对端设备为服务器;当发送同步请求指令的设备为服务器时,则对端设备为客户端设备。
在通过本发明实施例的文件同步方法确定待同步文件的文件信息和待同步文件的文件信息对应的更新操作后,应用本发明实施例的文件同步方法的设备可以对待同步文件执行与待同步文件的文件信息对应的更新操作,以实现对客户端文件和/或服务器文件的同步。
例如,可以通过本步骤分别对表4所示的文件名为A1的文件执行上传操作,对文件名为A11的文件执行上传操作,对文件名为A12的文件执行上传操作,对文件名为C11的文件执行删除操作。
通过本发明实施例的文件同步方法,在确定待同步文件的文件信息和待同步文件的文件信息对应的更新操作后,对待同步文件执行与待同步文件的文件信息对应的更新操作时,为了实现通过本发明实施例的文件同步方法灵活的实现更新操作,对待同步文件执行与待同步文件的文件信息对应的更新操作,包括:
对待同步文件单向执行与待同步文件的文件信息对应的更新操作。
具体的,当该待同步文件为服务器端的文件时,可以将该待同步文件按照对应的更新操作,更新到客户端,当该待同步文件为客户端文件时,可以将该待同步文件按照对应的更新操作,更新到服务器。
或者
对待同步文件双向执行与待同步文件的文件信息对应的更新操作。
具体的,可以将客户端中的第一待同步文件按照对应的更新操作更新到服务器,同时,将服务器中的第二待同步文件按照对应的更新操作更新到客户端。
例如,待同步文件1为客户端中的文件,对应的更新操作为“上传”,待同步文件2为服务器中的文件,对应的更新操作为“下载”,可以将待同步文件1上传到服务器,同时,也可以将待同步文件2下载到客户端。
又例如,待同步文件3为客户端中的文件,对应的更新操作为“删除”,则可以将待同步文件1上传到服务器,同时,删除客户端中的待同步文件3。
或者
对待同步文件选择性执行与待同步文件的文件信息对应的更新操作。
具体的,可以选择性的将待同步文件中的部分文件更新到服务器,或者,选择性的将待同步文件中的部分文件更新到客户端。
通过上述步骤,可以实现单向同步、双向同步,还可以实现选择性同步,提高了应用本发明实施例的文件同步方法进行文件同步时的灵活性。
本发明实施例提供的一种文件同步方法,通过将当前客户端文件列表快照转换为对应的第一树形结构,将上一次同步完成时的文件列表快照转换为对应的第二树形结构,将当前服务器文件列表快照转换为对应的第三树形结构,能够将当前客户端文件列表快照、上一次同步完成时的文件列表快照以及当前服务器文件列表快照之间的对比,转换为第一树形结构、第二树形结构以及第三树形结构之间的对比。然后对第一树形结构、第二树形结构以及第三树形结构进行对比,能够充分利用树形结构可以进行快速对比的特点,减少确定待同步文件的文件信息和待同步文件的文件信息对应的更新操作的时间开销,最后对待同步文件执行与待同步文件的文件信息对应的更新操作,从而可以降低同步过程的时间开销,提高同步速度。
为了提高对比的速度,减少同步过程的时间开销,本发明实施例文件同步方法提供了一种将当前客户端文件列表快照转换为对应的第一树形结构的方法,可以包括:
将当前客户端文件列表快照的根目录,作为第一树形结构的根节点,将当前客户端文件列表快照的根目录的第n级子目录,作为第一树形结构的根节点的第n级子节点,将当前客户端文件列表快照的根目录的第n级子目录的目录文件,作为第一树形结构的根节点的第n级子节点的叶子节点,得到第一树形结构。
其中,当前客户端文件列表快照的根目录的第n级子目录至少为一个,第一树形结构的第n级子节点至少为一个,n为大于1的自然数;例如,表1所示的当前客户端文件列表开招的根目录的第一级子目录包括目录A、目录B、目录C,第二级子目录包括目录A1、目录C1。
其中,目录文件为文件目录中的单一文件。
在一个计算机系统中,可以有成千上万个文件,为了便于对文件进行存取和管理,计算机系统可以建立文件的索引,即文件名和文件物理位置之间的映射关系,这种文件的索引称为文件目录。
例如,在将表1所示当前客户端文件列表快照,转换为如图4a所示的第一树形结构时,可以将根目录Root作为根节点Root,将根目录Root的第一级子目录A作为根节点Root的第一级子节点A、将根目录Root的第一级子目录B作为根节点Root的第一级子节点B、将根目录Root的第一级子目录C作为根节点Root的第一级子节点C。
将根目录Root的第二级子目录A1作为根节点Root的第二级子节点A1,将根目录Root的第二级子目录C1作为根节点Root的第二级子节点C1。
将根目录Root的第三级子目录A11作为根节点Root的第三级子节点A11,将根目录Root的第三级子目录A12作为根节点Root的第三级子节点A12,将根目录Root的第三级子目录C11作为根节点Root的第三级子节点C11。得到如图4a所示的第一树形结构示意图。
本发明实施例文件同步方法还提供了一种将上一次同步完成时的文件列表快照转换为对应的第二树形结构的方法,可以包括:
将上一次同步完成时的文件列表快照的根目录,作为第二树形结构的根节点,将上一次同步完成时的文件列表快照的根目录的第m级子目录,作为第二树形结构的根节点的第m级子节点,将上一次同步完成时的文件列表快照的根目录的第m级子目录的目录文件,作为第二树形结构的根节点的第m级子节点的叶子节点,得到第二树形结构。
其中,上一次同步完成时的文件列表快照的根目录的第m级子目录至少为一个,第二树形结构的第m级子节点至少包括一个子节点,m为大于1的自然数。
例如,如图4b所示,为本发明实施例的一种文件同步方法的第二树形结构示意图,在图4b中,Root为根节点,节点A、节点B、节点C分别为根节点Root的第一级子节点,节点C1为根节点Root的第二级子节点或者节点C的第一级子节点,节点C11为根节点Root的第三级子节点或者根节点Root的叶子节点。
需要说明的是,本步骤的转换过程与将当前文件列表快照转换为第一树形结构的转换过程相同或相似,可以相互参照,这里不再赘述。
本发明实施例文件同步方法还提供了一种将当前服务器文件列表快照转换为对应的第三树形结构的方法,可以包括:
将当前服务器文件列表快照的根目录,作为第三树形结构的根节点,将当前服务器文件列表快照的根目录的第k级子目录,作为第三树形结构的根节点的第k级子节点,将当前服务器文件列表快照的根目录的第k级子目录的目录文件,作为第三树形结构的根节点的第k级子节点的叶子节点,得到第三树形结构,其中。
当前服务器文件列表快照的根目录的第k级子目录至少为一个,第三树形结构的第k级子节点至少包括一个子节点,k为大于1的自然数。
例如,如图4c所示,为本发明实施例的一种文件同步方法的第三树形结构示意图,在图4c中,Root为根节点,节点A、节点B、节点C分别为根节点Root的第一级子节点,节点C1为根节点Root的第二级子节点或者根节点Root的叶子节点。
需要说明的是,本步骤的转换过程与将当前文件列表快照转换为第一树形结构的转换过程相同或相似,可以相互参照,这里不再赘述。
应用本发明实施例的文件同步方法的设备通过执行上述步骤,可以实现实时、灵活的转换,提高转换过程的灵活性。
具体的,S303,对第一树形结构、第二树形结构、第三树形结构进行对比,确定待同步文件的文件信息和待同步文件的文件信息对应的更新操作,可以包括:
S3031,对比第一树形结构、第二树形结构,确定客户端文件变化列表。
在一些示例中,客户端文件变化列表可以包括:客户端文件新增列表、客户端文件删除列表、客户端文件修改列表。客户端文件新增列表中包含客户端新增的文件和/或文件夹,客户端文件删除列表中包含客户端删除的文件和/或文件夹,客户端文件修改列表包含客户端修改的文件和/或文件夹。
例如,假设第一树形结构为Local Tree,第二树形结构为Last Tree。其中,LocalTree为当前客户端文件列表快照转换后,得到的当前客户端文件列表树结构,Last Tree为上一次同步完成时的文件列表快照转换后,得到的上一次同步完成时的文件列表树结构。
则在Local Tree中存在而在Last Tree中不存在的文件和/或文件夹,是客户端新增的文件和/或文件夹,在Last Tree中存在而在Local Tree中不存在的文件和/或文件夹,是本地删除的文件和/或文件夹,在Local Tree和Last Tree都存在、但是大小不同或修改时间不同的文件和/或文件夹,是客户端修改的文件和/或文件夹。
通过将第一树形结构与第二树形结构进行对比,可以确定当前客户端文件与上一次同步完成时的文件的变化情况,即,客户端文件相比于上一次同步完成时,增加的文件、删除的文件以及修改的文件。
S3032,对比第二树形结构、第三树形结构,确定服务器文件变化列表。
在一些示例中,服务器文件变化列表可以包括:服务器文件新增列表、服务器文件删除列表、服务器文件修改列表。服务器文件新增列表中包含服务器新增的文件和/或文件夹,服务器文件删除列表中包含服务器删除的文件和/或文件夹,服务器文件修改列表包含服务器修改的文件和/或文件夹。
具体的,文件信息还可以包括文件版本号,因此,对比第二树形结构、第三树形结构,确定服务器文件变化列表,可以包括:
对比第二树形结构中文件信息的版本号与第三树形结构中文件信息的版本号,确定服务器文件变化列表。
在一些示例中,该文件信息的版本号可以是一个整型数值,当该文件的文件信息发生变化时,则可以生成一个版本号,以便与和变化之前的版本号进行区分。
通过使用文件信息的版本号进行对比,可以减少对比的复杂度,提高对比速度,降低对比过程的时间开销。
例如,假设第二树形结构为Last Tree,第三树形结构为Remote Tree,则在RemoteTree中存在而在Last Tree中不存在的文件和/或文件夹,是服务器新增的文件和/或文件夹,在Last Tree中存在而在Remote Tree中不存在的文件/文件夹是服务器删除的文件和/或文件夹,在Remote Tree和Last Tree都存在、但是大小不同或修改时间不同的文件和/或文件夹,是服务器修改的文件和/或文件夹。
其中,Last Tree为上一次同步完成时的文件列表快照转换后,得到的上一次同步完成时的文件列表树结构,Remote Tree为当前服务器文件列表快照转换后,得到的当前服务器文件列表树结构。
通过将第二树形结构与第三树形结构进行对比,可以确定服务器文件与上一次同步完成时的文件的变化情况,即,服务器文件相比于上一次同步完成时,增加的文件、删除的文件以及修改的文件。
S3033,对比客户端文件变化列表和服务器文件变化列表,确定待同步文件的文件信息和待同步文件的文件信息对应的更新操作。
在通过上述步骤得到客户端文件变化列表和服务器文件变化列表后,可以将客户端文件变化列表和服务器文件变化列表进行对比,确定客户端文件变化列表中的文件与服务器文件变化列表中的文件的差异,从而可以确定待同步文件、待同步文件的文件信息以及,与待同步文件的文件信息对应的更新操作。
例如,假设文件X是客户端新增的文件,文件X的文件信息保存在客户端文件变化列表的新增列表中,文件X的文件信息在服务器文件变化列表中不存在,则通过上述步骤C,可以将文件X的更新操作确定为上传操作;
假设,文件Y是服务器新增的文件,文件Y的文件信息保存在服务器文件变化列表的新增列表中,文件Y的文件信息在客户端文件变化列表中不存在,则通过上述步骤C,可以将文件Y的更新操作确定为下载操作。
通过本步骤,可以在确定待同步文件的文件信息和待同步文件的文件信息对应的更新操作时,可以防止同时对比第一树形结构、第二树形结构以及第三树形结构造成应用本发明实施例的文件同步方法的设备的负载压力过大,可以降低该设备的负载压力,进一步降低同步过程中的时间开销。
在S3031,对比第一树形结构、第二树形结构,确定客户端文件变化列表时,本发明实施例的文件同步方法提供了一种可能的实现方式,可以包括:
S30311,获取第一树形结构的根节点的第i级子节点的文件信息,与第二树形结构的第i级子节点的文件信息进行对比,确定第一树形结构的根节点的第i级子节点中发生改变的文件,并将第i级子节点中发生改变的文件的文件信息保存到客户端文件变化列表。
其中,i为大于1且小于或等于n和m的自然数。
例如,通过本步骤对比图4a所示的第一树形结构和图4b所示的第二树形结构。第一树形结构的根节点和第二树形结构的根节点都为Root,假设,将第一树形结构的根节点的第二级子节点A1和第二树形结构的根节点的第二级子节点进行对比。可以首先获取该第一树形结构的根节点的第二级子节点A1的文件信息,然后可以在第二树形结构的根节点的第二级子节点中,查找是否存在与该第二级子节点A1的文件信息相同的文件。经过对比,第二树形结构的第二级子节点中,不存在与第一树形结构的第二级子节点A1的文件信息相同的文件,则可以将该第一树形结构的第二级子节点A1的文件信息,保存到客户端文件变化列表中。
S30312,获取第一树形结构的根节点的第i级子节点的叶子节点的文件信息,与第二树形结构的第i级子节点的叶子节点的文件信息进行对比,确定第一树形结构的根节点的第i级子节点的叶子节点中发生改变的文件,并将第i级子节点的叶子节点中发生改变的文件的文件信息,保存到客户端文件变化列表。
假设,将第一树形结构的第二级子节点的叶子节点A11与第二树形结构的第二级子节点的叶子节点进行对比。可以首先获取该第一树形结构的第二级子节点的叶子节点A11的文件信息,然后在第二树形结构的第二级子节点的叶子节点中,查找与叶子节点A11的文件信息相同的文件。经过对比,由于叶子节点A11的父节点为第一树形结构的第二级子节点A1,第二树形结构的第二级子节点中不存在与第一树形结构的第二级子节点A1的文件信息相同的文件。
因此,第二树形结构的第二级子节点的叶子节点中,不存在与第一树形结构的第二级子节点的叶子节点A11的文件信息相同的文件。可以将第一树形结构的第二级子节点的叶子节点A11的文件信息,保存到客户端文件变化列表中。
S30313,遍历第一树形结构,得到第一树形结构中所有子节点和叶子节点中发生改变的文件的文件信息,确定客户端文件变化列表。
具体的,将第一树形结构中根节点的每级子节点,与第二树形结构中根节点的每级子节点进行对比,将第一树形结构中根节点的每级叶子节点,与每级叶子节点每级叶子节点进行对比,可以得到第一树形结构中所有子节点和叶子节点中发生改变的文件的文件信息,从而可以确定客户端文件变化列表。
例如,可以将图4a所示的第一树形结构中根节点的每级子节点,与图4b所示的第二树形结构中根节点的每级子节点进行对比,将图4a所示的第一树形结构中根节点的每级叶子节点,与与图4b所示的第二树形结构中根节点的每级叶子节点进行对比,确定图4a所示的第一树形结构的所有子节点和叶子节点中发生改变的文件的文件信息,如表5所示,为对比后第一树形结构中发生改变的文件的文件信息表,在表5中,发生改变的文件的文件信息为:文件名为A1的文件以及对应的文件类型、文件路径、文件修改时间,文件名为A11的文件以及对应的文件类型、文件路径、文件修改时间,文件名为A12的文件以及对应的文件类型、文件路径、文件修改时间。
表5对比后第一树形结构中发生改变的文件的文件信息表
文件名 | 文件类型 | 文件路径 | 文件修改时间 |
A1 | 文件夹 | Root\A | 20170510 |
A11 | .doc | Root\A\A1 | 20170510 |
A12 | .xls | Root\A\A1 | 20170417 |
需要说明的是,上述的举例是对树形结构中的一个节点的对比进行说明的。
下面对第一树形结构和第二树形结构完整的对比过程进行说明,如图5a所示,为本发明实施例的一种文件同步方法的第一树形结构与第二树形结构对比的第一种流程图,包括:
S501,从Local Tree中读取一条数据。
其中,该数据为Local Tree中根节点的任一级子节点或者任一叶子节点。
S502,判断该数据是否为结尾数据且已进行对比,如果否,则执行步骤S503,如果是,则结束对比。
其中,这里的结尾数据可以是该Local Tree中的最后一个叶子节点。
S503,判断在Last Tree中查找是否存在与该数据文件名相同的数据,如果存在则执行步骤S504,如果不存在,则执行步骤S506,添加该数据到本地文件新增列表。
S504,判断Local Tree中的该数据与Last Tree中的该数据的文件类型是否相同,如果相同,则执行步骤S505,如果不同,则执行步骤S506,添加该数据到本地文件新增列表。
S505,判断Local Tree中的该数据与Last Tree中的该数据的大小或者修改时间是否相同,如果相同,则执行步骤S501,从Local Tree中读取一条数据,如果不同,则执行步骤S507,添加该数据到本地文件修改列表。
S506,添加该数据到本地文件新增列表,在添加完成后,则执行步骤S501,从LocalTree中读取一条数据。
S507,添加该数据到本地文件修改列表,在添加完成后,则执行步骤S501,从LocalTree中读取一条数据。
在执行上述步骤时,可以从Local Tree根节点开始,依次遍历根节点的每级的子节点,直至Local Tree的最后一个叶子节点。也可以在遍历时,随机获取Local Tree的根节点任一级的子节点或者叶子节点。
本发明实施例还提供了一种对第一树形结构和第二树形结构进行对比的方法,如图5b所示,本发明实施例的一种文件同步方法的第一树形结构与第二树形结构对比的第二种流程图,可以包括:
S511,从Last Tree中读取一条数据。
S512,判断该数据是否为结尾数据且已进行对比,如果否,则执行步骤S513,如果是,则结束对比。
S513,判断在Local Tree中查找是否存在与该数据文件名相同的数据,如果存在则执行步骤S514,如果不存在,则执行步骤S515,添加该数据到本地文件删除列表。
S514,判断Last Tree中的该数据与Local Tree中的该数据的文件类型是否相同,如果相同,则执行步骤S511,如果不同,则执行步骤S515,添加该数据到本地文件删除列表。
S515,添加该数据到本地文件删除列表,在添加完成后,则执行步骤S511,从LastTree中读取一条数据。
本步骤的对比过程与图5a所示的第一种实施方式的流程图中的对比过程相似,可以相互参照。
具体的,在对第一结构树与第二结构树进行对比时,可以将上述两种对比方法相互结合进行对比。
在通过上述方法得到本地文件新增列表、本地文件修改列表和本地文件删除列表后,在执行更新操作时,可以对本地文件新增列表中的每个文件或文件夹执行对应的上传任务,将该本地文件新增列表中文件或文件夹上传到服务器。
对本地文件修改列表中的每个文件或文件夹执行对应的修改任务,将该本地文件修改列表中的文件或文件夹上传到服务器,并删除服务器中保存的与该本地文件修改列表中的文件对应的文件,删除服务器中保存的与该本地文件修改列表中的文件夹对应的文件夹。
对本地文件删除列表中的每个文件或文件夹执行对应的删除任务,从服务器删除该文件或文件夹。
在S3032,对比第二树形结构、第三树形结构,确定服务器文件变化列表时,本发明实施例的文件同步方法提供了一种可能的实现方式,可以包括:
S30321,获取第三树形结构的根节点的第j级子节点的文件信息,与第二树形结构的第j级子节点的文件信息进行对比,确定第三树形结构的根节点的第j级子节点中发生改变的文件,并将第j级子节点中发生改变的文件的文件信息保存到服务器文件变化列表。
其中,j为大于1且小于或等于m和k的自然数。
S30322,获取第三树形结构的根节点的第j级子节点的叶子节点的文件信息,与第二树形结构的第j级子节点的叶子节点的文件信息进行对比,确定第三树形结构的根节点的第j级子节点的叶子节点中发生改变的文件,并将第j级子节点的叶子节点中发生改变的文件的文件信息,保存到服务器文件变化列表;
S30323,遍历第三树形结构,得到第三树形结构中所有子节点和叶子节点中发生改变的文件的文件信息,确定服务器文件变化列表。
为了更清楚的说明本步骤对比第二树形结构、第三树形结构,确定服务器文件变化列表的过程,下面结合图5c所示和图5d进行说明,如图5c所示,为本发明实施例的一种文件同步方法的第三树形结构与第二树形结构对比的第一种流程图,可以包括:
S521,从Remote Tree中读取一条数据。
其中,该数据为Remote Tree中根节点的任一级子节点或者任一叶子节点。
S522,判断该数据是否为结尾数据且已进行对比,如果否,则执行步骤S503,如果是,则结束对比。
其中,这里的结尾数据可以是该Remote Tree中的最后一个叶子节点。
S523,判断在Last Tree中查找是否存在与该数据文件名相同的数据,如果存在则执行步骤S524,如果不存在,则执行步骤S526,添加该数据到本地文件新增列表。
S524,判断Remote Tree中的该数据与Last Tree中的该数据的文件类型是否相同,如果相同,则执行步骤S525,如果不同,则执行步骤S526,添加该数据到服务器文件新增列表。
S525,判断Remote Tree中的该数据与Last Tree中的该数据的版本号是否相同,如果相同,则执行步骤S521,从Remote Tree中读取一条数据,如果不同,则执行步骤S527,添加该数据到服务器文件修改列表。
S526,添加该数据到服务器文件新增列表,在添加完成后,则执行步骤S521,从Remote Tree中读取一条数据。
S527,添加该数据到服务器文件修改列表,在添加完成后,则执行步骤S521,从Remote Tree中读取一条数据。
在执行上述步骤时,可以从Remote Tree根节点开始,依次遍历根节点的每级的子节点,直至Remote Tree的最后一个叶子节点。也可以在遍历时,随机获取Remote Tree的根节点任一级的子节点或者叶子节点。
本发明实施例还提供了一种对第三树形结构和第二树形结构进行对比的方法,如图5d所示,本发明实施例的一种文件同步方法的第三树形结构与第二树形结构对比的第二种流程图,可以包括:
S531,从Last Tree中读取一条数据。
S532,判断该数据是否为结尾数据且已进行对比,如果否,则执行步骤S533,如果是,则结束对比。
S533,判断在Remote Tree中查找是否存在与该数据文件名相同的数据,如果存在则执行步骤S534,如果不存在,则执行步骤S535,添加该数据到服务器文件删除列表。
S534,判断Last Tree中的该数据与Remote Tree中的该数据的文件类型是否相同,如果相同,则执行步骤S531,如果不同,则执行步骤S535,添加该数据到服务器文件删除列表。
S535,添加该数据到服务器文件删除列表,在添加完成后,则执行步骤S531,从Last Tree中读取一条数据。
在通过上述方法得到服务器文件新增列表、服务器文件修改列表和服务器文件删除列表后,在执行更新操作时,可以对服务器文件新增列表中的每个文件或文件夹执行对应的下载任务,将该服务器文件新增列表中文件或文件夹下载到客户端。
对服务器文件修改列表中的每个文件或文件夹执行对应的修改任务,将该服务器文件修改列表中的文件或文件夹下载到客户端,并删除客户端中保存的与该服务器文件修改列表中的文件对应的文件,删除客户端中保存的与该服务器文件修改列表中的文件夹对应的文件夹。
对服务器文件删除列表中的每个文件或文件夹执行对应的删除任务,从客户端删除该文件或文件夹。
由于本发明实施例的文件同步方法,可以应用于如图2所示的多个客户端与服务器的系统中,为了降低服务器的负载压力,在有多个客户端需要和服务器进行文件同步时,本发明实施例还提供了一种文件同步方法,在对待同步文件执行与待同步文件的文件信息对应的更新操作之前,该方法还可以包括:
当接收到服务器发送的暂停同步的指令时,暂停执行与待同步文件的文件信息对应的更新操作。
在一些示例中,当多个客户端与服务器进行文件同步时,该服务器可以选择其中一个客户端进行文件同步,同时生成并发送暂停同步的指令给其他客户端,其他客户端在接收到服务器发送的暂停同步的指令时,暂停执行与待同步文件的文件信息对应的更新操作。
其中,该暂停指令中可以包含暂停时间。
在该暂停时间结束后,客户端设备可以重新发送同步请求给服务器,请求执行执行与待同步文件的文件信息对应的更新操作。
相应于上述方法实施例,本发明实施例还提供了一种文件同步装置,如图6所示,为本发明实施例的一种文件同步装置的结构示意图,该装置可以包括:
获取模块601,用于分别获取当前客户端文件列表快照、上一次同步完成时的文件列表快照、当前服务器文件列表快照,其中,当前客户端文件列表快照包含当前客户端文件的文件信息,上一次同步完成时的文件列表快照包含上一次本地与服务器完成同步时的文件信息,当前服务器文件列表快照包含服务器文件的文件信息,文件信息包括文件名、文件类型、文件修改时间及文件路径;
转换模块602,用于将当前客户端文件列表快照转换为对应的第一树形结构,将上一次同步完成时的文件列表快照转换为对应的第二树形结构,将当前服务器文件列表快照转换为对应的第三树形结构;
对比模块603,用于对第一树形结构、第二树形结构、第三树形结构进行对比,确定待同步文件的文件信息和待同步文件的文件信息对应的更新操作;
更新模块604,用于对待同步文件执行与待同步文件的文件信息对应的更新操作。
本发明实施例提供的一种文件同步装置,通过将当前客户端文件列表快照转换为对应的第一树形结构,将上一次同步完成时的文件列表快照转换为对应的第二树形结构,将当前服务器文件列表快照转换为对应的第三树形结构,能够将当前客户端文件列表快照、上一次同步完成时的文件列表快照以及当前服务器文件列表快照之间的对比,转换为第一树形结构、第二树形结构以及第三树形结构之间的对比。然后对第一树形结构、第二树形结构以及第三树形结构进行对比,能够充分利用树形结构可以进行快速对比的特点,减少确定待同步文件的文件信息和待同步文件的文件信息对应的更新操作的时间开销,最后对待同步文件执行与待同步文件的文件信息对应的更新操作,从而可以降低同步过程的时间开销,提高同步速度。
具体的,转换模块602,包括:
第一树形结构转换子模块,用于将当前客户端文件列表快照的根目录,作为第一树形结构的根节点,将当前客户端文件列表快照的根目录的第n级子目录,作为第一树形结构的根节点的第n级子节点,将当前客户端文件列表快照的根目录的第n级子目录的目录文件,作为第一树形结构的根节点的第n级子节点的叶子节点,得到第一树形结构,其中,当前客户端文件列表快照的根目录的第n级子目录至少为一个,第一树形结构的第n级子节点至少为一个,n为大于1的自然数;
第二树形结构转换子模块,用于将上一次同步完成时的文件列表快照的根目录,作为第二树形结构的根节点,将上一次同步完成时的文件列表快照的根目录的第m级子目录,作为第二树形结构的根节点的第m级子节点,将上一次同步完成时的文件列表快照的根目录的第m级子目录的目录文件,作为第二树形结构的根节点的第m级子节点的叶子节点,得到第二树形结构,其中,上一次同步完成时的文件列表快照的根目录的第m级子目录至少为一个,第二树形结构的第m级子节点至少包括一个子节点,m为大于1的自然数;
第三树形结构转换子模块,用于将当前服务器文件列表快照的根目录,作为第三树形结构的根节点,将当前服务器文件列表快照的根目录的第k级子目录,作为第三树形结构的根节点的第k级子节点,将当前服务器文件列表快照的根目录的第k级子目录的目录文件,作为第三树形结构的根节点的第k级子节点的叶子节点,得到第三树形结构,其中,当前服务器文件列表快照的根目录的第k级子目录至少为一个,第三树形结构的第k级子节点至少包括一个子节点,k为大于1的自然数。
具体的,对比模块603,包括:
客户端文件变化对比子模块,用于对比第一树形结构、第二树形结构,确定客户端文件变化列表;
服务器文件变化对比子模块,用于对比第二树形结构、第三树形结构,确定服务器文件变化列表;
待同步文件确定子模块,用于对比客户端文件变化列表和服务器文件变化列表,确定待同步文件的文件信息和待同步文件的文件信息对应的更新操作。
具体的,客户端文件变化对比子模块,具体用于:
获取第一树形结构的根节点的第i级子节点的文件信息,与第二树形结构的第i级子节点的文件信息进行对比,确定第一树形结构的根节点的第i级子节点中发生改变的文件,并将第i级子节点中发生改变的文件的文件信息保存到客户端文件变化列表,其中,i为大于1且小于或等于n和m的自然数;
获取第一树形结构的根节点的第i级子节点的叶子节点的文件信息,与第二树形结构的第i级子节点的叶子节点的文件信息进行对比,确定第一树形结构的根节点的第i级子节点的叶子节点中发生改变的文件,并将第i级子节点的叶子节点中发生改变的文件的文件信息,保存到客户端文件变化列表;
遍历第一树形结构,得到第一树形结构中所有子节点和叶子节点中发生改变的文件的文件信息,确定客户端文件变化列表;
服务器文件变化对比子模块,具体用于:
获取第三树形结构的根节点的第j级子节点的文件信息,与第二树形结构的第j级子节点的文件信息进行对比,确定第三树形结构的根节点的第j级子节点中发生改变的文件,并将第j级子节点中发生改变的文件的文件信息保存到服务器文件变化列表,其中,j为大于1且小于或等于m和k的自然数;
获取第三树形结构的根节点的第j级子节点的叶子节点的文件信息,与第二树形结构的第j级子节点的叶子节点的文件信息进行对比,确定第三树形结构的根节点的第j级子节点的叶子节点中发生改变的文件,并将第j级子节点的叶子节点中发生改变的文件的文件信息,保存到服务器文件变化列表;
遍历第三树形结构,得到第三树形结构中所有子节点和叶子节点中发生改变的文件的文件信息,确定服务器文件变化列表。
具体的,文件信息还包括文件版本号,服务器文件变化对比子模块,还用于对比第二树形结构中文件信息的版本号与第三树形结构中文件信息的版本号,确定服务器文件变化列表。
具体的,本发明实施例的文件同步装置,还包括:
暂停模块,用于当接收到服务器发送的暂停同步的指令时,暂停执行与待同步文件的文件信息对应的更新操作。
具体的,更新操作包括:上传、下载、重命名或删除。
具体的,更新模块604,具体用于:
对待同步文件单向执行与待同步文件的文件信息对应的更新操作;或者
对待同步文件双向执行与待同步文件的文件信息对应的更新操作;或者
对待同步文件选择性执行与待同步文件的文件信息对应的更新操作。
本发明实施例还提供了一种电子设备,如图7所示,为本发明实施例的一种文件同步方法应用于电子设备的结构示意图,该电子设备可以包括处理器701和机器可读存储介质702,机器可读存储介质702存储有能够被处理器701执行的机器可执行指令,处理器701被机器可执行指令促使:实现以下步骤:
步骤A,分别获取当前客户端文件列表快照、上一次同步完成时的文件列表快照、当前服务器文件列表快照,其中,当前客户端文件列表快照包含当前客户端文件的文件信息,上一次同步完成时的文件列表快照包含上一次本地与服务器完成同步时的文件信息,当前服务器文件列表快照包含服务器文件的文件信息,文件信息包括文件名、文件类型、文件修改时间及文件路径;
步骤B,将当前客户端文件列表快照转换为对应的第一树形结构,将上一次同步完成时的文件列表快照转换为对应的第二树形结构,将当前服务器文件列表快照转换为对应的第三树形结构。
步骤C,对第一树形结构、第二树形结构、第三树形结构进行对比,确定待同步文件的文件信息和待同步文件的文件信息对应的更新操作。
步骤D,对待同步文件执行与待同步文件的文件信息对应的更新操作。
机器可读存储介质702可以包括随机存取存储器(Random Access Memory,RAM),也可以包括非易失性存储器(Non-Volatile Memory,NVM),例如至少一个磁盘存储器。可选的,存储器还可以是至少一个位于远离前述处理器的存储装置。
上述的处理器701可以是通用处理器,包括中央处理器(Central ProcessingUnit,CPU)、网络处理器(Network Processor,NP)等;还可以是数字信号处理器(DigitalSignal Processing,DSP)、专用集成电路(Application Specific Integrated Circuit,ASIC)、现场可编程门阵列(Field-Programmable Gate Array,FPGA)或者其他可编程逻辑器件、分立门或者晶体管逻辑器件、分立硬件组件。
本发明实施例提供的一种文件同步电子设备,通过将当前客户端文件列表快照转换为对应的第一树形结构,将上一次同步完成时的文件列表快照转换为对应的第二树形结构,将当前服务器文件列表快照转换为对应的第三树形结构,能够将当前客户端文件列表快照、上一次同步完成时的文件列表快照以及当前服务器文件列表快照之间的对比,转换为第一树形结构、第二树形结构以及第三树形结构之间的对比。然后对第一树形结构、第二树形结构以及第三树形结构进行对比,能够充分利用树形结构可以进行快速对比的特点,减少确定待同步文件的文件信息和待同步文件的文件信息对应的更新操作的时间开销,最后对待同步文件执行与待同步文件的文件信息对应的更新操作,从而可以降低同步过程的时间开销,提高同步速度。
本发明实施例还提供了一种计算机可读存储介质,该计算机可读存储介质内存储有计算机程序,计算机程序被处理器执行时实现如下步骤:
步骤A,分别获取当前客户端文件列表快照、上一次同步完成时的文件列表快照、当前服务器文件列表快照,其中,当前客户端文件列表快照包含当前客户端文件的文件信息,上一次同步完成时的文件列表快照包含上一次本地与服务器完成同步时的文件信息,当前服务器文件列表快照包含服务器文件的文件信息,文件信息包括文件名、文件类型、文件修改时间及文件路径;
步骤B,将当前客户端文件列表快照转换为对应的第一树形结构,将上一次同步完成时的文件列表快照转换为对应的第二树形结构,将当前服务器文件列表快照转换为对应的第三树形结构;
步骤C,对第一树形结构、第二树形结构、第三树形结构进行对比,确定待同步文件的文件信息和待同步文件的文件信息对应的更新操作;
步骤D,对待同步文件执行与待同步文件的文件信息对应的更新操作。
本发明实施例还提供的一种计算机可读存储介质,通过将当前客户端文件列表快照转换为对应的第一树形结构,将上一次同步完成时的文件列表快照转换为对应的第二树形结构,将当前服务器文件列表快照转换为对应的第三树形结构,能够将当前客户端文件列表快照、上一次同步完成时的文件列表快照以及当前服务器文件列表快照之间的对比,转换为第一树形结构、第二树形结构以及第三树形结构之间的对比。然后对第一树形结构、第二树形结构以及第三树形结构进行对比,能够充分利用树形结构可以进行快速对比的特点,减少确定待同步文件的文件信息和待同步文件的文件信息对应的更新操作的时间开销,最后对待同步文件执行与待同步文件的文件信息对应的更新操作,从而可以降低同步过程的时间开销,提高同步速度。
本发明实施例还提供了一种包含指令的计算机程序产品,当其在计算机上运行时,使得计算机执行以下步骤:
步骤A,分别获取当前客户端文件列表快照、上一次同步完成时的文件列表快照、当前服务器文件列表快照,其中,当前客户端文件列表快照包含当前客户端文件的文件信息,上一次同步完成时的文件列表快照包含上一次本地与服务器完成同步时的文件信息,当前服务器文件列表快照包含服务器文件的文件信息,文件信息包括文件名、文件类型、文件修改时间及文件路径;
步骤B,将当前客户端文件列表快照转换为对应的第一树形结构,将上一次同步完成时的文件列表快照转换为对应的第二树形结构,将当前服务器文件列表快照转换为对应的第三树形结构;
步骤C,对第一树形结构、第二树形结构、第三树形结构进行对比,确定待同步文件的文件信息和待同步文件的文件信息对应的更新操作;
步骤D,对待同步文件执行与待同步文件的文件信息对应的更新操作。
本发明实施例还提供的一种包含指令的计算机程序产品,通过将当前客户端文件列表快照转换为对应的第一树形结构,将上一次同步完成时的文件列表快照转换为对应的第二树形结构,将当前服务器文件列表快照转换为对应的第三树形结构,能够将当前客户端文件列表快照、上一次同步完成时的文件列表快照以及当前服务器文件列表快照之间的对比,转换为第一树形结构、第二树形结构以及第三树形结构之间的对比。然后对第一树形结构、第二树形结构以及第三树形结构进行对比,能够充分利用树形结构可以进行快速对比的特点,减少确定待同步文件的文件信息和待同步文件的文件信息对应的更新操作的时间开销,最后对待同步文件执行与待同步文件的文件信息对应的更新操作,从而可以降低同步过程的时间开销,提高同步速度。
本发明实施例还提供了一种计算机程序,当其在计算机上运行时,使得计算机执行以下步骤:
步骤A,分别获取当前客户端文件列表快照、上一次同步完成时的文件列表快照、当前服务器文件列表快照,其中,当前客户端文件列表快照包含当前客户端文件的文件信息,上一次同步完成时的文件列表快照包含上一次本地与服务器完成同步时的文件信息,当前服务器文件列表快照包含服务器文件的文件信息,文件信息包括文件名、文件类型、文件修改时间及文件路径;
步骤B,将当前客户端文件列表快照转换为对应的第一树形结构,将上一次同步完成时的文件列表快照转换为对应的第二树形结构,将当前服务器文件列表快照转换为对应的第三树形结构;
步骤C,对第一树形结构、第二树形结构、第三树形结构进行对比,确定待同步文件的文件信息和待同步文件的文件信息对应的更新操作;
步骤D,对待同步文件执行与待同步文件的文件信息对应的更新操作。
本发明实施例还提供的一种计算机程序,通过将当前客户端文件列表快照转换为对应的第一树形结构,将上一次同步完成时的文件列表快照转换为对应的第二树形结构,将当前服务器文件列表快照转换为对应的第三树形结构,能够将当前客户端文件列表快照、上一次同步完成时的文件列表快照以及当前服务器文件列表快照之间的对比,转换为第一树形结构、第二树形结构以及第三树形结构之间的对比。然后对第一树形结构、第二树形结构以及第三树形结构进行对比,能够充分利用树形结构可以进行快速对比的特点,减少确定待同步文件的文件信息和待同步文件的文件信息对应的更新操作的时间开销,最后对待同步文件执行与待同步文件的文件信息对应的更新操作,从而可以降低同步过程的时间开销,提高同步速度。
需要说明的是,在本文中,诸如第一和第二等之类的关系术语仅仅用来将一个实体或者操作与另一个实体或操作区分开来,而不一定要求或者暗示这些实体或操作之间存在任何这种实际的关系或者顺序。而且,术语“包括”、“包含”或者其任何其他变体意在涵盖非排他性的包含,从而使得包括一系列要素的过程、方法、物品或者设备不仅包括那些要素,而且还包括没有明确列出的其他要素,或者是还包括为这种过程、方法、物品或者设备所固有的要素。在没有更多限制的情况下,由语句“包括一个……”限定的要素,并不排除在包括所述要素的过程、方法、物品或者设备中还存在另外的相同要素。
本说明书中的各个实施例均采用相关的方式描述,各个实施例之间相同相似的部分互相参见即可,每个实施例重点说明的都是与其他实施例的不同之处。尤其,对于系统实施例而言,由于其基本相似于方法实施例,所以描述的比较简单,相关之处参见方法实施例的部分说明即可。
以上所述仅为本发明的较佳实施例而已,并非用于限定本发明的保护范围。凡在本发明的精神和原则之内所作的任何修改、等同替换、改进等,均包含在本发明的保护范围内。
Claims (16)
1.一种文件同步方法,其特征在于,所述方法包括:
分别获取当前客户端文件列表快照、上一次同步完成时的文件列表快照、当前服务器文件列表快照,其中,所述当前客户端文件列表快照包含当前客户端文件的文件信息,所述上一次同步完成时的文件列表快照包含上一次本地与服务器完成同步时的文件信息,所述当前服务器文件列表快照包含服务器文件的文件信息,所述文件信息包括文件名、文件类型、文件修改时间及文件路径;
将所述当前客户端文件列表快照转换为对应的第一树形结构,将所述上一次同步完成时的文件列表快照转换为对应的第二树形结构,将所述当前服务器文件列表快照转换为对应的第三树形结构;
对比所述第一树形结构、所述第二树形结构,确定客户端文件变化列表;对比所述第二树形结构、所述第三树形结构,确定服务器文件变化列表;对比所述客户端文件变化列表和所述服务器文件变化列表,确定待同步文件的文件信息和所述待同步文件的文件信息对应的更新操作;
对所述待同步文件执行与所述待同步文件的文件信息对应的更新操作。
2.根据权利要求1所述的方法,其特征在于,所述将所述当前客户端文件列表快照转换为对应的第一树形结构,包括:
将所述当前客户端文件列表快照的根目录,作为所述第一树形结构的根节点,将所述当前客户端文件列表快照的根目录的第n级子目录,作为所述第一树形结构的根节点的第n级子节点,将所述当前客户端文件列表快照的根目录的第n级子目录的目录文件,作为所述第一树形结构的根节点的第n级子节点的叶子节点,得到所述第一树形结构,其中,所述当前客户端文件列表快照的根目录的第n级子目录至少为一个,所述第一树形结构的第n级子节点至少为一个,所述n为大于1的自然数;
所述将所述上一次同步完成时的文件列表快照转换为对应的第二树形结构,包括:
将所述上一次同步完成时的文件列表快照的根目录,作为所述第二树形结构的根节点,将所述上一次同步完成时的文件列表快照的根目录的第m级子目录,作为所述第二树形结构的根节点的第m级子节点,将所述上一次同步完成时的文件列表快照的根目录的第m级子目录的目录文件,作为所述第二树形结构的根节点的第m级子节点的叶子节点,得到所述第二树形结构,其中,所述上一次同步完成时的文件列表快照的根目录的第m级子目录至少为一个,所述第二树形结构的第m级子节点至少包括一个子节点,所述m为大于1的自然数;
所述将所述当前服务器文件列表快照转换为对应的第三树形结构,包括:
将所述当前服务器文件列表快照的根目录,作为所述第三树形结构的根节点,将所述当前服务器文件列表快照的根目录的第k级子目录,作为所述第三树形结构的根节点的第k级子节点,将所述当前服务器文件列表快照的根目录的第k级子目录的目录文件,作为所述第三树形结构的根节点的第k级子节点的叶子节点,得到所述第三树形结构,其中,所述当前服务器文件列表快照的根目录的第k级子目录至少为一个,所述第三树形结构的第k级子节点至少包括一个子节点,所述k为大于1的自然数。
3.根据权利要求1所述的方法,其特征在于,所述对比所述第一树形结构、所述第二树形结构,确定客户端文件变化列表,包括:
获取所述第一树形结构的根节点的第i级子节点的文件信息,与所述第二树形结构的第i级子节点的文件信息进行对比,确定所述第一树形结构的根节点的第i级子节点中发生改变的文件,并将所述第i级子节点中发生改变的文件的文件信息保存到所述客户端文件变化列表,其中,所述i为大于1且小于或等于n和m的自然数;
获取所述第一树形结构的根节点的第i级子节点的叶子节点的文件信息,与所述第二树形结构的第i级子节点的叶子节点的文件信息进行对比,确定所述第一树形结构的根节点的第i级子节点的叶子节点中发生改变的文件,并将所述第i级子节点的叶子节点中发生改变的文件的文件信息,保存到所述客户端文件变化列表;
遍历所述第一树形结构,得到所述第一树形结构中所有子节点和叶子节点中发生改变的文件的文件信息,确定所述客户端文件变化列表;
所述对比所述第二树形结构、所述第三树形结构,确定服务器文件变化列表,包括:
获取所述第三树形结构的根节点的第j级子节点的文件信息,与所述第二树形结构的第j级子节点的文件信息进行对比,确定所述第三树形结构的根节点的第j级子节点中发生改变的文件,并将所述第j级子节点中发生改变的文件的文件信息保存到所述服务器文件变化列表,其中,所述j为大于1且小于或等于m和k的自然数;
获取所述第三树形结构的根节点的第j级子节点的叶子节点的文件信息,与所述第二树形结构的第j级子节点的叶子节点的文件信息进行对比,确定所述第三树形结构的根节点的第j级子节点的叶子节点中发生改变的文件,并将所述第j级子节点的叶子节点中发生改变的文件的文件信息,保存到所述服务器文件变化列表;
遍历所述第三树形结构,得到所述第三树形结构中所有子节点和叶子节点中发生改变的文件的文件信息,确定所述服务器文件变化列表。
4.根据权利要求1所述的方法,其特征在于,所述文件信息还包括文件版本号,所述对比所述第二树形结构、所述第三树形结构,确定服务器文件变化列表,包括:
对比所述第二树形结构中文件信息的版本号与所述第三树形结构中文件信息的版本号,确定服务器文件变化列表。
5.根据权利要求1~4任一项所述的方法,其特征在于,在对所述待同步文件执行与所述待同步文件的文件信息对应的更新操作之前,所述方法还包括:
当接收到所述服务器发送的暂停同步的指令时,暂停执行与所述待同步文件的文件信息对应的更新操作。
6.根据权利要求1~4任一项所述的方法,其特征在于,所述更新操作包括:上传、下载、重命名或删除。
7.根据权利要求1~4任一项所述的方法,其特征在于,所述对所述待同步文件执行与所述待同步文件的文件信息对应的更新操作,包括:
对所述待同步文件单向执行与所述待同步文件的文件信息对应的更新操作;或者
对所述待同步文件双向执行与所述待同步文件的文件信息对应的更新操作;或者
对所述待同步文件选择性执行与所述待同步文件的文件信息对应的更新操作。
8.一种文件同步装置,其特征在于,所述装置包括:
获取模块,用于分别获取当前客户端文件列表快照、上一次同步完成时的文件列表快照、当前服务器文件列表快照,其中,所述当前客户端文件列表快照包含当前客户端文件的文件信息,所述上一次同步完成时的文件列表快照包含上一次本地与服务器完成同步时的文件信息,所述当前服务器文件列表快照包含服务器文件的文件信息,所述文件信息包括文件名、文件类型、文件修改时间及文件路径;
转换模块,用于将所述当前客户端文件列表快照转换为对应的第一树形结构,将所述上一次同步完成时的文件列表快照转换为对应的第二树形结构,将所述当前服务器文件列表快照转换为对应的第三树形结构;
客户端文件变化对比子模块,用于对比所述第一树形结构、所述第二树形结构,确定客户端文件变化列表;
服务器文件变化对比子模块,用于对比所述第二树形结构、所述第三树形结构,确定服务器文件变化列表;
待同步文件确定子模块,用于对比所述客户端文件变化列表和所述服务器文件变化列表,确定所述待同步文件的文件信息和所述待同步文件的文件信息对应的更新操作;
更新模块,用于对所述待同步文件执行与所述待同步文件的文件信息对应的更新操作。
9.根据权利要求8所述的装置,其特征在于,所述转换模块,包括:
第一树形结构转换子模块,用于将所述当前客户端文件列表快照的根目录,作为所述第一树形结构的根节点,将所述当前客户端文件列表快照的根目录的第n级子目录,作为所述第一树形结构的根节点的第n级子节点,将所述当前客户端文件列表快照的根目录的第n级子目录的目录文件,作为所述第一树形结构的根节点的第n级子节点的叶子节点,得到所述第一树形结构,其中,所述当前客户端文件列表快照的根目录的第n级子目录至少为一个,所述第一树形结构的第n级子节点至少为一个,所述n为大于1的自然数;
第二树形结构转换子模块,用于将所述上一次同步完成时的文件列表快照的根目录,作为所述第二树形结构的根节点,将所述上一次同步完成时的文件列表快照的根目录的第m级子目录,作为所述第二树形结构的根节点的第m级子节点,将所述上一次同步完成时的文件列表快照的根目录的第m级子目录的目录文件,作为所述第二树形结构的根节点的第m级子节点的叶子节点,得到所述第二树形结构,其中,所述上一次同步完成时的文件列表快照的根目录的第m级子目录至少为一个,所述第二树形结构的第m级子节点至少包括一个子节点,所述m为大于1的自然数;
第三树形结构转换子模块,用于将所述当前服务器文件列表快照的根目录,作为所述第三树形结构的根节点,将所述当前服务器文件列表快照的根目录的第k级子目录,作为所述第三树形结构的根节点的第k级子节点,将所述当前服务器文件列表快照的根目录的第k级子目录的目录文件,作为所述第三树形结构的根节点的第k级子节点的叶子节点,得到所述第三树形结构,其中,所述当前服务器文件列表快照的根目录的第k级子目录至少为一个,所述第三树形结构的第k级子节点至少包括一个子节点,所述k为大于1的自然数。
10.根据权利要求8所述的装置,其特征在于,所述客户端文件变化对比子模块,具体用于:
获取所述第一树形结构的根节点的第i级子节点的文件信息,与所述第二树形结构的第i级子节点的文件信息进行对比,确定所述第一树形结构的根节点的第i级子节点中发生改变的文件,并将所述第i级子节点中发生改变的文件的文件信息保存到所述客户端文件变化列表,其中,所述i为大于1且小于或等于n和m的自然数;
获取所述第一树形结构的根节点的第i级子节点的叶子节点的文件信息,与所述第二树形结构的第i级子节点的叶子节点的文件信息进行对比,确定所述第一树形结构的根节点的第i级子节点的叶子节点中发生改变的文件,并将所述第i级子节点的叶子节点中发生改变的文件的文件信息,保存到所述客户端文件变化列表;
遍历所述第一树形结构,得到所述第一树形结构中所有子节点和叶子节点中发生改变的文件的文件信息,确定所述客户端文件变化列表;
所述服务器文件变化对比子模块,具体用于:
获取所述第三树形结构的根节点的第j级子节点的文件信息,与所述第二树形结构的第j级子节点的文件信息进行对比,确定所述第三树形结构的根节点的第j级子节点中发生改变的文件,并将所述第j级子节点中发生改变的文件的文件信息保存到所述服务器文件变化列表,其中,所述j为大于1且小于或等于m和k的自然数;
获取所述第三树形结构的根节点的第j级子节点的叶子节点的文件信息,与所述第二树形结构的第j级子节点的叶子节点的文件信息进行对比,确定所述第三树形结构的根节点的第j级子节点的叶子节点中发生改变的文件,并将所述第j级子节点的叶子节点中发生改变的文件的文件信息,保存到所述服务器文件变化列表;
遍历所述第三树形结构,得到所述第三树形结构中所有子节点和叶子节点中发生改变的文件的文件信息,确定所述服务器文件变化列表。
11.根据权利要求8所述的装置,其特征在于,所述文件信息还包括文件版本号,所述服务器文件变化对比子模块,还用于对比所述第二树形结构中文件信息的版本号与所述第三树形结构中文件信息的版本号,确定服务器文件变化列表。
12.根据权利要求8~11任一项所述的装置,其特征在于,所述装置还包括:
暂停模块,用于当接收到所述服务器发送的暂停同步的指令时,暂停执行与所述待同步文件的文件信息对应的更新操作。
13.根据权利要求8~11任一项所述的装置,其特征在于,所述更新操作包括:上传、下载、重命名或删除。
14.根据权利要求8~11任一项所述的装置,其特征在于,所述更新模块,具体用于:
对所述待同步文件单向执行与所述待同步文件的文件信息对应的更新操作;或者
对所述待同步文件双向执行与所述待同步文件的文件信息对应的更新操作;或者
对所述待同步文件选择性执行与所述待同步文件的文件信息对应的更新操作。
15.一种电子设备,其特征在于,包括处理器和机器可读存储介质,所述机器可读存储介质存储有能够被所述处理器执行的机器可执行指令,所述处理器被所述机器可执行指令促使:实现权利要求1~7任一所述的方法步骤。
16.一种计算机可读存储介质,其特征在于,所述计算机可读存储介质内存储有计算机程序,所述计算机程序被处理器执行时,实现权利要求1~7任一项所述的方法步骤。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201711377245.6A CN108573014B (zh) | 2017-12-19 | 2017-12-19 | 一种文件同步方法、装置、电子设备及可读存储介质 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201711377245.6A CN108573014B (zh) | 2017-12-19 | 2017-12-19 | 一种文件同步方法、装置、电子设备及可读存储介质 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN108573014A CN108573014A (zh) | 2018-09-25 |
CN108573014B true CN108573014B (zh) | 2021-05-28 |
Family
ID=63575737
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201711377245.6A Active CN108573014B (zh) | 2017-12-19 | 2017-12-19 | 一种文件同步方法、装置、电子设备及可读存储介质 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN108573014B (zh) |
Families Citing this family (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN109246245A (zh) * | 2018-10-31 | 2019-01-18 | 武汉新迪数字工程系统有限公司 | 实现文件同步的方法、服务器、系统及存储介质 |
CN109120651B (zh) * | 2018-11-07 | 2021-08-24 | 成都华栖云科技有限公司 | 一种改善教学网络文件传输流畅度的实现方法及系统 |
CN110362431B (zh) * | 2019-07-23 | 2022-07-05 | 中国工商银行股份有限公司 | 一种数据备份方法及装置 |
CN110377565A (zh) * | 2019-07-24 | 2019-10-25 | 东软集团股份有限公司 | 一种多媒体数据库的同步方法及车机 |
CN111274316B (zh) * | 2020-01-15 | 2023-08-25 | 北京明略软件系统有限公司 | 多级数据流转任务的执行方法及装置、电子设备、存储介质 |
CN113282540A (zh) * | 2021-06-04 | 2021-08-20 | 深圳大学 | 一种云对象存储同步方法、装置、计算机设备及存储介质 |
Citations (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US7788244B2 (en) * | 2007-07-31 | 2010-08-31 | Hewlett-Packard Development Company, L.P. | Method and system for copying a snapshot tree |
CN102404338A (zh) * | 2011-12-13 | 2012-04-04 | 华为技术有限公司 | 一种文件同步方法和装置 |
CN102929745A (zh) * | 2012-09-26 | 2013-02-13 | 东软集团股份有限公司 | 一种虚拟设备状态数据的更新方法及装置 |
CN103268270A (zh) * | 2013-05-10 | 2013-08-28 | 曙光信息产业(北京)有限公司 | 快照的管理方法和装置 |
CN103440173A (zh) * | 2013-08-23 | 2013-12-11 | 华为技术有限公司 | 一种多核处理器的调度方法和相关装置 |
CN106598785A (zh) * | 2016-12-16 | 2017-04-26 | 广东美晨通讯有限公司 | 文件系统备份与还原的方法及装置 |
Family Cites Families (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101593199A (zh) * | 2009-03-03 | 2009-12-02 | 浪潮电子信息产业股份有限公司 | 远程服务器目录在浏览器中树形方式显示的方法 |
CN102790760B (zh) * | 2012-05-31 | 2015-04-29 | 清华大学 | 安全网盘系统中一种基于目录树的数据同步方法 |
US9817835B2 (en) * | 2013-03-12 | 2017-11-14 | Tintri Inc. | Efficient data synchronization for storage containers |
CN103634406A (zh) * | 2013-12-11 | 2014-03-12 | 北京荣之联科技股份有限公司 | 文件同步方法及其终端 |
-
2017
- 2017-12-19 CN CN201711377245.6A patent/CN108573014B/zh active Active
Patent Citations (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US7788244B2 (en) * | 2007-07-31 | 2010-08-31 | Hewlett-Packard Development Company, L.P. | Method and system for copying a snapshot tree |
CN102404338A (zh) * | 2011-12-13 | 2012-04-04 | 华为技术有限公司 | 一种文件同步方法和装置 |
CN102929745A (zh) * | 2012-09-26 | 2013-02-13 | 东软集团股份有限公司 | 一种虚拟设备状态数据的更新方法及装置 |
CN103268270A (zh) * | 2013-05-10 | 2013-08-28 | 曙光信息产业(北京)有限公司 | 快照的管理方法和装置 |
CN103440173A (zh) * | 2013-08-23 | 2013-12-11 | 华为技术有限公司 | 一种多核处理器的调度方法和相关装置 |
CN106598785A (zh) * | 2016-12-16 | 2017-04-26 | 广东美晨通讯有限公司 | 文件系统备份与还原的方法及装置 |
Also Published As
Publication number | Publication date |
---|---|
CN108573014A (zh) | 2018-09-25 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN108573014B (zh) | 一种文件同步方法、装置、电子设备及可读存储介质 | |
US11423048B2 (en) | Content management client synchronization service | |
US9336227B2 (en) | Selective synchronization in a hierarchical folder structure | |
US9846702B2 (en) | Indexing of file in a hadoop cluster | |
US10346485B1 (en) | Semi structured question answering system | |
US10025808B2 (en) | Compacting change logs using file content location identifiers | |
US9965505B2 (en) | Identifying files in change logs using file content location identifiers | |
JP2016539401A (ja) | 階層的データアーカイビング | |
CN103795811A (zh) | 一种基于元数据保存存储信息及统计管理数据的方法 | |
CN106484734A (zh) | 一种数据查询缓存方法及系统 | |
CN113282540A (zh) | 一种云对象存储同步方法、装置、计算机设备及存储介质 | |
US10606805B2 (en) | Object-level image query and retrieval | |
CN104090948A (zh) | 核电站海量数据处理方法、装置及系统 | |
CN103559264B (zh) | 一种微件数据及时更新的方法和装置 | |
JP2017045455A (ja) | データを編成するシステム及び方法 | |
US20240273065A1 (en) | Hadoop distributed file system (hdfs) express bulk file deletion | |
Larkin | Data representations for mobile devices |
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 |