针对本地文件的修改,自动同步到远程文件夹,远程备份很方面。研究了下大家的主流同步方案一般是

rsync+inotify和rsync+sersync, 我这里使用sersync的方案,当然大部分都是参照前人经验,感谢他们的无私。

概述

我这里的目的是为了远程同步mysql的备份文件,centos6.5 同步到另一台centos主机

使用rsync+sersync做实时同步时,用于推送文件 的服务器运行sersync服务,用于接收文件的服务器则运行rsync守护进程,简单来说就是sersync会利用rsync命令将文件推送到 rsync服务器,实际线上使用一般会把sersync作为主服务器,rsync作为镜像服务器,实现数据同步备份,web镜像等功能

所以两台机器都需要rsync, 然后有对应的写数据权限。

准备

  • 操作系统 centos6.5 x86
  • rsync yum源
  • sersync2.5_64bit
  • 推送源A 114.110.1.38 (ip均为实验伪造)
  • 接收机B 114.110.1.37

把A机器上的一个目录下文件的变化同步到B机器上,两边文件保持一致。

接收机B selinuxiptables自行设置好,rsync的端口两边要配置一致,默认是873

操作

接收机

1、 查看rsync是否安装

  1. [root@i-nzwxivja xjmysql]# rpm -aq|grep rsync
  2. rsync-3.0.6-4.el5_7.1

如果没有安装 yum install -y rsync 就行了

2、 rsync配置

  1. [root@i-nzwxivja xjmysql]# cat /etc/rsyncd.conf
  2. uid = root
  3. gid = root
  4. use chroot =no
  5. list = no
  6. log file = /var/log/rsyncd.log
  7. [rsyncmysql]
  8. path=/data/backup/xjmysql
  9. comment=rsyncmysql
  10. ignore errors
  11. read only=no
  12. list=no
  13. max connections=200
  14. timeout=600
  15. auth users=rsync
  16. secrets file=/etc/rsync.pas
  17. hosts allow=*
  18. #host deny=0.0.0.0/0
  • secrets file 这个是配置同步的密码文件的。
  • [rsynctest] 这个是配置同步模块的名称,后面会用
  • path 是配置同步的目录
  • hosts allow 是允许同步的主机 这里是测试就没有限制
  • hosts deny 拒绝同步的主机

3、 创建同步的用户与密码的文件,即上图中的secrets file这个配置选项中的文件。/etc/rsync.passwd,同进要设置这个文件的权限为600

  1. # echo "rsync:123456lzz" >> /etc/rsync.pas
  2. # chmod 600 /etc/rsync.pas

4、 创建同步的目录:即上图中path配置选项中的目录

  1. # mkdir /data/backup/xjmysql

5、 启动rsync

  1. # rsync --daemon --config=/etc/rsyncd.conf
  2. # ps -ef|grep rsync
  3. root 17521 1 0 16:39 ? 00:00:00 rsync --daemon --config=/etc/rsyncd.conf
  4. root 17529 16947 0 16:39 pts/1 00:00:00 grep rsync

接着重启一下xinetd使得配置生效

  1. # /etc/init.d/xinetd restart

这里是通过 xinetd 服务来重启rsync,也可以不用这种方式,如果没有可以用yum直接安装

6、 配置开机启动

  1. # echo "rsync --daemon --config=/etc/rsyncd.conf" >> /etc/rc.d/rc.local

推送源

1、 先到sersync 官网的地址已经不能使用了,我从网上找了一份放到其他地址, github上的源码镜像

我把二进制包下载也放到了上面

  1. # wget --no-check-certificate https://raw.githubusercontent.com/orangle/sersync/master/release/sersync2.5.4_64bit_binary_stable_final.tar.gz
  2. # mkdir /usr/local/sersync
  3. # mkdir /usr/local/sersync/conf
  4. # mkdir /usr/local/sersync/bin
  5. # mkdir /usr/local/sersync/log
  6. # tar zxvf sersync2.5.4_64bit_binary_stable_final.tar.gz
  7. # cd GNU-Linux-x86/
  8. # cp confxml.xml /usr/local/sersync/conf
  9. # cp sersync2 /usr/local/sersync/bin

2、 创建密码文件,同B服务器一样,不过这个文件只要保存一个密码就行了,不用用户名,权限也是600

  1. echo "123456lzz" >> /etc/rsync.pas
  2. chmod 600 /etc/rsync.pas

3、 配置sersync,配置文件就是上第二步复制的confxml.xml这个文中,路径在/usr/local/sersync/conf中

  1. <?xml version="1.0" encoding="ISO-8859-1"?>
  2. <head version="2.5">
  3. # 设置本地IP和端口
  4. <host hostip="localhost" port="8008"></host>
  5. # 开启DUBUG模式
  6. <debug start="false"/>
  7. # 开启xfs文件系统
  8. <fileSystem xfs="false"/>
  9. # 同步时忽略推送的文件(正则表达式),默认关闭
  10. <filter start="false">
  11. <exclude expression="(.*)\.svn"></exclude>
  12. <exclude expression="(.*)\.gz"></exclude>
  13. <exclude expression="^info/*"></exclude>
  14. <exclude expression="^static/*"></exclude>
  15. </filter>
  16. <inotify>
  17. # 设置要监控的事件
  18. <delete start="true"/>
  19. <createFolder start="true"/>
  20. <createFile start="true"/>
  21. <closeWrite start="true"/>
  22. <moveFrom start="true"/>
  23. <moveTo start="true"/>
  24. <attrib start="true"/>
  25. <modify start="true"/>
  26. </inotify>
  27. <sersync>
  28. # 本地同步的目录路径
  29. <localpath watch="/home/data">
  30. # 远程IP和rsync模块名
  31. <remote ip="114.110.1.37" name="rsyncmysql"/>
  32. <!--<remote ip="192.168.8.39" name="tongbu"/>-->
  33. <!--<remote ip="192.168.8.40" name="tongbu"/>-->
  34. </localpath>
  35. <rsync>
  36. # rsync指令参数
  37. <commonParams params="-auvzP"/>
  38. # rsync同步认证
  39. <auth start="true" users="rsync" passwordfile="/etc/rsync.pas"/>
  40. # 设置rsync远程服务端口,远程非默认端口则需打开自定义
  41. <userDefinedPort start="false" port="873"/><!-- port=874 -->
  42. # 设置超时时间
  43. <timeout start="true" time="100"/><!-- timeout=100 -->
  44. # 设置rsync+ssh加密传输模式,默认关闭,开启需设置SSH加密证书
  45. <ssh start="false"/>
  46. </rsync>
  47. # sersync传输失败日志脚本路径,每隔60会重新执行该脚本,执行完毕会自动清空。
  48. <failLog path="/usr/local/sersync/log/rsync_fail_log.sh" timeToExecute="60"/><!--default every 60mins execute once-->
  49. # 设置rsync+crontab定时传输,默认关闭
  50. <crontab start="false" schedule="600"><!--600mins-->
  51. <crontabfilter start="false">
  52. <exclude expression="*.php"></exclude>
  53. <exclude expression="info/*"></exclude>
  54. </crontabfilter>
  55. </crontab>
  56. # 设置sersync传输后调用name指定的插件脚本,默认关闭
  57. <plugin start="false" name="command"/>
  58. </sersync>
  59. # 插件脚本范例
  60. <plugin name="command">
  61. <param prefix="/bin/sh" suffix="" ignoreError="true"/> <!--prefix /opt/tongbu/mmm.sh suffix-->
  62. <filter start="false">
  63. <include expression="(.*)\.php"/>
  64. <include expression="(.*)\.sh"/>
  65. </filter>
  66. </plugin>
  67. # 插件脚本范例
  68. <plugin name="socket">
  69. <localpath watch="/opt/tongbu">
  70. <deshost ip="192.168.138.20" port="8009"/>
  71. </localpath>
  72. </plugin>
  73. <plugin name="refreshCDN">
  74. <localpath watch="/data0/htdocs/cms.xoyo.com/site/">
  75. <cdninfo domainname="ccms.chinacache.com" port="80" username="xxxx" passwd="xxx"/>
  76. <sendurl base="http://pic.xoyo.com/cms"/>
  77. <regexurl regex="false" match="cms.xoyo.com/site([/a-zA-Z0-9]*).xoyo.com/images"/>
  78. </localpath>
  79. </plugin>
  80. </head>

4、 创建同步目录:

  1. mkdir /home/data

5、 设置环境变量:

  1. # echo "export PATH=$PATH:/usr/local/sersync/bin/" >> /etc/profile
  2. # source /etc/profile

6、 启动sersync

  1. sersync2 -r -d -o /usr/local/sersync/conf/confxml.xml
  2. #重启操作如下:
  3. # killall sersync2 && sersync2 -r -d -o /usr/local/sersync/conf/confxml.xml

7、 设置开机启动

  1. # echo "sersync2 -r -d -o /usr/local/sersync/conf/confxml.xml" >> /etc/rc.local

实验

启动了sersync服务之后

发送机

  1. [root@MiWiFi-R1D data]# ls /home/data/
  2. [root@MiWiFi-R1D data]# touch backup.sql
  3. [root@MiWiFi-R1D data]# ls
  4. backup.sql

接收机

  1. [root@i-nzwxivja xjmysql]# ls /data/backup/xjmysql/
  2. [root@i-nzwxivja xjmysql]#
  3. [root@i-nzwxivja xjmysql]# ls
  4. backup.sql

结论

可以看到文件很快的就被同步到远程机器上了,实验成功。

参考文章

  1. centos 6.3系统sersync+rsync文件同步安装配置
  2. 如何通过rsync+sersync 实现同步备份 更详细一些

声明:

本文出自 “orangleliu笔记本” 博客,转载请务必保留此出处http://blog.csdn.net/orangleliu/article/details/46699147作者orangleliu 采用署名-非商业性使用-相同方式共享协议

[sersync+rsync] centos6.5 远程文件同步部署记录的更多相关文章

  1. Sersync+Rsync实现触发式文件同步

    背景 通常我们在服务器上使用rsync加上crontab来定时地完成一些同步.备份文件的任务.随着业务和应用需求的不断扩大.实时性要求越来越高.一般rsync是通过校验所有文件后,进行差量同步,如果文 ...

  2. rsync+sersync+inotify实现服务器间文件同步之一

    rsync+sersync+inotify实现服务器间文件同步之一:rsync安装配置 2013年12月14日 ⁄ Linux管理, 服务器集群技术 ⁄ 共 4925字 ⁄ rsync+sersync ...

  3. 远程文件同步详解(Remote File Sync)

    1. 远程文件同步的常见方式: 1.cron + rsync 优点: 简单 缺点:定时执行,实时性比较差:另外,rsync同步数据时,需要扫描所有文件后进行比对,进行差量传输.如果文件数量达到了百万甚 ...

  4. 使用inotify+rsync实现服务器间文件同步

      1. rsync 1.1 什么是rsync   rsync是一个远程数据同步工具,可通过LAN/WAN快速同步多台主机间的文件.它使用所谓的“Rsync演算法”来使本地和远程两个主机之间的文件达到 ...

  5. 实战远程文件同步(Remote File Sync)

    1. 远程文件同步的常见方式: 1.cron + rsync 优点: 简单 缺点:定时执行,实时性比较差:另外,rsync同步数据时,需要扫描所有文件后进行比对,进行差量传输.如果文件数量达到了百万甚 ...

  6. Linux 之 rsync实现服务器的文件同步

    rsync实现服务器的文件同步 参考文献链接: 一.rsync实现负载均衡集群文件同步,搭建线上测试部署环境 二.rsync. 三.rsync常见错误. 四.rsync 安装使用详解. 环境部署: 服 ...

  7. linux 同步 rsync的使用——远程服务器同步配置

    一.背景介绍 由于需要和其他系统进行对接.文件的逻辑地址通过接口传递,而文件的实体需要通过服务器间的同步进行传输.在同事的建议下选择了rsync. 二.RSYNC介绍 RSYNC 有多种方式进行同步, ...

  8. Linux下利用rsync实现多服务器文件同步

    windows做为文件服务器,使用rsync的windows服务版本,然后配置好就可以了.需要的朋友可以参考下. windows做为文件服务器,使用rsync的windows服务版本:cwRsyncS ...

  9. Inotify+Rsync实现Linux服务器文件同步

    做这个功能的时候遇到了好多坑,在此感谢一下这篇博客 http://kerry.blog.51cto.com/172631/734087/  ,大家参照这篇博客就能实现该功能. 另外如果想详细了解一下的 ...

随机推荐

  1. jsp根据参数默认选中radio

    <% int vol = (Integer)request.getAttribute("cardtype") ; %> <input type="rad ...

  2. 用一个div模拟textarea的实现

    <textarea> 标签定义一个多行的文本输入控件.但是它不能像div一样随着内容增加而自动增加,一言不合就出现滚动条,有是有为了更好的交互,可能需要使用div来模拟textarea的实 ...

  3. Struts中的找不到StringUtils异常

    今天在Struts2框架下使用JSON插件时,程序保存找不到类org/apache/commons/lang/xwork/StringUtils,我纳闷了,commons-lang-2.5.jar和c ...

  4. 四种方式实现子goroutine与主线程的同步

    如何实现子goroutine与主线程的同步 第一种方式: 这种方式很太死板,就不演示了. 第二种方式:使用 channel机制,每个 goroutine传一个 channel进去然后往里写数据,在再主 ...

  5. 在OpenCV3.1.0中使用SIFT,SURF算法

    写在前边: 1.我使用的是python2.7 + OpenCV3.1.0 2.OpenCV3.0.0+的文档有很大问题,很多文档写的还是OpenCV2.0+, OpenCV3.0+根本用不了,其中有一 ...

  6. 【python标准库模块一】时间模块time学习

    本文介绍python的标准库模块time的常见用法 时间模块time 导入时间模块 import time 得到时间戳,这是统计从1970年1月1日0点0分到现在经过了多少秒,一般用于加减法一起用,比 ...

  7. 2018 dnc 公司案例大全,迎接.NET Core开源新时代

    2018 dnc 公司案例大全,迎接.NET Core开源新时代   dnc = .NET Core.dotnet Core dnc是微软新一代主力编程平台,开源.免费.跨平台.轻量级.高性能,支持L ...

  8. MySQL PHP 语法

    MySQL PHP 语法 MySQL 可应用于多种语言,包括 PERL, C, C++, JAVA 和 PHP. 在这些语言中,MySQL在PHP的web开发中是应用最广泛. 在本教程中我们大部分实例 ...

  9. ZooKeeper之(一)ZooKeeper是什么

    1.1 产生背景 当今是个分布式.集群.云计算等名词满天飞的时代.造成这种局面的一个重要因素就是,单一机器的处理能力已经不能满足我们的需求,不得不采用由多台机器组成的服务集群.服务集群对外提供服务的过 ...

  10. Swift 3中新的访问控制关键字fileprivate和open

    在Swift 3中除去原有的3个访问控制关键字private,public,internal,又添加了2个关键字fileprivate和open 它们可以看成是对private和public的进一步细 ...