rsync+inotify 远程同步

一. rsync同步简介

1.1 rsync的意义

解决源网站代码更新而节点服务器进行自动更新,无需人工一个一个
节点站点更新的庞大工作量

1.2 rsync的简介

  • Remote Sync:远程同步
  • 支持本地复制,或者与其他SSH,rsyncz主机同步
  • 官网:http://rsync.samba.org

二. 配置rsync

2.1 配置rsync源

  1. 建立rsyncd.com配置文件
  • 需要手动建立,语法类似于samba配置
  • 认证配置auth users,secrets,不加则为匿名
vim /etc/rsyncd.conf
uid = nobody
gid = nobody
use chroot = yes
address = 12.0.0.10
port 873
log file = /var/log/rsyncd.log
pid file = /var/run/rsyncd.pid
hosts allow = 12.0.0.0/24

[wwwroot]
path = /var/www/html
comment =  www.kgc.cn
read only = yes
dont compress   = *.gz *.tgz *.zip *.z *.Z *.rpm *.deb *.bz2
auth users = backuper
secrets file = /etc/rsyncd_users.db
  1. 独立账号文件
  • 采用"用户名:密码" 的记录格式,每行一个用户记录
  • 独立的账号数据,不依赖于系统账号
vim /etc/rsyncd_users.db
 backuper:abc123

chmod 600 /etc/rsyncd_users.db
  1. 启动rsync服务
 启动服务
rsync --daemon
查看状态c
netstat -ntap | grep rsync
  • 通过–daemon独自提供服务

2.2配置rsync同步源(备份源)

在这里插入图片描述

  1. 语法
  • rsync [选项] 原始位置 目标位置
    原始位置的格式
    • 格式1: 用户名@主机地址::共享模块名
rsync -avz backuper@12.0.0.12::wwwroot /opt/ 
  • 格式2: rsync://用户名@主机地址/共享模块名
rsync -avz rsync://backuper@12.0.0.12/wwwroot/opt/
  1. 常用选项
    -a:归档模式,递归并保留对象属性
    -v:显示同步过程的详细信息
    -z:在传输文件时进行压缩(compress)
    -H:保留硬链接文件
    -A:保留ACL属性信息
    –delete:删除目标位置有而原始位置没有的文件
    –checksum:根据对象的校验和来决定是否跳过文件
  2. 免交互设置
  • 设置密码文件
vim /etc/server.pass
abc123

chmod 600 /etc/server.pass
  • 使用 --password-file=密码文件
rsync -az --delete --password-file=/etc/server.pass backuper@12.0.0.12::wwwroot /opt

三. rsync + inotify 实时同步

3.1 linux内核的inotify机制

  • 从版本2.6.13开始提供
  • 可以监控文件系统的变化情况,并作出通知响应
  • 辅助软件:inotify-tools

在这里插入图片描述

3.2 调整inotify内核参数

在这里插入图片描述

3.3 安装 rsync-tools辅助工具

在这里插入图片描述

  • -m,持续进行监控
  • -r ,递归监控所有子对象
  • -q ,简化输出信息
  • -e ,指定要监控哪些事件类型

3.4 通过inotifywait触发rsync同步操作

在这里插入图片描述

四. 案例设计

线网环境需要远程同步的原因 1: 内容的一致性 1000 节点 tomcat 网站 (HTML,CSS,JS)
2:网站内容更新 scp 1000次 shell 脚本自动执行、
3: 解决问题:rsync出现 只需要更新一个节点,其他所有节点内容同步
作用:拉取同步
监控:inotify

4.1 rsync + inotify 架构的设计

同步源: 12.0.0.12 搭建rsync,配置/etc/rsyncd.conf 站点目录:/pei
发起源: 12.0.0.28 站点目录:/var/www/html
后端服务器:12.0.0.1 搭建rsync,配置/etc/rsyncd.conf 站点目录:/var/www/html

构建思想:在服务器12.0.0.28中通过监控/pei 站点目录的变化,上传同步信息给12.0.0.12,同时
在12.0.0.12通过监控/var/www/html/ 站点的变化,上传同步信息给12.0.0.1,这样就能构保证三
个服务器的站点目录保持一致,同时可以通过修改12.0.0.28服务器就可以实现所有服务器的站点同步

4.2 同步源 12.0.0.12 服务器的/etc/rsyncd.conf

use chroot = yes
address = 12.0.0.12
port 873
log file = /var/log/rsyncd.log
pid file = /var/run/rsyncd.pid
hosts allow = 12.0.0.0/24

[wwwroot]
path = /var/www/html
comment = www.peihua.cn
read only = no
dont compress   = *.gz *.tgz *.zip *.z *.Z *.rpm *.deb *.bz2
auth users = backuper
secrets file = /etc/rsyncd_users.db

注意两个点:1. read only = no 设置成no
2.站点目录/var/www/html/ 的权限设置成777

4.3 后端服务器:12.0.0.1

搭建rsync,配置/etc/rsyncd.conf

uid = nobody
gid = nobody
use chroot = yes
pid file = /var/run/rsyncd.pid
log file = /var/log/rsyncd.log
address = 12.0.0.1
port 873
hosts allow = 12.0.0.0/24

[wwwroot]
path = /var/www/html
comment =  www.kgc.cn
read only = no
dont compress   = *.gz *.tgz *.zip *.z *.Z *.rpm *.deb *.bz2
auth users = backuper
secrets file = /etc/rsyncd_users.db

注意两个点:1. read only = no 设置成no
2.站点目录/var/www/html/ 的权限设置成777

4.4 在12.0.0.28上传同步信息给12.0.0.12的脚本信息为

[root@mysql3 opt]# vim inotify.sh 
#!/bin/bash
INOTIFY_CMD="inotifywait -mrq -e modify,create,attrib,move,delete /pei/"
RSYNC_CMD="rsync -azH --delete --password-file=/etc/server.pss /pei/ backuper@12.0.0.12::wwwroot/"
$INOTIFY_CMD | while read DIRECTORY EVENT PILE
do
    if [ $(pgrep rsync | wc -l) -le 0 ]
    then
        $RSYNC_CMD
    fi
done

4.5 在12.0.0.12上传同步信息给12.0.0.1的脚本信息为

[root@mysql3 opt]# vim inotify.sh 
#!/bin/bash
INOTIFY_CMD="inotifywait -mrq -e modify,create,attrib,move,delete /var/www/html/"
RSYNC_CMD="rsync -azH --delete --password-file=/etc/server.pss /var/www/html/ backuper@12.0.0.1::wwwroot/"
$INOTIFY_CMD | while read DIRECTORY EVENT PILE
do
    if [ $(pgrep rsync | wc -l) -le 1 ]
    then
        $RSYNC_CMD
    fi
done

注意点:因为12.0.0.12服务器中已经开启了rsync服务所以,”pgrep rsync | wc -l ”在没有
改变的转态就已经为1,所以 if [ $(pgrep rsync | wc -l) -le 1 ],如果-le 0 是永远都不会执行

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值