球球看世界

两台SVN服务器同步文件

andy.zhang 2017年03月30日 Linux 764 评论关闭

准备两个服务器。如192.168.1.80,192.168.1.81

1,两台服务器要做的

      a.先用yum install subversion -y

      b.mkdir /svn_data    #建立svn保存目录

      c.svnadmin create /svn_data     #建立svn项目文件,里面创建好后,会包含配置文件。

      d.修改配置文件

         1)vi /svn_data/conf/svnserve.conf,将以下语句前面注释的取消

                 password-db = passwd

                 authz-db = authz

         2) vi /svn_data/conf/passwd,在[user]下添加一下用户和密码,如下

                  andy = 1380238

                   test = 123!@#qwe

        3) vi /svn_data/authz,修改项目。如下:

                    [aliases】

                    [groups]

                            admin = andy

                            jeesns_rw = test

                    [/]

                            @admin = rw

                    [/jeesns]

                             @jeesns_rw =rw

        4)/etc/init.d/svnserv start

        5)在防火墙上开放3690端口

        至此,两台svn服务器搭建完成。

         

2,在备份的机器上搭建rsync服务器,本例中,在192.168.1.81上搭建

      yum install rsync xinetd -y    #xinetd是一个进程管理软件,我一般用它来管理rsync服务

      vi /etc/xinetd.d/rsync,把里面disable = yes 改成no,保存退出。

      chkconfig xinetd on

      vi /etc/rsyncd.conf  #建立rsync服务的配置文件,如下内容:

                uid = root

                gid = root

                max connections = 2  #最大连接数,可以根据需要加大

                strict modes = yes

                port = 873

                pid file = /var/run/rsyncd.pid

                lock file = /var/run/rsync.lock

                log file = /var/log/rsyncd.log

                secrets file = /etc/rsync.pas  #同步密码文件,安全考虑,有那个auth users=就必须有这个,文件权限只能是600

                [svn]

                path = /svn_data/

                comment = SVN SERVER

                ignore errors

                list = no

                read only =no

                    auth users = zxq

        之后,新建一个包含用户和密码的文件,和配置文件里指定的名字一样

        vi /etc/rsync.pas #内容如下:注意,在服务器端密码文件必须带用户名

             zxq:1380238

        chmod 600 /etc/rsync.pas

     完成之后,在防火墙开放873端口就可以启动rsync服务了  

      /etc/init.d/xinetd start

3,在主服务器上安装rsync这个命令先进行手工测试,

      yum install rsync -y

      vi /etc/rsync.pas   #密码文件,内容是服务器端文件冒号后面全部

         1380238

      rsync -az --delete --password-file=/etc/rsync.pas /svn_data/* zxq@192.168.1.81::svn

      这里,没有报错的话,基本上,就完成了同步。

4,在主服务器上安装sersync,令文件自动同步。

      这是阿里一个开源项目,软件请自行下载。我的百度云盘里有,可加我联系方式要。这里不放出来,因为很快就会过期的。

      更改一下环境变量:

            vi /etc/sysctl.conf #添加以下代码

            fs.inotify.max_queued_events=99999999

            fs.inotify.max_user_watches=99999999

            fs.inotify.max_user_instances=65535

    按:x保存退出。

      tar -zxvf sersync2.5.4_64bit_binary_stable_final.tar.gz

      mv GNU-Linux-x86 /usr/local/sersync

      之后,再修改一下sersync的配置文件

      vi /usr/local/sersync/confxml.xml

      

 <sersync>

        <localpath watch="/opt/tongbu">

            <remote ip="127.0.0.1" name="tongbu1"/>

            <!--<remote ip="192.168.8.39" name="tongbu"/>-->

            <!--<remote ip="192.168.8.40" name="tongbu"/>-->

        </localpath>

        <rsync>

            <commonParams params="-artuz"/>

            <auth start="false" users="root" passwordfile="/etc/rsync.pas"/>

            <userDefinedPort start="false" port="874"/><!-- port=874 -->

            <timeout start="false" time="100"/><!-- timeout=100 -->

            <ssh start="false"/>

        </rsync>

        <failLog path="/tmp/rsync_fail_log.sh" timeToExecute="60"/><!--default every 60mins execute once-->

        <crontab start="false" schedule="600"><!--600mins-->

            <crontabfilter start="false">

                <exclude expression="*.php"></exclude>

                <exclude expression="info/*"></exclude>

            </crontabfilter>

        </crontab>

        <plugin start="false" name="command"/>

    </sersync>

    以上,红色的需要改,false全改在true

    /opt/tongbu,这个是需要同步的目录,改成对应的就可以,在这里需要改成/svn_data

   root 是同步时的用户名,这里改成zxq,/etc/rsync.pas,这个是同步密码文件,刚好本例不用改,如果路径不同,就需要改了。

   由于这个服务,没有后台服务程序,用命令行调用就行了。所以,我把命令行写进/etc/rc.loca,保证服务器重启时,命令也有运行

   vi /etc/rc.local   #加入如下内容

       /usr/local/sersync/sersync2 -d -r -o  /usr/local/sersync/confxml.xml

   然后,再写一个脚本监控一下,内容如下:

      

#!/bin/sh

sersync="/usr/local/sersync/sersync2"

confxml="/usr/local/sersync/confxml.xml"

status=$(ps aux |grep 'sersync2'|grep -v 'grep'|wc -l)

if [ $status -eq 0 ];

then

$sersync -d -r -o $confxml &

else

exit 0;

文件名,请自由改,在这里,我保存在/root/script/check_sersync.sh,为保证服务的正常运行,我在crontab里添加如下

*/5 * * * * sh ~/script/check_sersync.sh


最后,为防止在主服务器上添加用户或项目,从服务器上不识别,在从服务器的crontab里添加了如下命令。

(注svn服务,对于用户和项目的配置,必须重启服务才生效)

*/5 * * * * /etc/init.d/svnserve restart


到此,两个svn服务器同步完成。


发表评论

必填

选填

选填

◎欢迎参与讨论,请在这里发表您的看法、交流您的观点。

球球看世界

我的微信号:zxq138888888 (左侧二维码扫一扫)欢迎添加!

家用nas软件方案