一种文件同步方法、装置及设备与流程

文档序号:14253205阅读:186来源:国知局
一种文件同步方法、装置及设备与流程

本发明涉及文件同步领域,更具体的说,涉及一种文件同步方法、装置及设备。



背景技术:

如今,采用内容分发网络cdn服务器来为用户提供服务。其中,每台cdn服务器中的文件是将服务器中的文件同步到cdn服务器中实现的。为了保证服务质量,需要实时将服务器中的新增文件或者是修改的文件同步到cdn服务器中。

其中,同步的过程为每个cdn服务器将已保存在本地的文件进行切分,得到大小固定的多个数据块,计算每个数据块的校验码,将每个数据块的校验码进行汇总得到校验码集合。

此后,服务器将已保存到本地的文件进行切分,得到与cdn服务器切分得到的数据块大小相同的多个数据块,计算切分得到的每个数据块的校验码,然后将该校验码与校验码集合进行比较,若该校验码存在于校验码集合中,则不将该数据块同步到cdn服务器中。若该校验码未存在于校验码集合中,则将该数据块同步到cdn服务器中。

上述同步方法需要经过数据切分、计算校验码以及比较校验码的过程,操作复杂,占用较多资源,加重服务器工作负担。



技术实现要素:

有鉴于此,本发明提供一种文件同步方法、装置及设备,以解决现有技术中同步方法操作复杂、且占用较多资源的问题。

为解决上述技术问题,本发明采用了如下技术方案:

一种文件同步方法,应用于接收设备,包括:

在与发送设备通信连接后,获取所述发送设备中的命令消息队列;

根据所述命令消息队列以及所述接收设备本地保存的本地命令消息队列,确定区别命令消息队列;其中,所述区别命令消息队列包括多类子区别命令消息队列、且每个所述子区别命令消息队列中保存有至少一个待更新的文件的文件属性信息;

其中,在得到所述区别命令消息队列中的任一类子区别命令消息队列时,根据所述子区别命令消息队列对所述接收设备中的文件进行更新。

优选地,根据所述命令消息队列以及所述接收设备本地保存的本地命令消息队列,确定区别命令消息队列,包括:

获取所述本地命令消息队列中的不同统计维度;

对于每一所述统计维度,依次比较所述本地命令消息队列中所述统计维度下保存的内容与所述命令消息队列中所述统计维度下保存的内容的区别点,并根据比较得到的区别点,生成所述统计维度对应的子区别命令消息队列;

根据生成的所有的所述子区别命令消息队列,生成所述区别命令消息队列。

优选地,所述文件属性信息包括文件编辑指令、文件名称、文件存储地址以及文件生成时的时间戳;

相应的,在得到所述区别命令消息队列中的任一类子区别命令消息队列时,根据所述子区别命令消息队列对所述接收设备中的文件进行更新,包括:

根据所述子区别命令消息队列中包括的每个所述待更新的文件的文件属性信息中的文件存储地址,从相应的文件存储地址获取文件命名为相应的文件名称的待更新的文件,并将待更新的文件依据相应的文件编辑指令进行更新。

一种文件同步方法,应用于发送设备,包括:

当预设文件中新增待更新的文件的文件属性信息时,将待更新的文件的文件属性信息进行格式转换,得到命令消息队列,并将所述命令消息队列保存到内存中;

实时监听预设端口,判断是否接收到至少一个接收设备发送的连接指令;

当判断出接收到至少一个接收设备发送的连接指令时,与发送连接指令的所述接收设备进行连接;

启动一个新的通信线程与连接到所述发送设备的所述接收设备进行通信。

优选地,当预设文件中新增待更新的文件的文件属性信息时,将待更新的文件的文件属性信息进行格式转换,得到命令消息队列,包括:

当预设文件中新增待更新的文件的文件属性信息时,采用多线程的工作方式,将待更新的文件的文件属性信息进行格式转换,得到命令消息队列。

一种文件同步装置,应用于接收设备,包括:

获取模块,用于在与发送设备通信连接后,获取所述发送设备中的命令消息队列;

比较模块,用于根据所述命令消息队列以及所述接收设备本地保存的本地命令消息队列,确定区别命令消息队列;其中,所述区别命令消息队列包括多类子区别命令消息队列、且每个所述子区别命令消息队列中保存有至少一个待更新的文件的文件属性信息;

更新模块,用于在所述区别命令消息队列中的任一类子区别命令消息队列时,根据所述子区别命令消息队列对所述接收设备中的文件进行更新。

优选地,所述比较模块包括:

获取子模块,用于获取所述本地命令消息队列中的不同统计维度;

比较子模块,用于对于每一所述统计维度,依次比较所述本地命令消息队列中所述统计维度下保存的内容与所述命令消息队列中所述统计维度下保存的内容的区别点,并根据比较得到的区别点,生成所述统计维度对应的子区别命令消息队列;

生成子模块,用于根据生成的所有的所述子区别命令消息队列,生成所述区别命令消息队列。

优选地,所述文件属性信息包括文件编辑指令、文件名称、文件存储地址以及文件生成时的时间戳;

相应的,所述更新模块包括:

更新子模块,用于根据所述子区别命令消息队列中包括的每个所述待更新的文件的文件属性信息中的文件存储地址,从相应的文件存储地址获取文件命名为相应的文件名称的待更新的文件,并将待更新的文件依据相应的文件编辑指令进行更新。

一种文件同步装置,应用于发送设备,包括:

解析模块,用于当预设文件中新增待更新的文件的文件属性信息时,将待更新的文件的文件属性信息进行格式转换,得到命令消息队列,并将所述命令消息队列保存到内存中;

判断模块,用于实时监听预设端口,判断是否接收到至少一个接收设备发送的连接指令;

连接模块,用于当所述判断模块判断出接收到至少一个接收设备发送的连接指令时,与发送连接指令的所述接收设备进行连接;

线程启动模块,用于所述连接模块与发送连接指令的所述接收设备进行连接后,启动一个新的通信线程与连接到所述发送设备的所述接收设备进行通信。

优选地,所述解析模块包括:

解析子模块,用于当预设文件中新增待更新的文件的文件属性信息时,采用多线程的工作方式,将待更新的文件的文件属性信息进行格式转换,得到命令消息队列。

一种接收设备,包括:存储器和处理器;

其中,所述存储器用于存储程序;

处理器用于调用程序,其中,所述程序用于:

在与发送设备通信连接后,获取所述发送设备中的命令消息队列;

根据所述命令消息队列以及所述接收设备本地保存的本地命令消息队列,确定区别命令消息队列;其中,所述区别命令消息队列包括多类子区别命令消息队列、且每个所述子区别命令消息队列中保存有至少一个待更新的文件的文件属性信息;

其中,在所述区别命令消息队列中的任一类子区别命令消息队列时,根据所述子区别命令消息队列对所述接收设备中的文件进行更新。

一种发送设备,包括:存储器和处理器;

其中,所述存储器用于存储程序;

处理器用于调用程序,其中,所述程序用于:

当预设文件中新增待更新的文件的文件属性信息时,将待更新的文件的文件属性信息进行格式转换,得到命令消息队列,并将所述命令消息队列保存到内存中;

实时监听预设端口,判断是否接收到至少一个接收设备发送的连接指令;

当判断出接收到至少一个接收设备发送的连接指令时,与发送连接指令的所述接收设备进行连接;

启动一个新的通信线程与连接到所述发送设备的所述接收设备进行通信。

相较于现有技术,本发明具有以下有益效果:

本发明提供了一种文件同步方法、装置及设备,本发明中接收设备可以根据所述命令消息队列以及所述接收设备本地保存的本地命令消息队列,确定区别命令消息队列,并在所述区别命令消息队列中的任一类子区别命令消息队列时,根据所述子区别命令消息队列进行更新。由于本发明中只需要比较所述命令消息队列和本地命令消息队列中的内容,相比于对数据进行切分,以及计算校验码并进行比较的过程来说,操作简单,不会占用较多资源。

附图说明

为了更清楚地说明本发明实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本发明的实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据提供的附图获得其他的附图。

图1为本发明提供的一种文件同步方法的方法流程图;

图2为本发明提供的另一种文件同步方法的方法流程图;

图3为本发明提供的再一种文件同步方法的方法流程图;

图4为本发明提供的一种文件同步装置的结构示意图;

图5为本发明提供的另一种文件同步装置的结构示意图。

具体实施方式

下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。

本发明实施例提供了一种文件同步方法,应用于接收设备,其中,接收设备为接收端的设备。需要说明的是,接收设备和发送设备进行通信,并进行文件同步方法的执行时依赖于接收设备和发送设备中的文件同步系统csync。

在进行通信前,需要对接收设备和发送设备中的文件同步系统进行配置。具体的配置过程为:

通过csync的模块接口,读取并解析配置文件,设置csync运行时的需要的参数变量,其中,参数变量包括:

软件的运行模式(是以客户端还是服务器方式运行),是否是守护进程,用户身份标识号id、用户组id、占用的网络端口、超时时间、命令消息队列commandlist的最大长度、监听的目录、归档的目录、日志存储的目录以及需要同步的各个频道。

配置完成之后,根据解析出来的配置文件启动csync,并初始化环境,主线程循环监听各个子线程是否死锁deadlock。

其中,初始化环境是指将从配置文件解析出来的参数保存到内存中,并启动各个子线程,将保存在内存中的参数传递给各个子线程,关闭标准输入输出,切换工作目录至“/”下。

deadlock指两个或两个以上的进程在执行过程中,由于竞争资源或者由于彼此通信而造成的一种阻塞的现象,若无外力作用,它们都将无法推进下去。此时称系统处于死锁状态或系统产生了死锁。当处于deadlock状态时,需要先解除死锁状态,才能够正常进行文件同步传输。

参照图1,应用于接收设备的文件同步方法可以包括:

s11、在与发送设备通信连接后,获取所述发送设备中的命令消息队列;

可以每隔固定时间,获取所述发送设备中的命令消息队列,以进行更新。

当预设文件中新增待更新的文件的文件属性信息时,发送设备将待更新的文件的文件属性信息进行格式转换,得到命令消息队列,并将所述命令消息队列保存到内存中;

其中,预设文件可以是同步列表文件listfile/转换文件列表switchfile。

具体的,当内容管理系统cms/视频管理系统vms中发布新内容或者是修改某些内容时,就会在listfile/switchfile中增加一条待更新的文件的文件属性信息。其中,文件属性信息包括文件编辑指令、文件名称、文件存储地址以及文件生成时的时间戳。

文件编辑命令是指增加或修改命令,文件名称是增加或者修改的文件的名称。文件存储地址是指该文件存储在哪个地方。文件生成时的时间戳是指该文件生成时的时间。设置时间戳的目的是为了知道文件的生成时间以及代表该文件是最新的文件。

另外,发送设备将待更新的文件的文件属性信息进行格式转换,得到命令消息队列。具体是指:

由于在内存中并不能够识别待更新的文件的文件属性信息,所以需要对待更新的文件的文件属性信息进行格式转换,转换成能够识别的命令消息队列中的内容。命令消息队列可以是commandlist消息队列。

需要监听线程list_server实时监听listfile/switchfile文件,能够在listfile/switchfile文件新添加数据时,及时解析到内存。

s12、根据所述命令消息队列以及所述接收设备本地保存的本地命令消息队列,确定区别命令消息队列;

其中,所述区别命令消息队列包括多类子区别命令消息队列、且每个所述子区别命令消息队列中保存有至少一个待更新的文件的文件属性信息;

此外,在得到所述区别命令消息队列中的任一类子区别命令消息队列时,根据所述子区别命令消息队列对所述接收设备中的文件进行更新。

具体的,接收设备将命令消息队列以及本地命令消息队列进行比较,得到区别命令消息队列。并且在生成所述区别命令消息队列中的任一类子区别命令消息队列时,根据所述子区别命令消息队列对所述接收设备中的文件进行更新。

本实施例中,接收设备可以根据所述命令消息队列以及所述接收设备本地保存的本地命令消息队列,确定区别命令消息队列,并在所述区别命令消息队列中的任一类子区别命令消息队列时,根据所述子区别命令消息队列进行更新。由于本发明中只需要比较所述命令消息队列和本地命令消息队列中的内容,相比于对数据进行切分,以及计算校验码并进行比较的过程来说,操作简单,不会占用较多资源。

可选的,在上述实施例的基础上,参照图2,步骤s12可以包括:

s21、获取所述本地命令消息队列中的不同统计维度;

其中,统计维度可以为财经、视频、娱乐等维度。

具体的,发送设备和接收设备中保存的内容都是依据统计维度进行分类保存的。这样在进行更新时,也可以依照类型进行更新。

s22、对于每一所述统计维度,依次比较所述本地命令消息队列中所述统计维度下保存的内容与所述命令消息队列中所述统计维度下保存的内容的区别点,并根据比较得到的区别点,生成所述统计维度对应的子区别命令消息队列;

具体的,命令消息队列中保存的是不同统计维度下需要进行更新的待更新的文件的文件属性信息。本地命令消息队列中保存的是已经进行更新的文件的文件属性信息。

确定了统计维度后,对于每一统计维度,比较本地命令消息队列和命令消息队列中该统计维度下的内容是否相同。

具体可以比较文件生成时的时间戳是否相同,或者是比较文件名称是否相同,当文件名称相同时,在进一步比较时间戳是否相同。当文件名称不相同或者是时间戳不相同时,就说明此文件是需要进行更新的文件。

此时将需要进行更新的文件的文件属性信息解析到区别命令消息队列中的该统计维度下,即得到该统计维度对应的子区别命令消息队列。

s23、根据生成的所有的所述子区别命令消息队列,生成所述区别命令消息队列。

得到每个统计维度对应的子区别命令消息队列后,将所有的子区别命令消息队列进行汇总,即可得到区别命令消息队列。

需要说明的是,在比较得到子区别命令消息队列时,为了保证子区别命令消息队列中的内容的准确性。此时采用互斥锁mutex的方式来进行锁定。

具体的,当一个线程比较一个统计维度下的命令消息队列和本地命令消息队列的区别点时,该本地命令消息队列是不允许其他的线程进行编辑的。

可选的,在本实施例的基础上,当所述文件属性信息包括文件编辑指令、文件名称、文件存储地址以及文件生成时的时间戳时,在得到所述区别命令消息队列中的任一类子区别命令消息队列时,根据所述子区别命令消息队列进行更新,包括:

根据所述子区别命令消息队列中包括的每个所述待更新的文件的文件属性信息中的文件存储地址,从相应的文件存储地址获取文件命名为相应的文件名称的待更新的文件,并将待更新的文件依据相应的文件编辑指令进行更新。

具体的,根据文件存储地址,找到文件,当文件编辑指令为更新时,将该文件替换接收设备中具有相同的文件名称的文件即可。当文件编辑指令为新增时,直接将该文件进行保存即可。

需要说明的是,每确定了一个子区别命令消息队列后,就可以启用至少一个线程来进行文件更新操作。

此外,文件更新完成后,会在命令消息队列中相应的文件的文件属性信息中写入更新完成时的时间戳,以保证文件已成功更新完毕。

第三,根据子区别命令消息队列进行更新可以是多个文件同步客户端线程sync_client同时执行的。

第四,接收设备根据子区别命令消息队列更新完成后,会在相应的本地命令消息队列中写入该待更新的文件的文件属性信息,并且将文件更新完成时间的时间戳写入到待更新的文件的文件属性信息中。

第五,当一个线程执行完自己的更新任务时,接收设备会回收该线程的资源,以使该线程执行其它的任务。

第六,当client超时或者死机dead后,csync监听线程watchdog_server会杀掉sync_client线程,释放其资源后启动新的sync_client,并重新从文件同步服务器线程sync_server端同步新的数据。

本实施例中,当得到一个子区别命令消息队列后,就更新该子区别命令消息队列中需要更新的文件,进而能够加快文件更新速度。

可选的,与上述应用于接收设备的文件同步方法相对应,本发明的另一实施例中提供了一种文件同步方法,应用于发送设备。其中,发送设备可以是服务端的设备,如服务器。

参照图3,应用于发送设备的文件同步方法可以包括:

s31、当预设文件中新增待更新的文件的文件属性信息时,将待更新的文件的文件属性信息进行格式转换,得到命令消息队列,并将所述命令消息队列保存到内存中;

其中,步骤s31中的具体解释说明,请参照上述实施例中的相应内容,在此不再赘述。

s32、判断是否接收到至少一个接收设备发送的连接指令;当判断出接收到至少一个接收设备发送的连接指令,执行步骤s33;当判断出未接收到至少一个接收设备发送的连接指令,执行步骤s34。

可以实时监听预设端口,判断是否接收到至少一个接收设备发送的连接指令。预设端口可以为传输控制协议tcp(transmissioncontrolprotocol)端口。

具体的,监听服务器sync_server_listener可以监听tcp端口,当有sync_client连接时,就认为接收到接收设备发送的连接指令。当没有sync_client连接时,就认为没有接收到接收设备发送的连接指令。

s33、与发送连接指令的所述接收设备进行连接;

s34、启动一个新的通信线程与连接到所述发送设备的所述接收设备进行通信。

具体的,与发送连接指令的所述接收设备进行连接后,发送设备会启动一个新的文件同步服务器线程sync_server与接收设备进行通信。

s35、实时监听预设端口。

具体的,当有sync_client连接时,就与sync_client连接。当没有sync_client连接时,就继续监听预设端口,判断是否有sync_client连接。

可选的,在本实施例的基础上,当预设文件中新增待更新的文件的文件属性信息时,将待更新的文件的文件属性信息进行格式转换,得到命令消息队列,包括:

当预设文件中新增待更新的文件的文件属性信息时,采用多线程的工作方式,将待更新的文件的文件属性信息进行格式转换,得到命令消息队列。

具体的,可能会有多个待更新的文件的文件属性信息,此时可以采用多线程的工作方式,同时将多个待更新的文件的文件属性信息解析到命令消息队列中,提高工作效率。

本实施例中,能够采用多线程的工作方式将多个待更新的文件的文件属性信息解析到命令消息队列中,提高工作效率,进而能够保证接收设备及时进行文件同步。

可选的,在上述应用于接收设备的文件同步方法的实施例的基础上,本发明的另一实施例提供了一种文件同步装置,应用于接收设备,参照图4,可以包括:

获取模块101,用于在与发送设备通信连接后,获取所述发送设备中的命令消息队列;

比较模块102,用于根据所述命令消息队列以及所述接收设备本地保存的本地命令消息队列,确定区别命令消息队列;其中,所述区别命令消息队列包括多类子区别命令消息队列、且每个所述子区别命令消息队列中保存有至少一个待更新的文件的文件属性信息;

更新模块103,用于在得到所述区别命令消息队列中的任一类子区别命令消息队列时,根据所述子区别命令消息队列对所述接收设备中的文件进行更新。

本实施例中,接收设备可以根据所述命令消息队列以及所述接收设备本地保存的本地命令消息队列,确定区别命令消息队列,并在所述区别命令消息队列中的任一类子区别命令消息队列时,根据所述子区别命令消息队列进行更新。由于本发明中只需要比较所述命令消息队列和本地命令消息队列中的内容,相比于对数据进行切分,以及计算校验码并进行比较的过程来说,操作简单,不会占用较多资源。

需要说明的是,本实施例中的各个模块的工作过程,请参照上述实施例中的相应说明,在此不再赘述。

可选的,在上述应用于接收设备的文件同步装置的实施例的基础上,所述比较模块包括:

获取子模块,用于获取所述本地命令消息队列中的不同统计维度;

比较子模块,用于对于每一所述统计维度,依次比较所述本地命令消息队列中所述统计维度下保存的内容与所述命令消息队列中所述统计维度下保存的内容的区别点,并根据比较得到的区别点,生成所述统计维度对应的子区别命令消息队列;

生成子模块,用于根据生成的所有的所述子区别命令消息队列,生成所述区别命令消息队列。

进一步,所述文件属性信息包括文件编辑指令、文件名称、文件存储地址以及文件生成时的时间戳;

相应的,所述更新模块包括:

更新子模块,用于根据所述子区别命令消息队列中包括的每个所述待更新的文件的文件属性信息中的文件存储地址,从相应的文件存储地址获取文件命名为相应的文件名称的待更新的文件,并将待更新的文件依据相应的文件编辑指令进行更新。

本实施例中,当得到一个子区别命令消息队列后,就更新该子区别命令消息队列中需要更新的文件,进而能够加快文件更新速度。

需要说明的是,本实施例中的各个模块和子模块的工作过程,请参照上述实施例中的相应说明,在此不再赘述。

可选的,在上述应用于发送设备的文件同步方法的实施例的基础上,本发明的另一实施例中提供了一种文件同步装置,应用于发送设备,参照图5,可以包括:

解析模块201,用于当预设文件中新增待更新的文件的文件属性信息时,将待更新的文件的文件属性信息进行格式转换,得到命令消息队列,并将所述命令消息队列保存到内存中;

判断模块202,用于实时监听预设端口,判断是否接收到至少一个接收设备发送的连接指令;

连接模块203,用于当所述判断模块判断出接收到至少一个接收设备发送的连接指令时,与发送连接指令的所述接收设备进行连接;

线程启动模块204,用于所述连接模块与发送连接指令的所述接收设备进行连接后,启动一个新的通信线程与连接到所述发送设备的所述接收设备进行通信。

进一步,所述解析模块包括:

解析子模块,用于当预设文件中新增待更新的文件的文件属性信息时,采用多线程的工作方式,将待更新的文件的文件属性信息进行格式转换,得到命令消息队列。

本实施例中,能够采用多线程的工作方式将多个待更新的文件的文件属性信息解析到命令消息队列中,提高工作效率,进而能够保证接收设备及时进行文件同步。

需要说明的是,本实施例中的各个模块和子模块的工作过程,请参照上述实施例中的相应说明,在此不再赘述。

可选的,在上述应用于接收设备的文件同步方法和装置的实施例的基础上,本发明的另一实施例提供了一种接收设备,包括:存储器和处理器;

其中,所述存储器用于存储程序;

处理器用于调用程序,其中,所述程序用于:

在与发送设备通信连接后,获取所述发送设备中的命令消息队列;

根据所述命令消息队列以及所述接收设备本地保存的本地命令消息队列,确定区别命令消息队列;其中,所述区别命令消息队列包括多类子区别命令消息队列、且每个所述子区别命令消息队列中保存有至少一个待更新的文件的文件属性信息;

其中,在得到所述区别命令消息队列中的任一类子区别命令消息队列时,根据所述子区别命令消息队列对所述接收设备中的文件进行更新。

本实施例中,接收设备可以根据所述命令消息队列以及所述接收设备本地保存的本地命令消息队列,确定区别命令消息队列,并在所述区别命令消息队列中的任一类子区别命令消息队列时,根据所述子区别命令消息队列进行更新。由于本发明中只需要比较所述命令消息队列和本地命令消息队列中的内容,相比于对数据进行切分,以及计算校验码并进行比较的过程来说,操作简单,不会占用较多资源。

可选的,在上述应用于发送设备的文件同步方法和装置的实施例的基础上,本发明的另一实施例提供了一种发送设备,包括:存储器和处理器;

其中,所述存储器用于存储程序;

处理器用于调用程序,其中,所述程序用于:

当预设文件中新增待更新的文件的文件属性信息时,将待更新的文件的文件属性信息进行格式转换,得到命令消息队列,并将所述命令消息队列保存到内存中;

实时监听预设端口,判断是否接收到至少一个接收设备发送的连接指令;

当判断出接收到至少一个接收设备发送的连接指令时,与发送连接指令的所述接收设备进行连接;

启动一个新的通信线程与连接到所述发送设备的所述接收设备进行通信。

本实施例中,能够将多个待更新的文件的文件属性信息解析到命令消息队列中,进而能够保证接收设备及时进行文件同步。

对所公开的实施例的上述说明,使本领域专业技术人员能够实现或使用本发明。对这些实施例的多种修改对本领域的专业技术人员来说将是显而易见的,本文中所定义的一般原理可以在不脱离本发明的精神或范围的情况下,在其它实施例中实现。因此,本发明将不会被限制于本文所示的这些实施例,而是要符合与本文所公开的原理和新颖特点相一致的最宽的范围。

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