配置rsync+inotify 实时同步
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了配置rsync+inotify 实时同步相关的知识,希望对你有一定的参考价值。
-
rsync简介
rsync是一个开源的快速备份工具,可以在不同主机之间镜像同步整个目录树,支持增量备份,保持连接和权限,且采用优化的同步算法,在传输前执行压缩,因此非常适用于异地备份,镜像服务器等。 - inotify简介
Inotify 是一个 Linux 内核特性,它监控文件系统,并且及时向专门的应用程序发出相关的事件警告,比如删除、读、写和卸载操作等。您还可以跟踪活动的源头和目标等细节。
?
主机名称 | IP | 主要软件 |
---|---|---|
服务器A | 192.168.200.129 | rsync、inotify |
服务器A | 192.168.200.130 | rsync、inotify |
- 配置rsync
-
1:建立/etc/rsyncd.conf 配置文件
# vim /etc/rsyncd.conf uid = nobody gid = nobody use chroot = yes //禁锢在源目录 address = 192.168.200.129 //监听地址 port 873 //监听端口 log file = /var/log/rsyncd.log //日志文件路径 pid file = /var/run/rsyncd.pid //进程ID文件路径 hosts allow = 192.168.200.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 //存放账户信息的数据文件
-
2:为备份账户创建数据文件、创建源目录
# vim /etc/rsyncd_users.db backuper:abc123 # chmod 600 /etc/rsyncd_users.db # mkdir -p /var/www/html # chmod 777 /var/www/html/
-
3:启动rsync服务,运行参数为 --daemon
# rsync --daemon //启动rsync服务 # netstat -natp | grep rsync
- rsync命令的基本用法
- -a 归档模式,表示以递归方式传输文件,并保持所有文件属性,等于-rlptgoD。
- -z 对备份的文件在传输时进行压缩处理。
- -H 保留硬链结。
- -D 保持设备文件信息。
- -A 保留ACL属性信息
- --delete 删除那些目标位置有而原始位置没有的文件。
- --checksum 打开校验开关,强制对文件传输进行校验。
- 配置源的表示方法 三种
-
将对方源目录的文件同步到我/opt目录下
格式一: # rsync -avz [email protected]::wwwroot /opt/ password:abc123 格式二: # rsync -avz rsync://[email protected]/wwwroot /opt/ password:abc123 格式三:免密码交互 # vim /etc/server.pass abc123 # chmod 600 /etc/server.pass # rsync -az --delete --password-file=/etc/server.pass [email protected]::wwwroot /opt
- 安装配置inotify
-
1:调整inotify内核参数
# vim /etc/sysctl.conf fs.inotify.max_queued_events = 16384 监控事件队列(16384) fs.inotify.max_user_instances = 1024 最多监控实例数(1024) fs.inotify.max_user_watches = 1048576 每个实例最多监控文件数(1048576)
-
2:安装
# yum install gcc gcc-c++ make -y # tar zxvf inotify-tools-3.14.tar.gz -C /opt/ # cd /opt/inotify-tools-3.14 # ./configure # make && make install
- 开启监控
- 需要在开一个终端
-
去 /var/www/html/目录 创建 删除 移动 都会监控
# inotifywait -mrq -e modify,create,move,delete /var/www/html/
详解:
-m 表示持续监控
-r 表示递归整个目录
-q 简化输出信息
inotifywait 可监控: modify 修改、 create 创建、move 移动、delete 删除 - 编写触发式同步脚本
- 监控本地源目录,并且自动备份上传到目标服务器目录
-
脚本中指定的IP 是目标的IP(不是本地IP)
# cd /opt # vim /opt/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.pass /var/www/html/ [email protected]::wwwroot/" $INOTIFY_CMD | while read DIRECTORY EVENT FILE do if [ $(pgrep rsync | wc -l) -ge 0 ] ; then $RSYNC_CMD fi done # chmod +x /opt/inotify.sh # .//inotify.sh # echo ‘/opt/inotify.sh‘ >> /etc/rc.local //加入开机自启动
?
- 验证
- 在服务器A上的/var/www/html/ 创建文件
- 去服务器B上查看是否同步
以上是关于配置rsync+inotify 实时同步的主要内容,如果未能解决你的问题,请参考以下文章
rsync下行同步rsync+inotify实时同步(同步如饮水一样简单)