1. 声明:rsync inotify 需要逆向思考,当只做rsync不实时同步时,我们一般是从rsync服务端向rsync客户端同步数据。当需要添加inotify实现实时同步数据时,我们就需要从rsync客户端向各rsync服务端同步数据,这样rsync客户端就变成了master,而rsync服务端就变成了slave。
原理:当web3的本地目录,也就是需要同步的目录发生变化时,比如有文件改名、更新、删除、权限变化,此时就使用inotify命令查找这些变化,进行相应的轮询工作
服务器地址分配:
Web1:192.168.1.103 (rsync 服务节点)
Web2:192.168.1.104 (rsync 服务节点)
Web3:192.168.1.105 (rsync 内容发布节点、inotify)
同步的目录是 /mnt ,自动同步顺序为 web2,web3——web1。我们将web1 配置成 rsync 的服务器即可。
2.配置 rsync 服务器端(web1)
[1] 安装rsync软件
# yum install rsync
[2] 手动创建rsync配置文件
# vim /etc/rsyncd.conf uid = root #全局配置开始,运行rsync的用户 gid = root #运行rsync的用户组 usechroot = no #是否让进程离开工作目录 max connections = 20 #最大并发数 timeout = 600 #连接超时时间 pid file = /var/run/rsyncd.pid #指定rsync的pid存放路径 lock file = /var/run/rsync.lock #指定rsync的锁文件存放路径 log file = /var/log/rsyncd.log #指定rsync的日志存放路径 [web_log] #模块配置开始 path = /data/web_log/ #需要备份的文件路径 ignore errors #忽略一些无关的I/O错误 read only = false #false为关闭,true表示开启。表示只读,不允许上传文件 writeonly = false #不允许下载 list = false #客户请求可以使用模块列表时是否被列出 hosts allow = 192.168.1.0/24 #可以访问此模块的主机,*表示任何主机,此处是网段,某个主机直接写ip hosts deny = 0.0.0.0/32 #禁止访问此模块的主机地址 auth users = backuser #自定义连接该模块的用户名,多个用户用逗号分隔 secrets file = /etc/rsync.password #指定一个包含“用户名:密码”格式的文件
[3] 创建备份目录
# mkdir -p /data/web_log/
[4] 建立 rsync 用户名和密码文件
# echo"backuser:123" >> /etc/rsync.password
[5] 为 /etc/rsync.password授权为 600(这个文件的权限必须是 600)
# chmod 600 /etc/rsync.password
[6] 启动rsync并添加开启自动启动
# /usr/bin/rsync --daemon & # echo "/usr/bin/rsync --daemon" >> /etc/rc.local
二、配置 rsync 服务器端(web2),和web1配置一样
# yum install rsync # 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/web_log/ #定义你需要备份的路径,可以跟web1上不一样 ignore errors read only = false writeonly = false list = false hosts allow = * hosts deny = 0.0.0.0/32 auth users = backuser secrets file = /etc/rsync.password # mkdir -p /data/web_log/ # echo "backuser:123" >> /etc/rsync.password # chmod 600 /etc/rsync.password # /usr/bin/rsync --daemon & # echo "/usr/bin/rsync --daemon" >> /etc/rc.local #到此,服务器端配置完成
三、客户端配置(web3):
[1] 设置 rsync 客户端的密码文件,客户端只需要设置 rsync 同步的密码即可,不用设置用户名 # yum install rsync # echo "123" > /etc/rsync.password [2] 将密码文件的权限设置成 600(这个文件的权限必须是600) # chmod 600 /etc/rsync.password
四、配置 Inotify(在 web3上配置)
[1] 安装 inotify 软件包
wget http://cloud.github.com/downloads/rvoicilas/inotify-tools/inotify-tools-3.14.tar.gz # yum install gcc #如果没安装gcc的请安装,已安装请跳过此步。 # tar zxf inotify-tools-3.14.tar.gz # cd inotify-tools-3.14 # ./configure && make && make install
[2] 在web3上测试一下是否可以同步文件
rsync -vzrtopg --progress /mnt/ backuser@192.168.1.103::web_log --password-file=/etc/rsync.password #上传文件 rsync -vzrtopg --progress backuser@192.168.1.103::web_log /opt/ --password-file=/etc/rsync.password #下载文件
[3] 写一个脚本来实现,当/mnt/中文件有变化时,让各rsync服务节点同步数据:
# vim /root/inotify.sh #!/bin/bash src=/mnt/ #此文件是rsync客户端本地文件,需要上传到各个rsync服务节点 des1=web_log # web1上需要同步的目录 des2=web_log # web2上需要同步的目录 host1=192.168.1.103 #rsync服务节点1 host2=192.168.1.104 #rsync服务节点2 user1=backuser #连接rsync使用的用户名web1上 user2=backuser #连接rsync使用的用户名web2上 /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 $src $user1@$host1::$des1 --password-file=/etc/rsync.password /usr/bin/rsync -vzrtopg --delete --progress $src $user2@$host2::$des2 --password-file=/etc/rsync.password echo "${files} was rsynced" >> /var/log/rsync.log 2>&1 done
[4] 或写成如下脚本
# vim /root/inotify.sh #!/bin/bash /usr/local/bin/inotifywait -mrq --timefmt '%d/%m/%y %H:%M' --format '%T %w%f' -e modify,delete,create,attrib /mnt/ | while read file do /usr/bin/rsync -vzrtopg --delete --progress /mnt/ backuser@192.168.1.103::web_log --password-file=/etc/rsync.password /usr/bin/rsync -vzrtopg --delete --progress /mnt/ backuser@192.168.1.104::web_log --password-file=/etc/rsync.password echo "${files} was rsynced" >> /var/log/rsync.log 2>&1 done
[5] 给予执行权限
# chmod +x /root/inotify.sh # /root/inotify.sh & #在后台执行
[6] 最后,将此脚本加入系统自启动文件
# echo "/root/inotify.sh" >> /etc/rc.local
[7] 向/mnt/下添加内容,去103上查看是否同步
# ls /data/web_log/ 1 11 2 3 4 5 6 7 9
[8] 编写监听inotify进程脚本,防止inotify由于某种原因中断无法实时同步(如果不需要监听,此步可以跳过)
# vim /root/inotifyjianting.sh #!/bin/bash ps -lef |pgrep inotify &> /dev/null #如果有inotify进程在运行,那么echo $? 返回值是0,条件为真。否则返回值为非0 if [ -z $? ] ;then #关键在$?这个变量 ,它是代表上一条命令执行后的退出状态,如果是0的话表示成功,非0表示未开启 echo "inotify runing 正在运行...." else /root/inotify.sh & echo "inotify runing 已运行....." fi # chmod +x /root/inotifyjianting.sh
[10] 添加定时任务计划
# crontab -e * * * * * /root/inotifyjianting.sh & > /dev/null
相关推荐
linux :CentOS 7下用rsync+inotify实现实时同步,可以实现文件之间的同步备份。
Centos6.3环境下配置文件系统同步更新,主要是用rsync和inotify机制实现
rsync+inotify实现在Linux系统下的数据在不同的服务器之间实时同步,screen命令实现后台自动运行。
自创(不喜勿喷):通过rsync+inotify两个服务自动化实现实时同步的脚本 方便linux使用者使用的脚本,望大佬完善信息,但不要搞破坏,谢谢使用 #### 软件架构 软件架构说明 ssh免密 rsync+inotify两个服务结合 ###...
Centos7搭建Rsync+inotify远程同步(详解)-附件资源
在前面的博文中,我讲到过利用rsync实现数据的镜像和备份,但是要实现数据的实时备份,单独靠rsync还不能实现,本文就讲述下如何实现数据的实时备份
NULL 博文链接:https://hao3721.iteye.com/blog/1887421
rsync+inotify适合单向同步,但传输速度快! 环境:centos6.x
文章目录前言文章重点一、rsync+inotify 简介1、rsync简介2、inotify简介二、整体架构三、同步节点部署(rsync)1...inotify(1)下载安装(2)创建rsync同步的shell脚本五、实时同步备份验证六、遇到的问题及解决方法...
通过两台Linux服务器实现文件实时同步,按照文件操作应该99.99%能实现。跟网上查询的相关资料相比,遇到的坑以及问题处理方式都有简单的说明。 ps: 特别注意,文档中的操作系统为CentOS,如果是 RedHat Linux 无法...
**centos 6.5** 生产服务器目录: /home/zytest/files 备份服务器目录: /home/zytest/files 用户 / 密码: zytest / zytest 0x1 生产服务器环境搭建 0x1.1 安装gcc编译器和rsync yum install gcc rsync -y 0x1.2 ...
**centos 6.5** 生产服务器目录: /home/zytest/files 备份服务器目录: /home/zytest/files 用户 / 密码: zytest / zytest 0x1 生产服务器环境搭建 0x1.1 安装gcc编译器和rsync yum install gcc rsync -y 0x1.2 ...
客户端的备份文件要和服务器端的备份文件保持实时同步。 例如: 服务端 IP:192.168.2.10 客户端 IP:192.168.2.11,192.168.2.12,…,192.168.2.18 二、服务端开启rsync服务 1.CentOS7操作系统安装完成后,会有自带的...
本人写的《从0自学linux运维》系列之搭建篇 hualinux2.11 环境搭建:Centos8配置rsync及与inotify和sersync的配合.pdf
适合linux初学者
在进行远程备份的时候所需要的,windows服务端的cwRsyncServer4.1.0和centos7.8上的inotify-tools-3.14-9
inotify 是内核2.6.13引入的一个新功能,为用户监控文件系统提供强大的支持。一般配合rsync使用。实现服务器之间实时同步备份。 此版本适用于EL6 或者 EL7 版本。 本人使用CentOS6和CentOS7。
配合rsync使用