掌桥专利:专业的专利平台
掌桥专利
首页

数据同步方法、装置、电子设备及可读存储介质

文献发布时间:2023-06-19 11:22:42


数据同步方法、装置、电子设备及可读存储介质

技术领域

本公开实施例涉及数据同步技术领域,更具体地,涉及一种数据同步方法、装置、电子设备及可读存储介质。

背景技术

目前,市场上的本地数据同步至云端的方法主要包括两种,数据离线拷贝是通过磁盘拷贝本地数据,再同步至云端机房,实现本地数据与云端的同步,或者由人工通过在线迁移工具进行本地数据和云端的实时同步。但由于离线数据拷贝时间长,数据离线迁移不及时,以及在线迁移工具实现数据同步必须通过人工提交同步任务,浪费人力资源,并且也无法实现本地数据实时同步至云端。因此,有必要提供一种能够实现本地数据实时同步至云端的技术方案。

发明内容

本公开实施例的一个目的是提供一种数据同步方法的新的技术方案。

根据本公开的第一方面,提供了一种数据同步方法,通过安装在本地设备上的同步客户端执行,所述方法包括:

获取本地文件列表和预设的至少一种同步类型;

监测本地文件列表中的文件是否发生了与任一种所述同步类型对应的变动,若是,将所述文件确定为目标文件;

将所述目标文件与云端服务器中的文件进行比对,以确定所述目标文件是否为待同步文件;

根据所述待同步文件的同步类型执行对应的同步操作,以实现所述云端服务器对所述待同步文件的同步。

可选地,所述根据所述待同步文件的同步类型执行对应的同步操作,以实现所述云端服务器对所述待同步文件的同步,包括:

在所述待同步文件的同步类型为新增类型或者修改类型的情况下,调用上传接口将所述待同步文件上传到所述云端服务器中;

在所述待同步文件的同步类型为删除类型的情况下,调用删除接口将所述云端服务器中与所述待同步文件对应的文件删除。

可选地,所述在所述待同步文件的同步类型为新增类型或者修改类型的情况下,调用上传接口将所述待同步文件上传到所述云端服务器中,包括:

在所述待同步文件的同步类型为新增类型或者修改类型的情况下,创建与所述待同步文件对应的上传任务并且加入至上传任务队列中;

调用上传接口通过异步方式执行所述上传任务队列中的上传任务。

可选地,所述根据所述待同步文件的同步类型执行对应的同步操作,以实现所述云端服务器对所述待同步文件的同步,包括:

在所述待同步文件的同步类型为新增类型或者修改类型的情况下,确定所述待同步文件的大小是否大于预设的阈值;

在所述待同步文件的大小大于所述阈值的情况下,对所述待同步文件进行分片以得到小于等于所述阈值的多个文件片段;

将多个所述文件片段分别通过上传请求上传到所述云端服务器中;其中,所述上传请求的请求头中含有所述文件片段的分片号和散列值,以供所述云端服务器校验接收到的文件片段的散列值和所述请求头中的散列值是否一致以及在不一致的情况下进行上传失败响应;

在接收到所述云端服务器的上传失败响应时,从所述上传失败响应中获取分片号作为重传分片号,通过上传请求将所述重传分片号对应的文件片段上传到所述云端服务器中。

可选地,所述根据所述待同步文件的同步类型执行对应的同步操作,以实现所述云端服务器对所述待同步文件的同步,包括:

在所述待同步文件的同步类型为新增类型或者修改类型的情况下,确定所述待同步文件的大小是否大于预设的阈值;

在所述待同步文件的大小小于等于所述阈值的情况下,发起上传请求将所述待同步文件上传到所述云端服务器中;其中,所述上传请求的请求头中含有所述待同步文件的散列值,以供所述云端服务器校验接收到的文件的散列值和所述请求头中的散列值是否一致以及在不一致的情况下进行上传失败响应;

在接收到所述云端服务器的上传失败响应时,再次发起上传请求将所述待同步文件上传到所述云端服务器中。

可选地,所述方法还包括:

在所述同步操作执行失败的情况下生成错误日志;

根据所述错误日志确定失败原因;

在失败原因为本机资源不足的情况下,提示用户关闭非必要进程以及在用户关闭非必要进程后重新进行所述同步操作;

或,在失败原因为安装在所述云端服务器不可用时,在预设时间间隔后重新进行所述同步操作;

或,在失败原因为网络抖动的情况下,重新进行所述同步操作。

可选地,在获取本地文件列表之前,所述方法还包括:

接收配置指令,所述配置指令中包括文件筛选规则;

根据所述文件筛选规则生成所述本地文件列表。

根据本公开的第二方面,提供了一种数据同步装置,该装置包括:

监测单元,用于监测本地文件列表中的文件是否发生了与任一预设的同步类型对应的变动,若是,将所述文件确定为目标文件;

比对单元,用于将所述目标文件与云端服务器中的文件进行比对,以确定所述目标文件是否为待同步文件;

同步单元,用于根据所述待同步文件的同步类型执行对应的同步操作,以实现所述云端服务器对所述待同步文件的同步。

根据本公开的第三方面,提供了一种电子设备,该电子设备包括:存储器、处理器及存储在所述存储器上并可在所述处理器上运行的计算机程序,所述计算机程序被所述处理器执行时实现如第一方面所述的数据同步方法的步骤。

根据本公开的第四方面,提供了一种可读存储介质,该可读存储介质上存储有计算机程序,所述计算机程序被处理器执行时实现如第一方面中任一项所述数据同步方法的步骤。

本公开实施例的一个有益效果在于,通过安装在本地设备上的同步客户端对本地文件列表进行监控,当发现本地文件列表中的文件发生了与任一种预设同步类型对应的变动时,进一步与云端服务器中的文件进行比对,以确定出需要同步的待同步文件,然后根据待同步文件的同步类型执行相应的同步操作,利用该方法,在用户根据其需求设置好同步类型之后,就可以自动检测到需要同步的文件并且进行对应的同步操作,能够减少人工操作,避免浪费人力资源并且提升同步的及时性。

通过以下参照附图对本发明的示例性实施例的详细描述,本发明的其它特征及其优点将会变得清楚。

附图说明

被结合在说明书中并构成说明书的一部分的附图示出了本发明的实施例,并且连同其说明一起用于解释本发明的原理。

图1是本公开实施例的数据同步方法的实施环境和能够实施该方法的系统组成结构的示意图;

图2是本公开实施例的数据同步方法的流程示意图;

图3是本公开实施例的数据同步装置的结构示意图;

图4是本公开实施例的电子设备的结构示意图。

具体实施方式

现在将参照附图来详细描述本发明的各种示例性实施例。应注意到:除非另外具体说明,否则在这些实施例中阐述的部件和步骤的相对布置、数字表达式和数值不限制本发明的范围。

以下对至少一个示例性实施例的描述实际上仅仅是说明性的,决不作为对本发明及其应用或使用的任何限制。

对于相关领域普通技术人物已知的技术、方法和设备可能不作详细讨论,但在适当情况下,技术、方法和设备应当被视为说明书的一部分。

在这里示出和讨论的所有例子中,任何具体值应被解释为仅仅是示例性的,而不是作为限制。因此,示例性实施例的其它例子可以具有不同的值。

应注意到:相似的标号和字母在下面的附图中表示类似项,因此,一旦某一项在一个附图中被定义,则在随后的附图中不需要对其进行进一步讨论。

<方法实施例>

如图1所示,本实施例的数据同步方法涉及云端服务器2000、本地设备1000以及网络3000。本地设备1000可以通过通信网络3000与云端服务器2000进行通信。

云端服务器2000例如可以是部署在云端的刀片服务器、机架式服务器等,云端服务器2000也可以是部署在云端的服务器集群,在此不做限定。

如图1所示,云端服务器2000具体配置可以包括但不限于处理器2100、存储器2200、接口装置2300、通信装置2400、显示装置2500和输入装置2600。处理器2100例如可以是中央处理器CPU等。存储器2200例如包括ROM(只读存储器)、RAM(随机存取存储器)、诸如硬盘的非易失性存储器等。接口装置2300例如包括USB接口、串行接口等。通信装置2400例如能够进行有线或无线通信。显示装置2500例如是液晶显示屏。输入装置2600例如可以包括触摸屏、键盘等。

应用于本发明实施例中,云端服务器2000的存储器2200用于存储指令,所述指令用于控制所述处理器2100进行操作以支持实现根据本发明任意实施例的方法。技术人员可以根据本发明所公开方案设计指令。指令如何控制处理器进行操作,这是本领域公知,故在此不再详细描述。

在一个例子中,该云端服务器2000例如是提供对象存储服务的存储服务器。对象存储,也叫做基于对象的存储,可以适用于较为复杂的存储场景。

本领域技术人员应当理解,尽管在图1中示出了云端服务器2000的多个装置,但是,本发明实施例的云端服务器2000可以仅涉及其中的部分装置,例如,只涉及处理器2100、存储器2200以及通信装置2400。

如图1所示,本地设备1000可以包括处理器1100、存储器1200、接口装置1300、通信装置1400、显示装置1500、输入装置1600、扬声器1700、麦克风1800等等。其中,处理器1100可以是中央处理器CPU、图形处理器GPU、微处理器MCU等,用于执行计算机程序,该计算机程序可以采用比如x86、Arm、RISC、MIPS、SSE等架构的指令集编写。存储器1200例如包括ROM(只读存储器)、RAM(随机存取存储器)、诸如硬盘的非易失性存储器等。接口装置1300例如包括USB接口、耳机接口等。通信装置1400例如能够利用光纤或电缆进行有线通信,或者进行无线通信,具体地可以包括WiFi通信、蓝牙通信、2G/3G/4G/5G通信等。显示装置1500例如是液晶显示屏、触摸显示屏等。输入装置1600例如可以包括触摸屏、键盘、体感输入等。用户可以通过扬声器1700和麦克风1800输入/输出语音信息。

本地设备1000可以是服务器、台式计算机、便携式电脑、平板电脑、智能手机等,在此不做限定。

应用于本发明的实施例中,本地设备1000的存储器1200用于存储指令,所述指令用于控制所述处理器1100进行操作以支持实现根据本发明任意实施例的数据同步方法。技术人员可以根据本发明所公开方案设计指令。指令如何控制处理器进行操作,这是本领域公知,故在此不再详细描述。

本领域技术人员应当理解,尽管在图1中示出了本地设备1000的多个装置,但是,本发明实施例的本地设备1000可以仅涉及其中的部分装置,例如,只涉及处理器1100、存储器1200、显示装置1500、输入装置1600、通信装置1400等。

图2是本公开实施例的数据同步方法的流程示意图。该方法可以由本地设备执行。

在一些实施例中,该方法可以通过安装在本地设备上的同步客户端执行。该同步客户端可以基于本机操作系统提供的文件监控工具(例如WatchService工具)实现,使得该同步客户端可以以操作系统原生应用的方式来运行,从而提升该同步客户端的处理能力和处理速度。

该方法可以包括如下步骤S102~S105。

步骤S102、获取本地文件列表和预设的至少一种同步类型。

在步骤S102之前,所述方法还可以包括步骤S101。步骤S101、接收配置指令,根据配置指令配置同步相关的参数。该方法由安装在本地设备上的同步客户端执行时,配置同步相关的参数也就是配置同步客户端的工作参数。

在一些实施例中,配置指令中指定了本地文件列表。在一个例子中,本地文件列表可以是本地设备的磁盘,例如“磁盘C”或“磁盘D”等。本地文件列表也可以为磁盘中的某个文件夹,例如,磁盘C中的“文件夹A”。文本文件列表也可以为某个单个文件,例如,磁盘C中的“文件B”,本公开实施例在此不做限定。

在一些实施例中,配置指令中指定了文件筛选规则,根据文件筛选规则即可生成本地文件列表。在一个例子中,可设置最多50条文件筛选规则来生成在预设文件列表,文件筛选规则的数量和具体的筛选规则可根据用户的实际需求来设置。在一个例子中,文件筛选规则例如可以是正则表达式。正则表达式又称为规则表达式(英文全称为RegularExpression),在本公开实施例中用来检索符合某个规则的本地文本。

在一些实施例中,可以预先设置同步类型,例如新增类型、修改类型、删除类型的一个或者多个。新增类型对应于在本地文件列表中的新增的文件,修改类型对应于对本地文件列表中的已有文件进行修改,删除类型对应于对本地文件列表中的文件的删除。在一些实施例中,为了保证云端服务器的数据安全,防止文件被误删除,默认配置为同步类型包括创建类型和修改类型。

步骤S103、监测本地文件列表中的文件是否发生了与任一种同步类型对应的变动,若是,将文件确定为目标文件。

在一些实施例中,多种情况都可能导致文件发生变动,例如新创建了文件、对文件进行修改、将文件删除,都会导致文件变动。也就是说,发生变动的文件可以是新增的文件、被删除的文件、或者被修改的文件。其中,对文件进行修改可以包括修改文件的文件名以及修改文件内容等情况。

例如,本地文件列表为“磁盘C”,将“文件名为“文件A”修改为“文件B”,可视为修改了文件名;文件A内容中的“知识”二字修改为“产权”二字,可视为修改了文件内容,在此不做限定。

对于本地文件夹中发生变动的文件,如果其变动方式和任一种预设的同步类型对应,则将该发生变动的文件确定为目标文件。

例如,预设的同步类型包括新建类型和修改类型,则新创建的文件和被修改的文件都是目标文件,对应的同步类型分别为新建类型和修改类型,而被删除的文件不是目标文件。

例如,预设的同步类型包括新建类型、修改类型、删除类型,则新创建的文件、被修改的文件、被删除的文件都是目标文件,对应的同步类型分别为新建类型、修改类型和删除类型。

步骤S104、将目标文件与云端服务器中的文件进行比对,以确定目标文件是否为待同步文件。

在一些实施例中,利用目标文件的散列值(hash value)与云端服务器中的文件的散列值进行比对,来确定目标文件是否为待同步文件。文件或数据的散列值可以通过散列函数对文件或数据进行计算得到。散列函数是一种从数据中创建小的数字“指纹”的方法,通常是随机字母和数字组成的字符串,如果两个文件或数据的散列值一样,通常可以认为这两个文件或数据是一模一样的。

在一个例子中,对目标文件执行MD5算法获得加密的128位二进制数组,再对这个二进制数据进行Base64编码,得到Content-MD5值作为该目标文件的散列值。基于同样的方式,云端服务器可以获取到云端服务器中存储的每个文件的散列值。

在一些实施例中,目标文件为被删除的文件时,在比对后发现云端服务器中存在与被删除的文件的文件名和元数据信息均一致的文件时,则将该目标文件确定为待同步文件,对应的同步类型为删除类型。其中,元数据信息可以包括该文件最后一次修改时间、文件大小、该文件的散列值等。通过这种方式,采用文件名以及文件的元数据信息比对,能够充分保证删除的准确性。

例如,本地设备C盘中的文件A被用户删除后,检测云端服务器中是否存在与文件A的文件名和元数据信息(文件A最后一次修改时间、文件A的文件大小及散列值等)均一致的文件A*,若云端服务器中存在文件A*,说明需要删除文件A*来实现同步,被删除的文件A为待同步文件。

在一些实施例中,目标文件为新增的文件或被修改的文件时,若云端服务器中不存在与目标文件的文件名一样的文件,则确定目标文件为待同步文件,对应的同步类型为新增类型或者修改类型。

例如,本地设备C盘中新增一个文件B后,检测云端服务器中是否存在一个与文件B的文件名相同的文件B*,若不存在该文件B*,说明云端服务器中不存在与目标文件的文件名相同的文件,目标文件为待同步文件,即文件B为待同步文件。

例如,本地设备C盘中的文件C被修改,检测云端服务器中是否存在一个与文件C的文件名相同的文件C*,若不存在该文件C*,说明云端服务器中不存在与目标文件的文件名相同的文件,目标文件为待同步文件,即文件C为待同步文件。

在一些实施例中,目标文件为新增的文件或被修改的文件时,若云端服务器中存在与目标文件的文件名一样的文件,则进一步确定该文件名一样的文件的散列值与目标文件的散列值是否不同,如果不同,则确定目标文件为待同步文件。

例如,本地设备中的文件E为新增的文件或被修改的文件时,若云端服务器中存在与文件E的文件名相同的文件E*,需要分别获取文件E和文件E*的散列值,若文件E和文件E*的散列值不同,则确定文件E为待同步文件。云端服务器中的文件E*的文件名虽然与文件E的文件名相同,但并不能保证文件E中的内容与文件E*中的内容是一样的,也就是说明文件E与文件E*也可能不是相同的文件,需要获取文件E和文件E*的散列值来进一步确认文件E是不是待同步文件。

在一些实施例中,目标文件为新增的文件或被修改的文件时,若云端服务器中存在与目标文件的文件名一样的文件,则进一步确定该文件名一样的文件的最后一次修改时间与目标文件的最后一次修改时间是否不同,如果不同,则确定目标文件为待同步文件。

例如,本地设备中的文件E为新增的文件或被修改的文件时,若云端服务器中存在与文件E的文件名相同的文件E*,需要分别获取文件E和文件E*的最后一次修改时间(可以从文件的元数据中获取),若文件E和文件E*的最后一次修改时间不同,则确定文件E为待同步文件。

步骤S105、根据待同步文件的同步类型执行对应的同步操作,以实现云端服务器对待同步文件的同步。

在待同步文件的同步类型为删除类型的情况下,调用删除接口将云端服务器中与待同步文件对应的文件删除。

在一个例子中,预先创建基于串行执行机制的删除任务队列,在待同步文件的同步类型为删除类型的情况下,创建与待同步文件对应的删除任务并且加入至删除任务队列中,调用删除接口通过串行方式执行删除任务队列中的删除任务,也就是按照删除任务加入删除任务队列的先后顺序,依次执行删除任务队列中的删除任务。

或者,预先创建基于异步执行机制的删除任务队列,在待同步文件的同步类型为删除类型的情况下,创建与待同步文件对应的删除任务并且加入至删除任务队列中,调用删除接口通过异步方式执行删除任务队列中的删除任务。

在待同步文件的同步类型为新增类型或者修改类型的情况下,调用上传接口将待同步文件上传到云端服务器中。在对象存储这一应用场景下,本地设备对云端服务器中的文件进行修改较为困难,本公开实施例中,对于修改类型的待同步文件,采用上传覆盖原文件的方式实现云端服务器对待同步文件的同步。

在一个例子中,预先创建基于串行执行机制的上传任务队列,在待同步文件的同步类型为新增类型或者修改类型的情况下,创建与待同步文件对应的上传任务并且加入至上传任务队列中,调用上传接口通过串行方式执行上传任务队列中的上传任务,也就是按照上传任务加入上传任务队列的先后顺序,依次执行上传任务队列中的上传任务。

或者,预先创建基于异步执行机制的上传任务队列,在待同步文件的同步类型为新增类型或者修改类型的情况下,创建与待同步文件对应的上传任务并且加入至上传任务队列中,调用上传接口通过异步方式执行上传任务队列中的上传任务。

也就是说,本公开实施例中,可以基于异步执行机制来处理同步任务,也就是说任务队列中的不同任务可以是交替执行的,也可以是同时执行的,是否启动任务的执行过程并不依赖于前一个任务执行完毕。本公开实施例利用异步执行机制的并发执行任务的能力和异步回调的能力,减少任务阻塞的情况的发生,有利于提高同步方案的可靠性。

在一个例子中,待同步文件为新增的文件或被修改的文件时,在将待同步文件同步到云端服务器中之后,还需获取云端服务器中与待同步文件对应的同步文件的散列值,将同步文件的散列值与待同步文件的散列值进行比对,以确定同步文件的散列值与待同步文件的散列值是否相同。如果同步文件的散列值与待同步文件的散列值不同,说明之前的同步并没有成功,需要再次将待同步文件同步到云端服务器中。通过这种方式,可以充分保证同步成功,提高同步成功率。

在一个例子中,在待同步文件的同步类型为新增类型或者修改类型的情况下,可以根据待同步文件的大小,决定是否对待同步文件进行分片传输。

首先,在待同步文件的同步类型为新增类型或者修改类型的情况下,确定待同步文件的大小是否大于预设的阈值。

在待同步文件的大小大于该阈值的情况下,同步过程包括步骤S1051-S1053。

步骤S1051、对待同步文件进行分片以得到小于等于阈值的多个文件片段。

步骤S1052、将多个文件片段分别通过上传请求上传到云端服务器中。

其中,上传请求的请求头中含有文件片段的分片号和散列值,云端服务器在接收到文件片段后,校验接收到的文件片段的散列值和请求头中的散列值是否一致。如果不一致,说明云端服务器接收到的文件片段不完整或者出现了错误,进行上传失败响应以通知本地设备重新上传该文件片段。

步骤S1053、在接收到云端服务器的上传失败响应时,从上传失败响应中获取分片号作为重传分片号,通过上传请求将重传分片号对应的文件片段上传到云端服务器中。

云端服务器在接收到全部文件片段并且进行一致性校验通过后,可以根据分片号将文件片段合并为一个完整的文件。

在待同步文件的大小小于等于该阈值的情况下,同步过程包括步骤S1054-S1055。

步骤S1054、发起上传请求将待同步文件上传到云端服务器中。

其中,上传请求的请求头中含有待同步文件的散列值,以供云端服务器校验接收到的文件的散列值和请求头中的散列值是否一致以及在不一致的情况下进行上传失败响应。如果不一致,说明云端服务器接收到的文件不完整或者出现了错误,进行上传失败响应以通知本地设备重新上传待同步文件。

步骤S1055、在接收到云端服务器的上传失败响应时,再次发起上传请求将待同步文件上传到云端服务器中。

在本公开实施例中,在待同步文件的同步类型为新增类型或者修改类型的情况下,在待同步文件比较大时(也就是大于预设阈值时),选择分片传输方式进行上传,在分片上传出现失败时,只需要重新上传对应的文件片段即可,不需要对待同步文件整体进行重新上传,以防止浪费带宽资源。

在一个例子中,所述方法还包括:在同步操作执行失败的情况下生成错误日志,根据错误日志确定失败原因。

在失败原因为本机资源不足的情况下,提示用户关闭非必要进程以及在用户关闭非必要进程后重新进行同步操作。

在失败原因为安装在云端服务器上的同步服务端不可用时,在预设时间间隔后重新进行同步操作。

在失败原因为网络抖动的情况下,重新进行同步操作。

在无法确定失败原因的情况下,重启同步客户端并且在重启之后重新进行同步操作。

也就是说,本公开实施例的数据同步方法具有自动纠错补救机制,可以在同步操作失败时尝试解决造成失败的问题并进行重新上传,提升了同步可靠性。

在一个例子中,将每次同步操作和待同步文件的散列值都记录下来存入到本地操作记录数据库中,以便于后续查找同步记录使用。云端服务器在一致性校验通过后,将同步文件的散列值记录下来,以便于后续查找文件或者进行比对时使用。

在一些实施例中,云存储服务器可以归属于第三方云厂商,配置指令还包括针对第三方云厂商的配置。

在一些实施例中,根据配置指令,对于不同的第三方云厂商,可设置在预设时间范围内的不同或者相同的最大带宽,以实现限速设置做到合理利用网络资源。

在一些实施例中,根据配置指令,对于不同的第三方云厂商可设置不同或者相同的最大连接数,通过设置最大连接数实现实时同步工具动态调整,其中的连接数可根据本机的使用情况与性能综合决定。

在一些实施例中,根据配置指令,还可以设置第三方云厂商的签名密钥,用于用户身份识别,保证待同步文件同步过程中的数据安全。

在一些实施例中,根据配置指令,还可以设置同步传输采用http或https传输方式,一般情况下默认采用https传输方式。

在一些实施例中,根据配置指令,还可以设置同步传输是否需要加密。为了保证待同步文传文件在同步传输中的安全,一般默认采用加密同步传输设置。

在一些实施例中,根据配置指令,还可以设置传输速度和传输方式,并在将待同步文件同步到云端服务器中,按照传输速度和传输方式将待同步文件同步到云端服务器中。传输方式例如可以包括分片传输,还可以包括串行传输或者异步传输。

本公开实施例的数据同步方法,通过安装在本地设备上的同步客户端对本地文件列表进行监控,当发现本地文件列表中的文件发生了与任一种预设同步类型对应的变动时,进一步与云端服务器中的文件进行比对,以确定出需要同步的待同步文件,然后根据待同步文件的同步类型执行相应的同步操作,利用该方法,在用户根据其需求设置好同步类型之后,就可以自动检测到需要同步的文件并且进行对应的同步操作,能够减少人工操作,避免浪费人力资源并且提升同步的及时性。

<装置实施例>

图3是可应用本公开实施例的一种数据同步装置的结构示意图。如图3所示,该数据同步装置包括监测单元301、比对单元302和同步单元303。

监测单元301,用于监测本地文件列表中的文件是否发生了与任一预设的同步类型对应的变动,若是,将文件确定为目标文件;

比对单元302,用于将目标文件与云端服务器中的文件进行比对,以确定目标文件是否为待同步文件;

同步单元303,用于根据待同步文件的同步类型执行对应的同步操作,以实现云端服务器对待同步文件的同步。

在一个例子中,预设的同步类型包括新建类型、修改类型、删除类型,则新创建的文件、被修改的文件、被删除的文件都是目标文件,对应的同步类型分别为新建类型、修改类型和删除类型。

在一个例子中,该数据同步装置还包括配置管理模块。配置管理模块,用于接收配置指令,所述配置指令中包括文件筛选规则;根据所述文件筛选规则生成本地文件列表。或者,所述配置指令中指定了本地文件列表。在一个例子中,配置指令中还含有其它前述内容中提及的配置信息,配置管理模块用于根据配置信息对同步过程进行控制,这里不再重复说明。

在一个例子中,同步单元包括第一同步单元和第二同步单元。

第一同步单元用于在待同步文件的同步类型为删除类型的情况下,调用删除接口将云端服务器中与待同步文件对应的文件删除。

第二同步单元用于在待同步文件的同步类型为新增类型或者修改类型的情况下,调用上传接口将待同步文件上传到云端服务器中。

在一个例子中,第一同步单元包括删除任务创建子模块和删除任务执行子模块。

删除任务创建子模块,用于在待同步文件的同步类型为删除类型的情况下,创建与待同步文件对应的删除任务并且加入至删除任务队列中。

删除任务执行子模块,用于调用删除接口通过异步方式执行删除任务队列中的上传任务。

在一个例子中,第二同步单元包括上传任务创建模块和上传任务执行子模块。

上传任务创建子模块,用于在待同步文件的同步类型为新增类型或者修改类型的情况下,创建与待同步文件对应的上传任务并且加入至上传任务队列中。

上传接口执行子模块,用于调用上传接口通过异步方式执行上传任务队列中的上传任务。

本公开实施例的数据同步装置,可以基于异步执行机制来处理同步任务,任务队列中的不同任务可以是交替执行的,也可以是同时执行的,是否启动任务的执行过程并不依赖于前一个任务执行完毕,利用异步执行机制的并发执行任务的能力和异步回调的能力,可以减少任务阻塞的情况的发生,有利于提高同步可靠性。

在一个例子中,第二同步单元包括比较子模块、分片子模块、第一上传子模块和第二上传子模块。

比较模块,用于在待同步文件的同步类型为新增类型或者修改类型的情况下,确定待同步文件的大小是否大于预设的阈值。

分片模块,用于在待同步文件的大小大于阈值的情况下,对待同步文件进行分片以得到小于等于阈值的多个文件片段。

第一上传子模块,用于将多个文件片段分别通过上传请求上传到云端服务器中;其中,上传请求的请求头中含有文件片段的分片号和散列值,以供云端服务器校验接收到的文件片段的散列值和请求头中的散列值是否一致以及在不一致的情况下进行上传失败响应;以及,在接收到云端服务器的上传失败响应时,从上传失败响应中获取分片号作为重传分片号,通过上传请求将重传分片号对应的文件片段上传到云端服务器中。

第二上传子模块,用于在待同步文件的大小小于等于阈值的情况下,发起上传请求将待同步文件上传到云端服务器中;其中,上传请求的请求头中含有待同步文件的散列值,以供云端服务器校验接收到的文件的散列值和请求头中的散列值是否一致以及在不一致的情况下进行上传失败响应;以及,在接收到云端服务器的上传失败响应时,再次发起上传请求将待同步文件上传到云端服务器中。

本公开实施例的数据同步装置,对于新增类型或者修改类型的待同步文件,在待同步文件比较大时,选择分片传输方式进行上传,在分片上传出现失败时,只需要重新上传对应的文件片段即可,不需要对待同步文件整体进行重新上传,以防止浪费带宽资源。

在一个例子中,该数据同步装置还包括日志生成模块、日志分析模块和异常处理模块;

日志生成模块,用于在同步操作执行失败的情况下生成错误日志;

日志分析模块,用于根据错误日志确定失败原因;

异常处理模块,用于在失败原因为本机资源不足的情况下,提示用户关闭非必要进程以及在用户关闭非必要进程后重新进行同步操作;或,在失败原因为安装在云端服务器不可用时,在预设时间间隔后重新进行同步操作;或,在失败原因为网络抖动的情况下,重新进行同步操作。

本公开实施例的数据同步装置具有自动纠错补救机制,可以在同步操作失败时尝试解决造成失败的问题并进行重新上传,提升了同步可靠性。

本公开实施例的数据同步装置,可以自动对本地文件列表进行监控,当发现本地文件列表中的文件发生了与任一种预设同步类型对应的变动时,进一步与云端服务器中的文件进行比对,以确定出需要同步的待同步文件,然后根据待同步文件的同步类型执行相应的同步操作,利用该方法,在用户根据其需求设置好同步类型之后,就可以自动检测到需要同步的文件并且进行对应的同步操作,能够减少人工操作,避免浪费人力资源并且提升同步的及时性。

本公开实施例的数据同步装置,将监控功能、比对功能、同步执行功能进行模块化,降低了各个功能之间的耦合性,方便用户根据其需求进行扩展。

本公开实施例的数据同步装置,能够支持对不同的第三方云厂商的云端服务器进行同步管理。

图4是可应用本公开实施例的一种电子设备结构示意图。如图4所示,该电子设备501包括:存储器5011、处理器5012及存储在存储器5011上并可在处理器5012上运行的计算机程序,所述计算机程序被处理器5012执行时实现以上任意方法实施例中任一数据同步方法的步骤。

在本发明实施例中,还提供了一种可读存储介质,其特征在于,所述可读存储介质上存储有计算机程序,所述计算机程序被处理器执行时实现以上任意方法实施例中人任一数据同步方法的步骤。

计算机可读存储介质可以是可以保持和存储由指令执行设备使用的指令的有形设备。计算机可读存储介质例如可以是――但不限于――电存储设备、磁存储设备、光存储设备、电磁存储设备、半导体存储设备或者上述的任意合适的组合。计算机可读存储介质的更具体的例子(非穷举的列表)包括:便携式计算机盘、硬盘、随机存取存储器(RAM)、只读存储器(ROM)、可擦式可编程只读存储器(EPROM或闪存)、静态随机存取存储器(SRAM)、便携式压缩盘只读存储器(CD-ROM)、数字多功能盘(DVD)、记忆棒、软盘、机械编码设备、例如其上存储有指令的打孔卡或凹槽内凸起结构、以及上述的任意合适的组合。这里所使用的计算机可读存储介质不被解释为瞬时信号本身,诸如无线电波或者其他自由传播的电磁波、通过波导或其他传输媒介传播的电磁波(例如,通过光纤电缆的光脉冲)、或者通过电线传输的电信号。

这里所描述的计算机可读程序指令可以从计算机可读存储介质下载到各个计算/处理设备,或者通过网络、例如因特网、局域网、广域网和/或无线网下载到外部计算机或外部存储设备。网络可以包括铜传输电缆、光纤传输、无线传输、路由器、防火墙、交换机、网关计算机和/或边缘服务器。每个计算/处理设备中的网络适配卡或者网络接口从网络接收计算机可读程序指令,并转发该计算机可读程序指令,以供存储在各个计算/处理设备中的计算机可读存储介质中。

用于执行本发明操作的计算机程序指令可以是汇编指令、指令集架构(ISA)指令、机器指令、机器相关指令、微代码、固件指令、状态设置数据、或者以一种或多种编程语言的任意组合编写的源代码或目标代码,编程语言包括面向对象的编程语言—诸如Smalltalk、C++等,以及常规的过程式编程语言—诸如“C”语言或类似的编程语言。计算机可读程序指令可以完全地在用户计算机上执行、部分地在用户计算机上执行、作为一个独立的软件包执行、部分在用户计算机上部分在远程计算机上执行、或者完全在远程计算机或服务器上执行。在涉及远程计算机的情形中,远程计算机可以通过任意种类的网络—包括局域网(LAN)或广域网(WAN)—连接到用户计算机,或者,可以连接到外部计算机(例如利用因特网服务提供商来通过因特网连接)。在一些实施例中,通过利用计算机可读程序指令的状态信息来个性化定制电子电路,例如可编程逻辑电路、现场可编程门阵列(FPGA)或可编程逻辑阵列(PLA),该电子电路可以执行计算机可读程序指令,从而实现本发明的各个方面。

这里参照根据本发明实施例的方法、系统和计算机程序产品的流程图和/或框图描述了本发明的各个方面。应当理解,流程图和/或框图的每个方框以及流程图和/或框图中各方框的组合,都可以由计算机可读程序指令实现。

这些计算机可读程序指令可以提供给通用计算机、专用计算机或其它可编程数据处理装置的处理器,从而生产出一种机器,使得这些指令在通过计算机或其它可编程数据处理装置的处理器执行时,产生了实现流程图和/或框图中的一个或多个方框中规定的功能/动作的装置。也可以把这些计算机可读程序指令存储在计算机可读存储介质中,这些指令使得计算机、可编程数据处理装置和/或其他设备以特定方式工作,从而,存储有指令的计算机可读介质则包括一个制造品,其包括实现流程图和/或框图中的一个或多个方框中规定的功能/动作的各个方面的指令。

也可以把计算机可读程序指令加载到计算机、其它可编程数据处理装置、或其它设备上,使得在计算机、其它可编程数据处理装置或其它设备上执行一系列操作步骤,以产生计算机实现的过程,从而使得在计算机、其它可编程数据处理装置、或其它设备上执行的指令实现流程图和/或框图中的一个或多个方框中规定的功能/动作。

附图中的流程图和框图显示了根据本发明的多个实施例的系统、方法和计算机程序产品的可能实现的体系架构、功能和操作。在这点上,流程图或框图中的每个方框可以代表一个模块、程序段或指令的一部分,模块、程序段或指令的一部分包含一个或多个用于实现规定的逻辑功能的可执行指令。在有些作为替换的实现中,方框中所标注的功能也可以以不同于附图中所标注的顺序发生。例如,两个连续的方框实际上可以基本并行地执行,它们有时也可以按相反的顺序执行,这依所涉及的功能而定。也要注意的是,框图和/或流程图中的每个方框、以及框图和/或流程图中的方框的组合,可以用执行规定的功能或动作的专用的基于硬件的系统来实现,或者可以用专用硬件与计算机指令的组合来实现。对于本领域技术人物来说公知的是,通过硬件方式实现、通过软件方式实现以及通过软件和硬件结合的方式实现都是等价的。

以上已经描述了本发明的各实施例,上述说明是示例性的,并非穷尽性的,并且也不限于所披露的各实施例。在不偏离所说明的各实施例的范围和精神的情况下,对于本技术领域的普通技术人物来说许多修改和变更都是显而易见的。本文中所用术语的选择,旨在最好地解释各实施例的原理、实际应用或对市场中的技术改进,或者使本技术领域的其它普通技术人物能理解本文披露的各实施例。本发明的范围由所附权利要求来限定。

相关技术
  • B1C信号数据与导频同步方法、装置、电子设备和可读存储介质
  • 数据同步方法、装置、可读存储介质和电子设备
技术分类

06120112901274