rsync + inotify实现Linux服务器间文件实时同步功能

注意:以下几点需要在操作前确认

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 &
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值