rsync+inotify文件实时同步
(1)服务端环境搭建(需要同步的服务器)
1.安装:
wget https://download.samba.org/pub/rsync/src/rsync-3.0.6.tar.gz
tar -zxvf rsync-3.0.6.tar.gz
./configure --prefix=/usr/local/rsync
make
make install
2.配置
配置rsyncd.conf 不存在就手动创建 touch /usr/local/rsync/rsyncd.conf
uid = root
gid = root
use chroot = yes
strict modes = false
pid file = /var/run/rsyncd.pid
lock file = /var/run/rsync.lock
####
log file = /var/log/rsyncd.log
transfer logging = true
log format= "%o [%a] %m (%u) %f %l %b %c"
##
reverse lookup = no
ignore errors = true
read only = false
hosts allow = 192.168.0.13
hosts deny = 0.0.0.0/0.0.0.0
strict modes = yes
list = false
max connections = 100
timeout = 1800
[www] //模块名
path = /data/www/ //需要同步的文件地址
auth users = www //用户名
secrets file = /usr/local/rsync/rsyncd.secrets //密码文件
配置rsyncd.secrets 不存在就手动创建 touch /usr/local/rsync/rsyncd.secrets(密码文件的权限应为600)
//格式:用户名:密码
www:123456789
配置rsyncd.motd 不存在就手动创建 touch /usr/local/rsync/rsyncd.motd 该步骤可以省略(内容无限制,自定义)
3.启动rsync
看看进程是否启动
ps aux | grep rsyncd
启动命令:
//启动文件地址 --daemon --config=配置文件地址
/usr/local/rsync/bin/rsync --daemon --config=/usr/local/rsync/rsyncd.conf
配置开机自启动
echo "/usr/local/rsync/bin/rsync --daemon --config=/usr/local/rsync/rsyncd.conf">> /etc/rc.local
(2)client客户端
使用yum进行安装
yum -y install rsync
设置密码,密码地址/etc/rsyncd.passwd 此处密码需要和服务端上边的 /usr/local/rsync/rsyncd.secrets 密码文件中的密码一致 (密码文件的权限应为600)
(3)同步文件
rsync -RaP 原服务器中需要同步的文件的地址 用户名@需要同步的服务器ip::模块名--password-file=密码文件地址
rsync -RaP /tmp/test.txt www@192.168.0.10::www --password-file=/etc/rsyncd.passwd
(4)配置inotify
安装:
wegt http://github.com/downloads/rvoicilas/inotify-tools/inotify-tools-3.14.tar.gz
tar zxf inotify-tools-3.14.tar.gz
cd inotify-tools-3.14
./configure --prefix=/usr/local/inotify-tools-3.14
make&&make install
设置同步的sh文件
host=192.168.157.33 #目标服务器的ip(备份服务器)
src=/etc #在源服务器上所要监控的备份目录(此处可以自定义,但是要保证存在)
des=etc_from_client #自定义的模块名,需要与目标服务器上定义的同步名称一致
password=/etc/rsync.password #执行数据同步的密码文件
user=JauLi #执行数据同步的用户名
inotifywait=/usr/bin/inotifywait
$inotifywait -mrq --timefmt '%Y%m%d %H:%M' --format '%T %w%f%e' -e modify,delete,create,attrib $src | while read files ; do
rsync -avzP --delete --timeout=100 --password-file=${password} $src $ user@$ host::$des
echo "${files} was rsynced" >>/tmp/rsync.log 2>&1
done
运行shell为文件
nohup bash /scripts/inotify.sh &
查看是否有inotify进程
ps -ef|grep inotify
设置开机自启动
echo "nohup /bin/bash /scripts/inotify.sh &">> /etc/rc.local