同步的服务器端配置
mkdri /data/filedir chown -R rsync:rsync /data/filedir yum install rsync -y 创建配置文件 [root@node1 filedir]# vim /etc/rsyncd.conf ##rsync.conf config start uid = rsync gid = rsync use chroot = no max connetctions = 200 timeout = 100 pid file = /var/run/rsyncd.pid lock file = /var/run/rsync.lock log file = /var/log/rsyncd.log [backup] path = /data/filedir ignore errors read only = false list = false hosts allow = 192.168.193.129 auth users = rsync_backup secrets file = /etc/rsync.password ##rsync config end 创建密码文件: echo "rsync_backup:123456">/etc/rsync.password chmod 600 /etc/rsync.password 启动服务: rsync --daemon 查看: [root@node1 filedir]# netstat -ntulp | grep rsync tcp 0 0 0.0.0.0:873 0.0.0.0:* LISTEN 1631/rsync tcp 0 0 :::873 :::* LISTEN 1631/rsync 设置开机自启rsync服务: vim /etc/rc.local 添加 # rsync server progress /usr/bin/rsync --daemon
同步客户端配置:
配置密码文件: echo "123456">/etc/rsync.password chmod 600 /etc/rsync.password 手工测试数据推送: [root@node2 ~]# rsync -avzP /etc/hosts rsync_backup@192.168.193.128::backup --password-file=/etc/rsync.password sending incremental file list sent 26 bytes received 8 bytes 22.67 bytes/sec total size is 180 speedup is 5.29 在同步服务器端进行查看: [root@node1 filedir]# pwd /data/filedir [root@node1 filedir]# cat hosts 127.0.0.1 localhost localhost.localdomain localhost4 localhost4.localdomain4 ::1 localhost localhost.localdomain localhost6 localhost6.localdomain6 192.168.193.129 node2 客户端的/etc/hosts文件已经同步至备份的服务器中。
在同步的客户端部署sersync服务
tar zxvf sersync2.5.4_64bit_binary_stable_final.tar.gz -C /usr/local/ cd /usr/local/ mv GNU-Linux-x86 sersync mkdir -p conf bin logs mv confxml.xml conf/ mv sersync2 bin/sersync echo ‘export PATH=$PATH:/usr/local/sersync/bin‘>>/etc/profile source /etc/profile cd conf/ cp -a confxml.xml{,.`date +%F`} #复制配置文件 软件目录结构如下: [root@node2 sersync]# tree . ├── bin │ └── sersync ├── conf │ ├── confxml.xml │ └── confxml.xml.2017-06-19 └── logs └── rsync_fail_log.sh #修改配置文件 #第一部分:设置本地监控的同步目录、远端服务器、备份模块(备份模块在远端服务器/etc/rsyncd.conf定义) <localpath watch="/data/tongbu"> <remote ip="192.168.193.128" name="backup"/> #<!--<remote ip="192.168.8.39" name="tongbu"/>--> #<!--<remote ip="192.168.8.40" name="tongbu"/>--> </localpath> #第二部分:设置认证部分、服务器端的认证用户与密码文件存放位置(在远端服务器/etc/rsyncd.conf定义) <rsync> <commonParams params="-artuz"/> <auth start="true" users="rsync_backup" passwordfile="/etc/rsync.password"/> <userDefinedPort start="false" port="874"/><!-- port=874 --> <timeout start="true" time="100"/><!-- timeout=100 --> <ssh start="false"/> </rsync> 类似于 rsync -avzP /etc/hosts rsync_backup@192.168.193.128::backup --password-file=/etc/rsync.password #第三部分:设置同步失败日志存放位置,当同步失败时记录下来,并且每60分钟对失败的log进行重新同步 <failLog path="/usr/local/sersync/logs/rsync_fail_log.sh" timeToExecute="60"/><!--default every 60mins execute once-->
修改完成后,完整的配置文件如下:
[root@node2 conf]# more 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="(.*)\.svn"></exclude> <exclude expression="(.*)\.gz"></exclude> <exclude expression="^info/*"></exclude> <exclude expression="^static/*"></exclude> </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="/data/tongbu"> <remote ip="192.168.193.128" name="backup"/> <!--<remote ip="192.168.8.39" name="tongbu"/>--> <!--<remote ip="192.168.8.40" name="tongbu"/>--> </localpath> <rsync> <commonParams params="-artuz"/> <auth start="true" users="rsync_backup" passwordfile="/etc/rsync.password"/> <userDefinedPort start="false" port="874"/><!-- port=874 --> <timeout start="true" time="100"/><!-- timeout=100 --> <ssh start="false"/> </rsync> <failLog path="/usr/local/sersync/logs/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> <plugin name="command"> <param prefix="/bin/sh" suffix="" ignoreError="true"/> <!--prefix /opt/tongbu/mmm.sh suffix--> <filter start="false"> <include expression="(.*)\.php"/> <include expression="(.*)\.sh"/> </filter> </plugin> <plugin name="socket"> <localpath watch="/opt/tongbu"> <deshost ip="192.168.138.20" port="8009"/> </localpath> </plugin> <plugin name="refreshCDN"> <localpath watch="/data0/htdocs/cms.xoyo.com/site/"> <cdninfo domainname="ccms.chinacache.com" port="80" username="xxxx" passwd="xxxx"/> <sendurl base="http://pic.xoyo.com/cms"/> <regexurl regex="false" match="cms.xoyo.com/site([/a-zA-Z0-9]*).xoyo.com/images"/> </localpath> </plugin> </head>
客户端启动sersync服务:
sersync -r -d -o /usr/local/sersync/conf/confxml.xml
客户端进行验证:
cd /data/tongbu/ for i in `seq 100`;do mkdir $i;done [root@node2 tongbu]# ls 1 12 16 2 23 27 30 34 38 41 45 49 52 56 6 63 67 70 74 78 81 85 89 92 96 10 13 17 20 24 28 31 35 39 42 46 5 53 57 60 64 68 71 75 79 82 86 9 93 97 100 14 18 21 25 29 32 36 4 43 47 50 54 58 61 65 69 72 76 8 83 87 90 94 98 11 15 19 22 26 3 33 37 40 44 48 51 55 59 62 66 7 73 77 80 84 88 91 95 99
在同步的服务器上进行查看:
[root@node1 filedir]# cd /data/filedir [root@node1 filedir]# ls 1 12 16 2 23 27 30 34 38 41 45 49 52 56 6 63 67 70 74 78 81 85 89 92 96 hosts 10 13 17 20 24 28 31 35 39 42 46 5 53 57 60 64 68 71 75 79 82 86 9 93 97 100 14 18 21 25 29 32 36 4 43 47 50 54 58 61 65 69 72 76 8 83 87 90 94 98 11 15 19 22 26 3 33 37 40 44 48 51 55 59 62 66 7 73 77 80 84 88 91 95 99 验证成功!!!
命令参数说明
Sersync参数 | 说明 |
./sersync -r | -r参数作用是:开启实时监控的之前对主服务器目录与远程目标机器的目录进行一次整体同步;如果需要将sersync运行前,主服务器目录下已经存在的所有文件或目录全部同步到远端,则要以 -r参数运行sersync,将本地与远程整体同步一次; 提别说明:如果设置了过滤器,即在xml文件中,filter为true,则暂时不能使用-r参数进行整体同步; |
./sersync -o xx.xml | 不指定 -o参数: sersync使用sersync可执行文件目录下的默认配置文件confxml.xml 指定 -o 参数:可以指定多个不同的配置文件,从而实现sersync多进程多实例的数据同步 |
./sersync -n num | -n参数为:指定默认的线程池的线程总数; 例如: ./sersync -n 5 则指定线程总数为5,如果不指定,默认启动线程池数量是10,如果cpu使用过高,可以通过该参数调低,如果机器配置较高,可以调高默认的线程总数,提升同步效率; |
./sersync -d | -d参数为:后台服务,通常情况下使用 -r参数对本地到远端整体同步一遍后,在后台运行此参数启动守护进程实时同步;在第一次整体同步时,-d 和 -r参数经常会联合使用; |
./sersync -m pluginName | -m参数:不进行同步,只运行插件 ./sersync -m pluginName 例如:./sersync -m command,则在监控到事件后,不对远程目标服务器进行同步,而是直接运行command插件 |
组合命令使用说明: | |
-n 8 -o liubl.xml -r -d | 多个参数可以配合使用,例如:./sersync -n 16 -o config.xml -r -d 表示设置线程池工作线程为16个,指定liubl.xml作为配置文件,在实时监控前 做一次整体同步,以守护进程方式在后台运行; |
./sersync --help | 很遗憾,它没有查看帮助(需要的话2条路,要么看源代码,要么自测求验证) |
sersync服务配置文件参数详解:
1.xml配置文件的注释不用“#”,而是<!-- 中间是注释内容 --> 2.Debug开启开关:<debug start="false"/> 设置为true,表示开启debug模式,会在sersync正在运行的控制台打印inotify时间与rsync同步命令; 3.XFS文件系统开关:<fileSystem xfs="false"/> 对于xfs文件系统的用户,需要将这个选项开启,才能使用sersync正常工作; 4.filter文件过滤功能 <filter start="false"> <exclude expression="(.*)\.svn"></exclude> <exclude expression="(.*)\.gz"></exclude> <exclude expression="^info/*"></exclude> <exclude expression="^static/*"></exclude> </filter> 排除一些文件,不需要 5.inotify的状态 <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> 对于大多数应用,可以尝试把createFile(监控文件事件选项)设置为false来提高性能,减少rsync通讯; 因为拷贝文件到监控目录会产生create事件与close_write事件,所以如果关闭create事件,只监控文件拷贝结束时的时间close_write,同样可以实现文件完整同步; 注意:强将creatFolder保持为true,如果将createFolder设为false,则不会对产生的目录进行监控,该目录下的子文件与子目录也不会被监控;所以除非特殊需要,请开启; 默认情况下对创建文件(目录)事件与删除文件(目录)事件都进行监控,如果项目中不需要删除远程目标服务器的文件(目录),则可以将delete参数设置为false,则不对删除事件进行监控;
本文出自 “hello world” 博客,请务必保留此出处http://nxyboy.blog.51cto.com/10511646/1940413
原文地址:http://nxyboy.blog.51cto.com/10511646/1940413