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 |
#!/bin/sh src=/usr/local/src/ ----源服务器上需同步数据的目录 |
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 |
基于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 #密码文件存放的位置 |
/usr/local/rsync/bin/rsync --daemon 监听端口 TCP 873 |
vim /etc/rsync.pas username:userpasswd #表示用户名:密码 test:test999 |
4、测试
在源服务器上启动auto_inotify.sh
nohup sh auto_inotify.sh & |
在源服务器上对/usr/local/src目录做更改操作(创建、删除、修改),看备份服务器上的/usr/local/src是否一致。