利用rsync搭建服务器之间文件同步

    由于外网运行系统需要同时好几台机器提供服务,这样就有个问题是程序代码发布后,这些服务器怎么能比较及时的更新代码。这样就需要一个服务器之间文件同步的机制。在Unix下有一个比较好的工具rsync。具体场景为代码发布程序到服务器A,其他服务器B、C、D需要比较及时的从服务器A获取更新的代码。

    整体架构是服务器A当做rsync server,其他几个服务器B、C、D定时与服务器A进行文件同步。(这些服务器的操作系统都是freeBSD)

    第一步:搭建rsync server

     1、安装 rsync 。采用ports方式安装,具体是在/usr/ports/net/rsync/ ,在该目录下make install。

     2、配置rsync server,假定IP地址为:192.168.1.92

          1)、创建目录/etc/rsyncd

          2)、在/etc/rsyncd下创建三个文件:

                 rsyncd.conf(rsyncd的配置文件),其中配置文件的说明可以查看这个rsync.conf

                 rsyncd.secrets(rsyncd的认证文件),该文件的属性是600

                 rsyncd.motd (rsyncd的登录时候欢迎信息)。

         具体rsyncd.conf配置如下:

         # Minimal configuration file for rsync daemon
         # See rsync(1) and rsyncd.conf(5) man pages for help

         # This line is required by the /etc/init.d/rsyncd script
           pid file = /var/run/rsyncd.pid  #rsyncd的运行的ID号
           port = 873  #rsyncd监听的端口号,
           address = 192.168.1.92 #rsyncd的IP地址
           uid = root #rsyncd运行的用户
           gid = wheel #rsyncd运行的用户所属的组

           use chroot = yes
           read only = yes #只读


           #limit access to private LANs
           hosts allow=192.168.1.111/255.255.255.0 #允许那些IP地址可以访问这个rsyncd服务
           hosts deny=* #拒接那些IP链接,*表示拒绝所有,这个与hosts allow一起判断

           max connections = 5 #最大链接数
           motd file = /etc/rsyncd/rsyncd.motd #欢迎界面内容

          #This will give you a separate log file
          #log file = /var/log/rsync.log

          #This will log every file transferred - up to 85,000+ per user, per sync
          #transfer logging = yes

           log format = %t %a %m %f %b #log的格式
           syslog facility = local3
           timeout = 300

           [home92] #模块,rsyncd采用模块方式来管理同步的目录,client端只需要指出需要同步的模块名称即可。
           path = /home/test  #同步时的目录
           list=yes #是否允许list
           ignore errors #忽略所有同步过程中的错误
           auth users = waden #认证的用户(必须是服务器A的系统用户)
           secrets file = /etc/rsyncd/rsyncd.secrets #waden的密码,最好不要和系统用户的密码一致。格式是用户:密码
           comment =  home 92
           exclude =   cryptmod/  et_security/  #该目录下/home/test不同步的目录

           3)、启动rsync, 需要按照daemon方式启动,/usr/local/bin/rsync --daemon --config=/etc/rsyncd/rsyncd.conf

 

           4)、可以通过命令rsync --list-only [email protected] 查看rsync服务器提供那些文件同步服务。

 

        2、搭建rsync的client端。

             1)、安装rsync

             2)、执行命令rsync -avzP  --delete [email protected]::home92  /home/waden

                     解释一下:-avzP                     

                     -a 参数,相当于-rlptgoD,-r 是递归 -l 是链接文件,意思是拷贝链接文件;-p 表示保持文件原有权限;-t 保持文件原有时间;-g 保持文件原有用户组;-o 保持文件原有属主;-D 相当于块设备文件;

                     -z 传输时压缩;
                     -P 传输进度;
                     -v 传输时的进度等信息

                     --delete: 表示在被同步的目录下的文件在服务器A同步目录没有的话,就要被删除

                      [email protected]::home92   @之前的表示账号,接下里是服务器A的地址,然后是需要同步的模块

                     执行上述命令,会出现一个输入密码的提示,输入在A服务器rsyncd.secrets的密码

             3)、为了自动能同步,需要设置一个密码文件,这样就不需要有提示输入密码的提示了。具体参数是:

                                 --password-file=rsync.password

             其中rsync.password文件的属性必须是600

            为了能自动定时去执行同步的命令,只需要写个同步命令的脚本,然后放到crontab中定时去执行就可以了。

   

 

           

        

 

你可能感兴趣的:(利用rsync搭建服务器之间文件同步)