sersync + rsync 服务器同步

现在常用的同步软件

单向同步:

rsync一般是server到client

sersync一般是client到server,sersync可以做到实时的监控

sersync+rsync 一般是多台服务器之间的

 双向同步:

unison

sersync 监控系统文件变化 然后 rsync 实时同步

如果系统文件没有变化,不会同步

执行同步进程的时候,应该先执行客户端的rsync 再执行 sersync ,而且配置文件中需同步的目录,客户端必须有。

sersync + rsync 服务器同步_第1张图片


例如A 服务器向B 服务器同步数据

A/B都需要安装rsync,而且B需要开rsync守护进程

1. 在A上安装sersync软件

/usr/local/sersync

下面有个配置文件

confxml.xml 


2. B服务器配置rsync

首先得安装rsync

yum -y install rsync

vi /etc/rsyncd.conf

uid=root
gid=root
max connections=36000
use chroot=no
log file=/var/log/rsyncd.log
pid file=/var/run/rsyncd.pid
lock file=/var/run/rsyncd.lock

[website]
path=/www/htdocs
comment = website files
ignore errors = yes
read only = no
hosts allow = 192.168.1.4/24
hosts deny = *

开启rsync守护进程

/usr/bin/rsync --daemon

开启防火墙端口

vi /etc/sysconfig/iptables

#添加

-A RH-Firewall-1-INPUT -m state --state NEW -m tcp -p tcp -s 192.168.1.4 --dport 873 -j ACCEPT

# 注意,如果报连接失败,不能同步,建议 /etc/init.d/iptables stop

开启rsync服务

/usr/bin/rsync --daemon

3. 配置A 服务器上的confxml.xml 

<?xml version="1.0" encoding="ISO-8859-1"?>
<head version="2.5">
    <host hostip="localhost" port="8008"></host>
    <debug start="false"/>
    <fileSystem xfs="false"/>    

    <filter start="false">

  <exclude expression="^public/img/*"></exclude>
        <exclude expression="^public/upload/*"></exclude>
        <exclude expression="^public/www/*"></exclude>  // 上面三行分别是过滤掉那几个目录,不同步这几个目录,需要把filter的start设置为true

    </filter>
    <inotify>
        <delete start="true"/>
        <createFolder start="true"/>
        <createFile start="false"/>
        <closeWrite start="true"/>
        <moveFrom start="true"/>
        <moveTo start="true"/>
        <attrib start="false"/>
        <modify start="false"/>
    </inotify>


    <sersync>
        <localpath watch="/www/htdocs/">
            <remote ip="192.168.0.58" name="website"/><!---跟上面红色标记相同-->
        </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/website_fail_log.sh" timeToExecute="60"/><!--default every 60mins execute once-->
        <crontab start="true" schedule="600"><!--600mins-->
            <crontabfilter start="false"> // 设置过滤后,相应的这里也需要设置为true 
                <exclude expression="public/img/*"></exclude>
                <exclude expression="public/upload/*"></exclude>
                <exclude expression="public/www/*"></exclude>
            </crontabfilter>
        </crontab>
        <plugin start="false" name="command"/>
    </sersync>
</head>

开启A 服务器上sersync 守护进程

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

# /usr/local/sersync/GNU-Linux-x86/sersync2 -n 4 -o /usr/local/sersync/GNU-Linux-x86/website.xml -r -d

# 设置了过滤文件后,执行的守护进程不能加参数 -r 

4. A/B 服务器需要解析

192.168.1.4 A
192.168.1.5 B


注意:

有的sftp上传工具,如果上传大的文件,可能会导致只同步一部分的问题,可以考虑更换sftp上传工具解决哦


<debug start="false">
修改为true开启调试模式,可以很方便的查看,sersync2的执行过程

<inotify></inotify>
<createFile start="false"/>  关闭createFile的事件监听,只开启closewrite事件

<crontab start="false" schedule="600">
这个crontab的含义是,600分钟对文件做一次整体同步,这个在大型网站应用是要关闭的。

开启rsync  --daemon后,确保配置文件正确,就不需要重启它了。

杀死进程可以使用pkill sersync2  ,   pkill rsync ,快捷点


你可能感兴趣的:(server,File,服务器,filter,encoding,website)