设为首页 收藏本站
查看: 898|回复: 0

[经验分享] centos 6.5 rsync+inotify 实时同步

[复制链接]

尚未签到

发表于 2018-4-26 13:26:15 | 显示全部楼层 |阅读模式
  主机名、ip:
  server 172.31.82.184
  client  172.31.82.185
  

  需求:
  1、server端 ”/data/server“ 做为client端 “/data/client” 的备份目录;
  2、实现功能是client端对该目录做增删权限变化操作,server端能保持实时同步;
  3、关闭防火墙和selinux
  service iptables stop
  setenforce 0

  一、配置server端
  1、安装rsync软件
  yum install -y rsync -y
  2、创建rsync.conf配置文件,默认该文件不存在
  vim /etc/rsyncd.conf
uid = root
gid = root
usechroot = no
max connections = 20
timeout = 600
pid file = /var/run/rsyncd.pid
lock file = /var/run/rsync.lock
log file = /var/log/rsyncd.log
[web_log]                     ##此处是定义的模块名,和“path = /data/server/”下server有关  rsync 同步文件的时候要使用web_log 自动关联到path路径
path = /data/server/
ignore errors
read only = false
writeonly = false
list = false
hosts allow = *
auth users = backuser
secrets file = /etc/rsync.password  3、创建备份目录
  mkdir /data/server -p
  4、创建rsync用户名和密码文件
  echo "backuser:123" >> /etc/rsync.password
  5、为/etc/rsync.password 授权为600
  chmod 600 /etc/rsync.password
  6、启动rsync服务并添加开机自动启动
  /usr/bin/rsync --daemon &
  echo "/usr/bin/rsync --daemon" >> /etc/rc.local
  二、配置client端
  1、安装rsync
  yum install rsync -y
  2、设置 rsync 客户端的密码文件,客户端只需要设置 rsync 同步的密码即可,不用设置用户名

  echo "123" > /etc/rsync.password
  3、将密码文件的权限设置成 600      

  chmod 600 /etc/rsync.password
  

  配置inotyfi
  1、安装基础编译包
  yum install -y gcc lrzsz
tar zxvf inotify-tools-3.14.tar.gz &&cd inotify-tools-3.14 &&./configure &&make &&make install  2、创建client端同步目录
  mkdir -p /data/client
  3、在client端测试是否可以同步文件
  上传文件

  rsync -vzrtopg --progress /data/client/ backuser@172.31.82.184::server  --password-file=/etc/rsync.password

  下载文件
  rsync -vzrtopg --progress  backuser@172.31.82.184::server /opt/  --password-file=/etc/rsync.password
  4、写一个脚本实现当client端  “/data/client”目录文件有变化时,让server节点同步client数据
#!/bin/bash
src=/data/client/  ##注意路径
des1=server        ##注意路径
host1=172.31.82.184 ##server端ip
user1=backuser     ##同步数据使用的用户
/usr/local/bin/inotifywait -mrq --timefmt %y/%m'%d %H:/%M' --format '%T %w%f' -emodify,delete,create,attrib $src | while read file;
do
/usr/bin/rsync -vzrtopg --delete --progress  $src $user1@$host1::$des1 --password-file=/etc/rsync.password
echo "${files} was rsynced" >> /var/log/rsync.log 2>&1
done  5、给脚本执行权限
  chmod +x /root/inotify.sh
6、后台执行脚本
  /root/inotify.sh &
  7、将脚本加入到系统自启文件
  echo "/root/inotify.sh" >> /etc/rc.local
8、向client端加入文件,在server端查看是否有同步
  mkdir 11 22 33 44

  测试通过

  

  三、排除不想同步的文件和目录
  1、单个文件排除:比如我不想同步/opt/aa.php文件,直接使用 --exclude “aa.php”
  多个文件和目录排除 --exclude-from="/usr/local/src/exclude.list"
  脚本写法:

  vim /root/inotify.sh
  #!/bin/bash
src=/data/client/
des1=server
host1=172.31.82.184
user1=backuser
/usr/local/bin/inotifywait -mrq --timefmt '%d/%m/%y %H:%M' --format '%T %w%f' -emodify,delete,create,attrib $src | while read file
do
/usr/bin/rsync -vzrtopg --delete --progress --exclude-from="/usr/local/src/exclude.list" $src $user1@$host1::$des1 --password-file=/etc/rsync.password
echo `date +%m.%d.%H%.M`"${files} was rsynced" >> /var/log/rsync.log 2>&1
done
  

  2、脚本写完后还需要创建与脚本对应的文件,以下是不同步到server节点的文件和目录:
  vim /usr/local/src/exclude.list
  exclude
11
22
33
  test.php
  3、杀死后台运行的脚本进程
  ps -elf |pgrep inotify|xargs kill -9
  4、启动同步脚本
  sh /root/inotify.sh &
  5、设置每一个inotify实例相关联的watchs的上限,否则传输的文件过多会报错
  echo 30000000 > /proc/sys/fs/inotify/max_user_watches
  

  注意:
  脚本修改后需要重启后台脚本:
  ps -elf |pgrep inotify|xargs kill -9
  sh /root/inotify.sh &

运维网声明 1、欢迎大家加入本站运维交流群:群②:261659950 群⑤:202807635 群⑦870801961 群⑧679858003
2、本站所有主题由该帖子作者发表,该帖子作者与运维网享有帖子相关版权
3、所有作品的著作权均归原作者享有,请您和我们一样尊重他人的著作权等合法权益。如果您对作品感到满意,请购买正版
4、禁止制作、复制、发布和传播具有反动、淫秽、色情、暴力、凶杀等内容的信息,一经发现立即删除。若您因此触犯法律,一切后果自负,我们对此不承担任何责任
5、所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其内容的准确性、可靠性、正当性、安全性、合法性等负责,亦不承担任何法律责任
6、所有作品仅供您个人学习、研究或欣赏,不得用于商业或者其他用途,否则,一切后果均由您自己承担,我们对此不承担任何法律责任
7、如涉及侵犯版权等问题,请您及时通知我们,我们将立即采取措施予以解决
8、联系人Email:admin@iyunv.com 网址:www.yunweiku.com

所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其承担任何法律责任,如涉及侵犯版权等问题,请您及时通知我们,我们将立即处理,联系人Email:kefu@iyunv.com,QQ:1061981298 本贴地址:https://www.yunweiku.com/thread-452348-1-1.html 上篇帖子: CentOS安装与自动化安装光盘配置 下篇帖子: CentOS7或RHEL 7上修改主机名
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

扫码加入运维网微信交流群X

扫码加入运维网微信交流群

扫描二维码加入运维网微信交流群,最新一手资源尽在官方微信交流群!快快加入我们吧...

扫描微信二维码查看详情

客服E-mail:kefu@iyunv.com 客服QQ:1061981298


QQ群⑦:运维网交流群⑦ QQ群⑧:运维网交流群⑧ k8s群:运维网kubernetes交流群


提醒:禁止发布任何违反国家法律、法规的言论与图片等内容;本站内容均来自个人观点与网络等信息,非本站认同之观点.


本站大部分资源是网友从网上搜集分享而来,其版权均归原作者及其网站所有,我们尊重他人的合法权益,如有内容侵犯您的合法权益,请及时与我们联系进行核实删除!



合作伙伴: 青云cloud

快速回复 返回顶部 返回列表