本发明涉及数据处理领域,特别涉及一种文件同步方法、装置、设备及计算机可读存储介质。
背景技术
在开发过程当中,服务器间经常遇到文件同步的情况。rsync是linux下一个数据复制和同步的工具,可以在同台或多台机器之间同步数据。rsync使用自身高效算法来使本地和远程两个主机之间的文件达到同步,这个算法只传送两个文件的不同部分,而不是每次都整份传送,因此速度相当快。为减小带宽,rsync在发送和接收端对数据使用压缩和解压算法。
现有技术中,采用rsync下的daemon模式进行文件同步,其走的是socket通道。具体做法为:服务端(接收端)启动daemon守护进程,监听在端口873,然后客户端(发送端)直接链接到873端口,通过认证,进而同步文件。服务端和客户端都需要添加配置文件rsyncd.conf,在配置文件里面定义同步的用户、同步目录路径、密码文件等信息。当采用rsync下的daemon模式进行文件同步时,在发送端和接收端都需要添加配置文件,还需要维护一个密码文件,配置比较繁琐。
技术实现要素:
为了解决现有技术中采用daemon模式进行文件同步时配置繁琐的问题,本发明实施例提供了一种文件同步方法、装置、设备及计算机可读存储介质。
依据本发明实施例的一个方面,提供了一种文件同步方法,包括:
服务器生成公钥私钥密钥对,并将公钥添加到指定的同步服务器;
服务器按照设定的网络协议,利用公私钥验证的方式,建立所述服务器与所述同步服务器之间的信息传输通道;
利用预设的同步工具,通过所述信息传输通道将所述服务器中的更新文件同步至所述同步服务器。
可选的,在本发明实施例所述的文件同步方法中,利用公私钥验证的方式,建立所述服务器与所述同步服务器之间的信息传输通道,包括:
接收所述同步服务器利用所述公钥加密后的数据,利用所述公钥私钥密钥对中的私钥对所述数据解密,并将解密后的数据发送至所述同步服务器;
当接收到所述同步服务器发送的连接指令后,建立所述服务器与所述同步服务器之间的信息传输通道。
可选的,在本发明实施例所述的文件同步方法中,在通过所述信息传输通道将所述服务器中的更新文件同步至所述同步服务器之后,还包括:
获取所述更新文件在所述同步服务器中的同步结果;
当所述同步结果为同步未成功时,通过所述信息传输通道将所述更新文件重传至所述同步服务器。
可选的,在本发明实施例所述的文件同步方法中,在通过所述信息传输通道将所述更新文件重传至所述同步服务器之后,还包括:
当重传未成功时,记录所述同步服务器的地址及所述更新文件,并按照预设的方式进行反馈。
可选的,在本发明实施例所述的文件同步方法中,在通过所述信息传输通道将所述服务器中的更新文件同步至所述同步服务器时,还包括:将所述更新文件在所述同步服务器中的同步目录发送至所述同步服务器。
可选的,在本发明实施例所述的文件同步方法中,所述网络协议包括:ssh;和/或,所述同步工具包括:rsync。
依据本发明实施例的另一个方面,提供了一种文件同步装置,包括公钥私钥密钥对生成处理模块、信息传输通道建立模块及文件同步模块:
所述公钥私钥密钥对生成处理模块,用于生成公钥私钥密钥对,并将公钥添加到指定的同步服务器;
所述信息传输通道建立模块,用于按照设定的网络协议,利用公私钥验证的方式,建立所述服务器与所述同步服务器之间的信息传输通道;
所述文件同步模块,用于利用预设的同步工具,通过所述信息传输通道将所述服务器中的更新文件同步至所述同步服务器。
可选的,在本发明实施例所述的文件同步装置中,所述信息传输通道建立模块具体用于:
接收所述同步服务器利用所述公钥加密后的数据,利用所述公钥私钥密钥对中的私钥对所述数据解密,并将解密后的数据发送至所述同步服务器;
当接收到所述同步服务器发送的连接指令后,建立所述服务器与所述同步服务器之间的信息传输通道。
可选的,在本发明实施例所述的文件同步装置中,还包括同步结果获取模块:
所述同步结果获取模块,用于获取所述更新文件在所述同步服务器中的同步结果;
所述文件同步模块,用于当所述同步结果为同步未成功时,通过所述信息传输通道将所述更新文件重传至所述同步服务器。
可选的,在本发明实施例所述的文件同步装置中,还包括反馈模块:
所述反馈模块,用于当重传未成功时,记录所述同步服务器的地址及所述更新文件,并按照预设的方式进行反馈。
可选的,在本发明实施例所述的文件同步装置中,所述文件同步模块还用于:将所述更新文件在所述同步服务器中的同步目录发送至所述同步服务器。
可选的,在本发明实施例所述的文件同步装置中,所述网络协议包括:ssh;和/或,所述同步工具包括:rsync。
依据本发明实施例的第三个方面,提供了一种文件同步设备,所述文件同步设备包括:存储器、处理器及存储在所述存储器上并可在所述处理器上运行的计算机程序,所述计算机程序被所述处理器执行时实现如上所述的文件同步方法的步骤。
依据本发明实施例的第四个方面,还提供了一种计算机可读存储介质,所述计算机可读存储介质上存储有计算机程序,所述计算机程序被处理器执行时实现如上所述的文件同步方法的步骤。
本发明实施例的有益效果如下:
本发明实施例提供的文件同步方法、装置、设备及计算机可读存储介质,利用公私钥验证方式实现信息传输通道的无密码连接,再利用同步工具通过信息传输通道将服务器中的更新文件同步至同步服务器,在进行文件同步时不需要添加配置文件,解决了现有技术中当采用daemon模式进行文件同步时配置繁琐的问题,同时不需要人工输入密码即能建立服务器与同步服务器之间的信息传输通道。
上述说明仅是本发明实施例技术方案的概述,为了能够更清楚了解本发明实施例的技术手段,而可依照说明书的内容予以实施,并且为了让本发明实施例的上述和其它目的、特征和优点能够更明显易懂,以下特举本发明实施例的具体实施方式。
附图说明
通过阅读下文优选实施方式的详细描述,各种其他的优点和益处对于本领域普通技术人员将变得清楚明了。附图仅用于示出优选实施方式的目的,而并不认为是对本发明实施例的限制。而且在整个附图中,用相同的参考符号表示相同的部件。在附图中:
图1为本发明第一实施例中文件同步方法的流程示意图;
图2为本发明第二实施例中文件同步方法的流程示意图;
图3为本发明第三实施例中文件同步方法的流程示意图;
图4为本发明第四实施例中文件同步方法的流程示意图;
图5为本发明第五实施例中文件同步装置的结构示意图;
图6为本发明第六实施例中文件同步设备的结构示意图;
图7为本发明实施例实例1中文件同步方法的流程示意图。
具体实施方式
下面将参照附图更详细地描述本发明的示例性实施例。虽然附图中显示了本发明的示例性实施例,然而应当理解,可以以各种形式实现本发明而不应被这里阐述的实施例所限制。相反,提供这些实施例是为了能够更透彻地理解本发明,并且能够将本发明的范围完整的传达给本领域的技术人员。应当理解,此处所描述的具体实施例仅仅用以解释本发明,并不用于唯一限定本发明。
根据本发明的第一实施例,提供了一种文件同步方法,应用于服务器。图1为本发明第一实施例中文件同步方法的流程示意图,如图1所示,本发明第一实施例的文件同步方法,包括以下步骤:
s101:服务器生成公钥私钥密钥对,并将公钥添加到指定的同步服务器。
在本发明实施例中,同步服务器指的是接收更新文件的服务器。指定同步服务器指的是根据服务器中预存的同步服务器列表确定的需要进行文件同步的同步服务器。例如根据服务器a中预存的同步服务器列表确定的需要进行文件同步的同步服务器为服务器b、服务器c和服务器d,那么服务器b、服务器c和服务器d均为指定的同步服务器。
示例的,服务器生成公钥私钥密钥对,并将公钥添加到同步服务器可采用如下的技术方案:服务器生成ssh公钥私钥密钥对,命令行ssh-keygen,如ssh-keygen-trsa-c"sshdescription"-f~/.ssh/libsync_rsa,libsync_rsa为指定的公私钥名,以免跟已有的ssh公私钥名冲突,在~/.ssh目录下会生成公钥libsync_rsa.pub和私钥libsync_rsa两文件。将公钥添加到同步服务器,执行命令ssh-copy-id,指定公钥文件,如ssh-copy-id-i~/.ssh/libsync_rsa.pubuser@dest_ip,如果是第一次添加,在同步服务器上会生成一个authorized_keys文件,内容为公钥文件内容,否则是追加到authorized_keys文件。将ssh私钥添加到本地,执行命令ssh-add,如ssh-add~/.ssh/libsync_rsa。
s102:服务器按照设定的网络协议,利用公私钥验证的方式,建立所述服务器与所述同步服务器之间的信息传输通道。
可选的,在本发明实施例中,所述网络协议包括:ssh。其中,ssh为一种网络协议,用于计算机间的加密登录。
s103:利用预设的同步工具,通过所述信息传输通道将所述服务器中的更新文件同步至所述同步服务器。
可选的,在本发明实施例中,所述同步工具包括:rsync。rsync通过自身的diff算法,同步的是更新部分,并不会将所有文件都复制过去,同步速度特别快。
本发明第一实施例提供的文件同步方法,利用公私钥验证方式实现信息传输通道的无密码连接,再利用同步工具通过信息传输通道将服务器中的更新文件同步至同步服务器,在进行文件同步时不需要添加配置文件,解决了现有技术中当采用daemon模式进行文件同步时配置繁琐的问题,同时不需要人工输入密码即能建立服务器与同步服务器之间的信息传输通道。
根据本发明的第二实施例,提供了一种文件同步方法,应用于服务器。图2为本发明第二实施例中文件同步方法的流程示意图,如图2所示,本发明第二实施例的文件同步方法,包括以下步骤:
s201:服务器生成公钥私钥密钥对,并将公钥添加到指定的同步服务器。
s202:服务器按照设定的网络协议,利用公私钥验证的方式,建立所述服务器与所述同步服务器之间的信息传输通道。
s203:利用预设的同步工具,通过所述信息传输通道将所述服务器中的更新文件同步至所述同步服务器。
s204:获取所述更新文件在所述同步服务器中的同步结果,当所述同步结果为同步未成功时,通过所述信息传输通道将所述更新文件重传至所述同步服务器。
所述重传包括立刻重传和延后重传。其中,立刻重传指的是当同步结果为同步未成功时,立刻将更新文件重传至所述同步服务器;延后重传指的是当同步结果为同步未成功时,等待预设时间(例如10分钟)后再将更新文件重传至所述同步服务器。
可选的,在本发明实施例中,当同步结果为同步未成功时,通过信息传输通道将更新文件立刻重传至所述同步服务器;当同步结果为同步成功时,根据同步服务器列表确定下一个同步服务器,建立所述服务器与下一个同步服务器之间的信息传输通道,并进行文件同步。
可选的,在本发明实施例中,当同步结果为同步未成功时,通过信息传输通道将更新文件延后重传至所述同步服务器;当同步结果为同步成功时,根据同步服务器列表确定下一个同步服务器,建立所述服务器与下一个同步服务器之间的信息传输通道,并进行文件同步。
可选的,在本发明实施例中,当同步结果为同步未成功时,通过信息传输通道将更新文件立刻重传至所述同步服务器,当立刻重传结果为同步成功时,根据同步服务器列表确定下一个同步服务器,建立所述服务器与下一个同步服务器之间的信息传输通道,并进行文件同步;当立刻重传结果为同步未成功时,通过信息传输通道将更新文件延后重传至所述同步服务器,当延后重传结果为同步成功时,根据同步服务器列表确定下一个同步服务器,建立所述服务器与下一个同步服务器之间的信息传输通道,并进行文件同步。
可选的,在本发明实施例中,在通过所述信息传输通道将所述更新文件重传至所述同步服务器之后,还包括:当重传未成功时,记录所述同步服务器的地址及所述更新文件,并按照预设的方式进行反馈,以便相关工作人员进行修复或人工重传。其中,预设的方式包括但不限于为邮件。
本发明第二实施例提供的文件同步方法,不仅能利用公私钥验证方式实现信息传输通道的无密码连接,还可以利用同步工具通过信息传输通道将服务器中的更新文件同步至同步服务器,解决了现有技术中当采用daemon模式进行文件同步时配置繁琐的问题;而且当服务器中有文件更新时,都能将更新文件实时同步到所有需要进行文件同步的指定的同步服务器中,还可以基于对同步结果的监控进行重传,确保文件同步成功。
根据本发明的第三实施例,提供了一种文件同步方法,应用于服务器。图3为本发明第三实施例中文件同步方法的流程示意图,如图3所示,本发明第三实施例的文件同步方法,包括以下步骤:
s301:服务器生成公钥私钥密钥对,并将公钥添加到指定的同步服务器。
s302:服务器按照设定的网络协议,利用公私钥验证的方式,建立所述服务器与所述同步服务器之间的信息传输通道。
s303:利用预设的同步工具,通过所述信息传输通道将所述服务器中的更新文件同步至所述同步服务器,同时将所述更新文件在所述同步服务器中的同步目录发送至所述同步服务器。
也就是说,服务器利用预设的同步工具(例如rsync),将更新文件、更新文件在同步服务器中的同步目录通过服务器与同步服务器之间的信息传输通道同时发送至同步服务器。示例的,rsync通过自身的diff算法,同步的是更新部分,并不会所有文件都复制过去,同步速度特别快。如执行:rsync-avz-essh–delete–excludeexcfilesrcpathuser@dest_ip:rsync_dir/,其中,srcpath为发送端文件目录(即更新文件),dest_ip为接收端服务器ip,user为登录账号,rsync_dir为文件同步目录(即更新文件在同步服务器中的同步目录),delete表示如果发送端有删除文件,接收端也要删除,excludeexcfile表示不被同步过去的文件或目录,如把.git目录过滤掉。
本发明第三实施例提供的文件同步方法,不仅能利用公私钥验证方式实现信息传输通道的无密码连接,利用同步工具通过信息传输通道将服务器中的更新文件同步至同步服务器,解决了现有技术中当采用daemon模式进行文件同步时配置繁琐的问题;而且可以在信息传输通道中将更新文件在同步服务器中的同步目录发送至所述同步服务器,也就是说,同步目录不需要在配置文件中进行配置,修改更加灵活。
根据本发明的第四实施例,提供了一种文件同步方法,应用于服务器。图4为本发明第四实施例中文件同步方法的流程示意图,如图4所示,本发明第四实施例的文件同步方法,包括以下步骤:
s401:服务器生成公钥私钥密钥对,并将公钥添加到指定的同步服务器。
s402:接收所述同步服务器利用所述公钥加密后的数据,利用所述公钥私钥密钥对中的私钥对所述数据解密,并将解密后的数据发送至所述同步服务器。
可选的,在本发明实施例中,在接收所述同步服务器利用所述公钥加密后的数据之前,还包括:向所述同步服务器发送加密指令,以指示所述同步服务器对预设的数据利用所述公钥进行加密。
s403:当接收到所述同步服务器发送的连接指令后,建立所述服务器与所述同步服务器之间的信息传输通道。
s404:利用预设的同步工具,通过所述信息传输通道将所述服务器中的更新文件同步至所述同步服务器。
本发明第四实施例提供的文件同步方法,利用公私钥加解密的方式实现信息传输通道的无密码连接,同时利用同步工具通过信息传输通道将服务器中的更新文件同步至同步服务器,解决了现有技术中当采用daemon模式进行文件同步时配置繁琐的问题,同时本发明的技术方案不需要人工输入密码即能建立服务器与同步服务器之间的信息传输通道。
本发明的第五实施例,提供了一种文件同步装置,应用于服务器。图5为本发明第五实施例中文件同步装置的结构示意图,如图5所述,本发明第五实施例的文件同步装置包括公钥私钥密钥对生成处理模块50、信息传输通道建立模块52及文件同步模块54,以下对各模块进行详细的说明。
所述公钥私钥密钥对生成处理模块50,用于生成公钥私钥密钥对,并将公钥添加到指定的同步服务器。
所述信息传输通道建立模块52,用于按照设定的网络协议,利用公私钥验证的方式,建立所述服务器与所述同步服务器之间的信息传输通道。
作为一种具体实施方式,所述网络协议包括ssh。
作为一种具体实施方式,所述信息传输通道建立模块52具体用于:
接收所述同步服务器利用所述公钥加密后的数据,利用所述公钥私钥密钥对中的私钥对所述数据解密,并将解密后的数据发送至所述同步服务器;
当接收到所述同步服务器发送的连接指令后,建立所述服务器与所述同步服务器之间的信息传输通道。
所述文件同步模块54,用于利用预设的同步工具,通过所述信息传输通道将所述服务器中的更新文件同步至所述同步服务器。
可选的,所述文件同步模块54还用于:将所述更新文件在所述同步服务器中的同步目录发送至所述同步服务器,可以在信息传输通道中将更新文件在同步服务器中的同步目录发送至所述同步服务器,也就是说,同步目录不需要在配置文件中进行配置,修改更加灵活。
作为一种具体实施方式,所述同步工具包括rsync。
可选的,本发明第五实施例所述的文件同步装置还包括同步结果获取模块:所述同步结果获取模块,用于获取所述更新文件在所述同步服务器中的同步结果;所述文件同步模块,用于当所述同步结果为同步未成功时,通过所述信息传输通道将所述更新文件重传至所述同步服务器,本发明的技术方案能够基于对同步结果的监控进行重传,确保文件同步成功。
所述重传包括立刻重传和延后重传。其中立刻重传指的是当同步结果为同步未成功时,立刻将更新文件重传至所述同步服务器;延后重传指的是当同步结果为同步未成功时,等待预设时间(例如10分钟)后再将更新文件重传至所述同步服务器。
可选的,本发明第五实施例所述的文件同步装置还包括反馈模块:所述反馈模块,用于当重传未成功时,记录所述同步服务器的地址及更新文件,并按照预设的方式进行反馈,以便相关工作人员进行修复或人工重传。
本发明第五实施例提供的文件同步装置,利用公私钥验证方式实现信息传输通道的无密码连接,再利用同步工具通过信息传输通道将服务器中的更新文件同步至同步服务器,解决了现有技术中当采用daemon模式进行文件同步时配置繁琐的问题,同时本发明的技术方案不需要人工输入密码即能建立服务器与同步服务器之间的信息传输通道。
本发明第六实施例,提供了一种文件同步设备。图6为本发明第六实施例中文件同步设备的结构示意图,如图6所示,文件同步设备包括:存储器62、处理器64及存储在所述存储器62上并可在所述处理器64上运行的计算机程序,所述计算机程序被所述处理器执行时实现如下步骤:服务器生成公钥私钥密钥对,并将公钥添加到指定的同步服务器;服务器按照设定的网络协议,利用公私钥验证的方式,建立所述服务器与所述同步服务器之间的信息传输通道;
利用预设的同步工具,通过所述信息传输通道将所述服务器中的更新文件同步至所述同步服务器。更加具体的实现方式如第一实施例至第四实施例所述,在此不再赘述。
本发明第七实施例还提供了一种计算机可读存储介质,所述存储介质上存储有计算机程序,所述计算机程序被处理器执行时实现如下步骤:服务器生成公钥私钥密钥对,并将公钥添加到指定的同步服务器;服务器按照设定的网络协议,利用公私钥验证的方式,建立所述服务器与所述同步服务器之间的信息传输通道;利用预设的同步工具,通过所述信息传输通道将所述服务器中的更新文件同步至所述同步服务器。更加具体的实现方式如第一实施例至第四实施例所述,在此不再赘述。其中,计算机可读存储介质包括但不限于为:rom、ram、磁盘或光盘等。
为了更加详细的说明本发明实施例,给出实例1,图7为本发明实施例实例1中文件同步方法的流程示意图,如图7所示,实例1包括以下步骤:
1、服务器(例如服务器a)生成ssh公钥私钥密钥对(在图7中称为公私钥对),命令行ssh-keygen,如ssh-keygen-trsa-c"sshdescription"-f~/.ssh/libsync_rsa,libsync_rsa为指定的公私钥名,以免跟已有的ssh公私钥名冲突,在~/.ssh目录下会生成公钥libsync_rsa.pub和私钥libsync_rsa两文件。
2、将生成的公钥添加到所有同步服务器(例如服务器b、服务器c和服务器d),执行命令ssh-copy-id,指定公钥文件,如ssh-copy-id-i~/.ssh/libsync_rsa.pubuser@dest_ip,如果是第一次添加,在同步服务器上会生成一个authorized_keys文件,内容为公钥文件内容,否则是追加到authorized_keys文件。
3、将ssh私钥添加到本地(即服务器a),执行命令ssh-add,如ssh-add~/.ssh/libsync_rsa。
4、若服务器a有文件更新,触发文件同步操作,执行5。
5、根据服务器列表(即同步服务器列表,如ip列表)依次对所有同步服务器(在实例1中指的是服务器b、服务器c和服务器d)进行文件同步。例如当对服务器b进行文件同步时,执行命令rsync,这时rsync直接走ssh通道(即服务器a利用公私钥验证的方式建立的服务器a与服务器b之间的信息传输通道),不需要输入服务器b的登录密码即执行文件同步操作,rsync通过自身的diff算法,同步的是更新部分,并不会所有文件都复制过去,同步速度特别快。如执行:rsync-avz-essh–delete–excludeexcfilesrcpathuser@dest_ip:rsync_dir/,其中,srcpath为发送端文件目录,dest_ip为接收端服务器ip,user为登录账号,rsync_dir为文件同步目录,delete表示如果发送端有删除文件,接收端也要删除,excludeexcfile表示不被同步过去的文件或目录,如把.git目录过滤掉。
6、监听rsync同步结果,获取$?值,如ret=$?,成功返回0,失败为非0。如果成功,继续rsync同步到根据服务器列表确定的下一个同步服务器(即服务器c),执行5;否则执行一次立刻重传(在图7中称为重新同步)。
7、监听立刻重传结果,如果成功,执行5;否则,再尝试一次延后重传(在图7中称为延后同步),如10分钟后再执行对当前同步服务器的同步。
8、如延后重传成功,执行5;否则,记录服务器和文件目录信息,有可能只需要再同步部分目录。
9、汇总同步失败信息,发邮件通知相关人员,服务器自身同步结束,相关人员进行技术上的修复,对失败的同步信息再执行一遍。
在本发明所提供的实施例中,应该理解到,所揭露的装置和方法,也可以通过其它的方式实现。以上所描述的装置实施例仅仅是示意性的,例如,附图中的流程图和框图显示了根据本发明的多个实施例的装置、方法和计算机程序产品的可能实现的体系架构、功能和操作。在这点上,流程图或框图中的每个方框可以代表一个模块、程序段或代码的一部分,所述模块、程序段或代码的一部分包含一个或多个用于实现规定的逻辑功能的可执行指令。也应当注意,在有些作为替换的实现方式中,方框中所标注的功能也可以以不同于附图中所标注的顺序发生。例如,两个连续的方框实际上可以基本并行地执行,它们有时也可以按相反的顺序执行,这依所涉及的功能而定。也要注意的是,框图和/或流程图中的每个方框、以及框图和/或流程图中的方框的组合,可以用执行规定的功能或动作的专用的基于硬件的系统来实现,或者可以用专用硬件与计算机指令的组合来实现。
另外,在本发明各个实施例中的各功能模块可以集成在一起形成一个独立的部分,也可以是各个模块单独存在,也可以两个或两个以上模块集成形成一个独立的部分。
总之,以上所述仅为本发明的较佳实施例而已,并非用于限定本发明的保护范围。凡在本发明的精神和原则之内,所作的任何修改、等同替换、改进等,均应包含在本发明的保护范围之内。