当前位置: 代码迷 >> 综合 >> rsync+inotify实时同步配置
  详细解决方案

rsync+inotify实时同步配置

热度:32   发布时间:2024-01-10 22:03:26.0

Inotify是一个Linux特性,它监控文件系统操作,如读取、写入和创建。Inotify反应灵敏,用法非常简单,并且比cron任务的繁忙轮询高效得多。

Rsync安装完毕后,需要安装Inotify文件检查软件。同时为了同步的时候不需要输入密码,可以使用ssh免密钥方式进行同步。

Inotify+Rsync案例

案例:
源服务器将数据同步至备份服务器
A 源服务器 ----安装Rsync客户端+Inotify,当Inotify检测本地文件发生变化,发起同步操作

B、C 备份服务器 ----安装Rsync服务端

1、源服务器上安装Inotify和Rsync客户端(系统自带无需安装)

wget https://jaist.dl.sourceforge.net/project/inotify-tools/inotify-tools/3.13/inotify-tools-3.13.tar.gz
./configure
make
make install
配置auto_inotify.sh同步脚本,如下:

#!/bin/sh  

src=/usr/local/src/ ----源服务器上需同步数据的目录
ip=10.37.71.93 ----备份服务器IP
username=test ----同步用户名
des=test ----同步的模块名
inotifywait -mrq --timefmt '%d/%m/%y-%H:%M' --format '%T %w%f' -e modify,delete,create,attrib,access,move ${src} | while read file  
do
  rsync -aP --delete $src $username@$ip::$des --password-file=/etc/rsync.pas
  #rsync -arv test@$ip::test $src --password-file=/etc/rsync.pas
done

配置同步密钥

vi /etc/rsync.pas 输入服务器端配置的密码
test999
保存完毕,chmod 600 /etc/rsync.pas  设置权限为宿主用户读写

2、客户端服务器安装Rsync服务端

wget -c -P /src/ https://rsync.samba.org/ftp/rsync/src/rsync-3.1.2.tar.gz
tar zxvf /src/rsync-3.1.2.tar.gz -C /src/
cd /src/rsync-3.1.2
./configure --prefix=/usr/local/rsync
make && make install
3、Rsync服务端配置

基于Rsync密钥方式同步及配置

默认/etc不存在rsyncd.conf配置文件,需要手动创建,配置内容如下:

#########[global] 全局配置
uid = root
gid = root
use chroot = yes
max connections = 5
pid file = /var/run/rsyncd.pid
lock file = /var/run/rsyncd.lock
log file = /var/log/rsyncd.log
transfer logging = yes
log format = %t %a %m %f %b
syslog facility = local3
timeout = 300

[test]
path = /usr/local/src
read only = no
list = yes
comment = test
auth users = test
secrets file = /etc/rsync.pas
hosts allow = 10.27.182.91
参数说明

[www]   #要同步的模块名
path = /usr/local/webapps  #要同步的目录
comment = www    #这个名名称无所谓,最后模块名一致
read only = no   # no客户端可上传文件,yes只读
write only = no  # no客户端可下载文件,yes不能下载
list = yes      #是否提供资源列表
auth users =test  #登陆系统使用的用户名,没有默认为匿名。
hosts allow = 192.168.0.10,192.168.0.20 #本模块允许通过的IP地址
hosts deny = 192.168.1.4     #禁止主机IP
secrets file=/etc/rsync.pas  #密码文件存放的位置
启动Rsync主进程

/usr/local/rsync/bin/rsync --daemon
监听端口 TCP 873
设置rsync服务器端同步密钥

vim /etc/rsync.pas
username:userpasswd #表示用户名:密码
test:test999
保存完毕,chmod 600 /etc/rsync.pas  设置权限为宿主用户读写

4、测试

在源服务器上启动auto_inotify.sh

nohup sh auto_inotify.sh &

在源服务器上对/usr/local/src目录做更改操作(创建、删除、修改),看备份服务器上的/usr/local/src是否一致。

  相关解决方案