Rsync + inotify 实现文件实时同步
Posted sharesdk
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Rsync + inotify 实现文件实时同步相关的知识,希望对你有一定的参考价值。
Rsync用来实现触发式的文件同步。
inotify-tools是一套组件,Linux内核从2.6.13版本开始提供了inotify通知接口,用来监控文件系统的各种变化情况,如文件存取、删除、移动等。利用这一机制,可以非常方便地实现文件异动告警、增量备份,并针对目录或文件的变化及时作出响应;
所以使用inotify监控文件系统有任何变动时,然后就触发rsync同步,达到了单向实时同步数据的功能。
Rsync
默认安装 yum install rsync -y 或者 源码下载 安装; 示例启动 /usr/bin/rsync --daemon 可以添加到 /etc/rc.load 启动项中;
示例:
A: web-server 192.168.2.5 B:web - bak 192.168.2.6
一、web-bak 配置:
在bak 服务上 安装 Rsync
默认端口是873,默认安装时候没有这个文件 需要手动创建配置文件 rsyncd.conf
对于非匿名访问的 rsync 服务器还要创建认证口令文;
1、创建配置文件:
# vi /etc/rsyncd.conf
[[email protected] ~]# cat /etc/rsyncd.conf uid = root gid = root use chroot = no max connections = 100 timeout = 30 strict modes = yes pid file = /var/run/rsyncd.pid lock file = /var/run/rsync.lock log file = /var/log/rsyncd.log [server1] path = /backup/ comment = backup file ignore errors read only = no write only = no hosts allow = 192.16.2.5 # hosts deny = * list = false uid = root gid = root auth users = bakup secrets file = /etc/rsync.pass
2、创建 rsync.pass 文件
[[email protected] ~]# cat /etc/rsync.pass bakup:server1
web-server 配置:
1、创建 rsync.pass 文件
[[email protected] ~]# cat /etc/rsync.pass server1
2、安装 inotify-tools
默认yum install 也可以源码进行。
3、创建 检测同步脚本
[[email protected] hdb1]# cat rsync-inotify.sh #!/bin/bash bak=192.168.2.6 # 备份服务器
src=/bakup/
# 备份目录 dst=server1 # 备份模块
user=bakup 启动账户 /usr/bin/inotifywait -mrq --timefmt ‘%d/%m/%y %H:%M‘ --format ‘%T %w%f%e‘ -e close_write,modify,delete,create,attrib $src | while read files do /usr/bin/rsync -vzrtopg --delete --progress --password-file=/etc/rsync.pass $src [email protected]$bak::$dst echo "${files} was rsynced ok ! " >>/tmp/rsync.log 2>&1
三、后台启动运行同步脚本
# nohup sh rsync-inotify.sh &
四、 Rsync 是单向同步的;客户端只保持与服务器端的镜像同步;客户端删除并不会影响服务端数据。
unison 可以达到双向镜像同步。
以上是关于Rsync + inotify 实现文件实时同步的主要内容,如果未能解决你的问题,请参考以下文章