Posted on 2016-06-30 09:23 shihuc 阅读(10030) 评论(0) 编辑 收藏
rsync是远程文件同步协议,在linux系统下,操作服务器之间的文件同步,是非常方便高效的。
但是,简单的rsync操作,往往需要和用户交互,需要用户输入密码,这个对于结合应用系统使用,比如Java调用linux指令实现同步的话,就不是很方便。
当然,也许读者会说,这个免密码操作还不简单,rsync+ssh,利用ssh的安全校验机制来传输文件,然后将ssh设置为免密码登录,岂不是非常简单。
对的,从这个角度,的确是很简单。至于ssh如何实现免密码登录,就不多说,网上相关的介绍非常多。这里,我需要说的是,ssh在生产环境下,服务器之间往往是不允许开通的,因为结合ssh可以实现服务器之间的跳转,用户就很方便实现控制这些机器。
所以,rsync+ssh的方式,往往可以在测试环境下,或者不对外提供网络访问权限的场景下,还是可以采用的。
这里,我要说的是,rsync以daemon的方式启动,通过配置文件设定账号密码,在客户端通过设置RSYNC_PASSWORD环境变量实现密码自动输入,就可以免去提示用户输入密码这个交互操作,方便Java等应用程序调用rsync指令实现文件同步。
首先说下我这里的场景:我有两个机器,一个server,一个client。在server端配置rsync以rsync daemon的方式启动。
server