rsync+inotify实现服务器之间文件实时同步
rsync 实现文件的同步
inotify 实现实时监控
服务器环境:linux centos7.0
主:192.168.135.142
备:192.168.135.143
安装包下载(也可以使用yum安装):https://download.csdn.net/download/u010533511/11071763
测试下载目录:/www/package/
主备服务器都要安装rsync
[root@localhost package]# tar zxvf rsync-3.0.9.tar.gz
[root@localhost package]# cd rsync-3.0.9
[root@localhost rsync-3.0.9]# ./configure --prefix=/usr/local/rsync
[root@localhost rsync-3.0.9]# make && make install
主服务器安装inotify-tools(备服务器不用安装)
[root@localhost package]# tar zxvf inotify-tools-3.14.tar.gz
[root@localhost package]# cd inotify-tools-3.14
[root@localhost inotify-tools-3.14]# ./configure --prefix=/usr/local/inotify
[root@localhost inotify-tools-3.14]# make && make install
设置密码文件,及给密码文件设置权限(主文件只设置密码)
[root@localhost rsync-3.0.9]# cd /usr/local/rsync/
[root@localhost rsync]# echo "123456" >/usr/local/rsync/rsync.passwd
[root@localhost rsync]# chmod 600 rsync.passwd
设置主配置文件
[root@localhost rsync]# vim rsync.conf
[www] #模块名称
path = /www/ #要同步目录
read only = no
list = no
hosts allow = 192.168.135.0/24 #允许ip
auth users =tbuser
secrets file = /usr/local/rsync/rsync.passwd #密码文件
创建自动同步脚本
[root@localhost rsync]# vim /tmp/rsync.sh
#!/bin/bash
# host 备服务器ip src同步目录 des 同步的模块名称 user同步的用户
host=192.168.135.143
src=/www/
des=www
user=tbuser
/usr/local/inotify/bin/inotifywait -mrq --timefmt '%d/%m/%y %H:%M' --format '%T %w%f%e' -e modify,delete,create,attrib $src \
| while read files
do
/usr/bin/rsync -vzrtopg --delete --progress --password-file=/usr/local/rsync/rsync.passwd $src $user@$host::$des
echo "${files} was rsynced" >> /www/rsync.log 2>&1
done
备服务器安装rsync
[root@localhost package]# tar zxvf rsync-3.0.9.tar.gz
[root@localhost package]# cd rsync-3.0.9
[root@localhost rsync-3.0.9]# ./configure --prefix=/usr/local/rsync
[root@localhost rsync-3.0.9]# make && make install
设置密码文件,及给密码文件设置权限(备服务器是 用户名:密码)
[root@localhost rsync-3.0.9]# cd /usr/local/rsync/
[root@localhost rsync]# echo "tbuser:123456" >/usr/local/rsync/rsync.passwd
[root@localhost rsync]# chmod 600 rsync.passwd
设置备配置文件
[root@localhost rsync]# vim rsync.conf
[www] #模块名称
path = /www/ #要同步目录
read only = no
list = no
hosts allow = 192.168.135.0/24 #允许ip
auth users =tbuser
secrets file = /usr/local/rsync/rsync.passwd #密码文件
创建用户
[root@localhost rsync]useradd tbuser #创建用户
[root@localhost rsync]passwd tbuser #设置密码
做一条软链指向到rsync(避免启动后同步会报找不到rsync的错误)
#ln -s /usr/local/rsync/bin/rsync /usr/bin/rsync
启动主服务器rsync: /usr/bin/rsync --daemon --config=/etc/rsync.conf
启动备服务器rsync: /usr/bin/rsync --daemon --config=/etc/rsync.conf
启动主服务器监控脚本:
# sh /tmp/rsync.sh & 在退出终端后会进程也会结束
# nohup /tmp/rsync.sh & 退出终端进程不会结束
测试在www目录下创建文件查看是否同步
rsync配置是模块化的,可以配置多个模块 [模块名称] 到下一个方括号开始或文件结束