inotify-tools+rsync的实现原理是,在服务器中使用inotify-tools监控文件夹中的文件的改变(添加,删除文件),rsync进行文件传输。
在A服务器上,需要确定你的系统是否支持inotify:
能输出这样的结果表示支持
2.安装inotify-tools
如果服务器能联网则用apt安装,输入命令apt-get install inotify-tools
如果服务器不能联网就下载离线安装包安装,安装命令如下
wget --no-check-certificate http://github.com/downloads/rvoicilas/inotify-tools/inotify-tools-3.14.tar.gz
tar xzvf inotify-tools-3.14.tar.gz
cd inotify-tools-3.14
./configure --prefix=/usr
make
make install
3.配置inotify-tools
3.1vim /root/inotify_init.sh
内容为:
SRC=/data/file/
DES=bbsatt
IP=服务器B的ip地址
USER=rsync
#DST=/etc/rsyncd 远程rsync模块下的目录
INWT=/usr/bin/inotifywait
RSYNC=/usr/bin/rsync
$RSYNC -zahqt --password-file=/root/rsync.pwd $SRC $USER@$IP::$DES
设置脚本的可执行权限chmod
+x /root/inotify_init.sh
3.2vim /root/inotify_monitor.sh
INWT=/usr/bin/inotifywait
$INWT -mrq --timefmt '%d/%m/%y %H:%M' --format '%T %w%f %e' --event CLOSE_WRITE,create,move /data/file/ | while read date time file event
do
case $event in
MODIFY|CREATE|MOVE|MODIFY,ISDIR|CREATE,ISDIR|MODIFY,ISDIR)
if [ "${file: -4}" != '4913' ] && [ "${file: -1}" != '~' ]; then
cmd="rsync -avz /data/file/ rsync@B服务器IP地址::bbsatt --password-file=/root/rsync.pwd"
echo $cmd
$cmd
fi
;;
esac
done
3.3设置rsync密码
vim /root/rsync.pwd
在里面设置密码,例如
设置rsync.pwd权限
chmod
600 /root/rsync.pwd
4.设置备份服务器B
4.1安装rsync,ubuntu服务器默认安装了rsync,一般不需要自己安装,rsync的默认端口是873
4.2配置rsync
vim /etc/rsyncd.conf
uid = root
gid = root
use chroot = no
max connections = 4
pid file = /var/run/rsyncd.pid
lock file = /var/run/rsync.lock
log file = /var/log/rsyncd.log
[bbsatt]
path = /data/file/
ignore errors
read only = no
list = false
hosts allow = 服务器A的ip
auth users = rsync
secrets file = /etc/rsync.pas
4.3配置rsync密码(密码与服务器A中设置的rsync密码一致)
vim /etc/rsync.pas
设置rsync.pas权限
chmod
600 /etc/rsync.pas
4.4启动rsync
rsync --daemon
5.文件同步
5.1测试量台服务之间直接用rsync同步
在服务器A中输入
rsync -avz /data/file rsync@服务器B的ip::bbsatt
如果执行成功,而且服务器A中的文件也同步到B中了,则表示rsync正常
5.2启动inotify_init.sh和inotify_monitor.sh
分别执行命名/root/
inotify_init.sh和/root/inotify_monitor.sh
无报错表示启动成功,现在往A服务器中的/data/file文件夹中放入一个新文件,如果在B服务器中成功接收,则整个配置成功。