注意:以下几点需要在操作前确认
1、同步服务器各自的IP地址(源服务器IP和目的服务器IP)
2、同步服务器各自需要同步的文件夹路径(源文件夹路径和目的文件夹路径)
inotify-tools版本:3.14
rsync版本:3.1.2
inotify-master:192.168.0.1
inotify-slave:192.168.0.2
场景:inotify-master服务器/app/appmgr目录下的文件夹及子目录和子文件,实时同步至inotify-slave服务器/app/appmgr目录下
注意:以下所有步骤均在root用户下进行
1.inotify-slave配置
1.1.安装rsync
1)在/app下创建rsync文件夹,将rsync安装包上传至该目录下。
2)解压
# tar -zxvf rsync-3.1.2.tar.gz
3)安装
# ./configure --prefix=/usr/local/rsync
# make -j 4 && make install
1.2.创建rsync虚拟用户
# useradd -s /bin/nologin -M rsync
1.3.将同步目录授予rsync用户有权限更改数据
如果只添加虚拟账户对该目录的读写操作也可以,此处是默认所有用户
# chmod -R 777 /app/appmgr
1.4.配置虚拟用户密码文件
设置账号密码,格式如下:user:passwrod
# vi /etc/rsyncd.secrets
rsync:kjxxb@77
# chmod 600 /etc/rsyncd.secrets
1.5.配置rsyncd.conf
# vi /etc/rsyncd.conf
uid = rsync
gid = rsync
read only = no
use chroot = no
transfer logging = true
log format = %h %o %f %l %b
log file = /var/log/rsyncd.log
pid file = /var/run/rsyncd.pid
hosts allow = 192.168.0.1 ##inotify-master地址,需根据不同环境调整
slp refresh = 300
[rsync]
path = /app/appmgr/ ##备份目录,按实际配置
comment = rsync
auth users = rsync ##必须使用配置的虚拟用户
secrets file = /etc/rsyncd.secrets ##虚拟用户对应的密码文件
max connections = 200
1.6.启动rsync服务
以rsync守护进程启动
# rsync --daemon --config=/etc/rsyncd.conf
1.7.验证rsync服务
# ps aux | grep rsync
root 1330 0.0 0.0 114640 328 ? Ss 21:13 0:00 rsync --daemon --config=/etc/rsyncd.conf
root 1338 0.0 0.1 112644 952 pts/0 R+ 21:13 0:00 grep rsync
2.inotify-master配置
2.1.同inotify-slave安装rsync
2.2.配置虚拟用户的密码文件
# vi /etc/rsync.pas
kjxxb@77 ##注意:只需要设置虚拟用户密码
# chmod 600 /etc/rsync.pas
2.3.通过inotify源码包编译安装
# tar -zxf inotify-tools-3.14.tar.gz
# cd inotify-tools-3.14/
# ./configure --prefix=/usr/local/inotify ##指明安装路径
# make -j 4 && make install
2.4.编写同步脚本inotify.sh
#!bin/bash
##本地监控目录,按实际配置
srcDir=/app/appmgr
##inotify-slave的IP地址,按实际环境配置
dstHost=192.168.0.2
##inotify-slave的模块名[rsync]
dstDir=rsync
inotify_home=/usr/local/inotify
if [ ! -e "$srcDir" ] || [ ! -e "${inotify_home}/bin/inotifywait" ] || [ ! -e "/usr/bin/rsync" ] || [ ! -e "/etc/rsync.pas" ];
then
echo "Check File and Folder"
exit 1
fi
${inotify_home}/bin/inotifywait -mrq -e 'close_write,create,delete,modify,attrib' --timefmt '%d-%m-%y %H:%M' --format '%T %w%f' $srcDir | while read file
do
cd $srcDir && rsync -aruz -R --delete ./ --timeout=100 --password-file=/etc/rsync.pas rsync@$dstHost::$dstDir >/dev/null 2>&1
done
exit 0
2.5.启动监听脚本
# bash -x inotify.sh &