0 环境
IP | 用途 | OS |
---|---|---|
192.168.2.21 | rsync-server | centos7.3 |
192.168.2.22 | rsync-client | centos7.3 |
1 rsync server
常安装于 备份服务器
# rsyncd 编辑配置文件
vim /etc/rsyncd.conf
uid=root
gid=root
max connections=4
log file=/var/log/rsyncd.log
pid file=/var/run/rsyncd.pid
lock file=/var/run/rsyncd.lock
secrets file=/etc/rsyncd_users.db # 指定rsync 的用户密码文件
[www]
comment= backup web
path=/data/test
read only = no
hosts allow = * # 允许任意网段服务器访问此模块
exclude=test # 不让哪个用户访问
auth users=root # 认证用户
# 如果需要对所有人都可以免密, 则注释掉secrets file, auth users
创建账户验证文件
vim /etc/rsyncd_users.db
root:root123 # "用户名:密码"的形式
# 这一步很关键,不然会报错
chmod 600 /etc/rsyncd_users.db
启动服务
systemctl start rsyncd && systemctl enable rsyncd
2. rsync client
# 安装 inotify-tools
yum install -y inotify-tools
# 创建rsyncd-log 目录
mkdir /var/log/rsyncd/
# 编辑监听脚本,内容如下
mkdir -p /usr/local/scripts/ -p
vim /usr/local/scripts/user-inotify.sh
chmod +x /usr/local/scripts/user-inotify.sh
#!/bin/bash
HOST=192.168.2.21 # 远程主机的IP
SVN_SRC=/data/test/ # 远程目录
WEB_SRC=/data/test/ # 本地目录
PASSWD=/etc/rsyncd/root.pwd # 在文件中指定你的密码,
DES=www # rsync-server 端的标签
USER=root # rsync-server 所定义的用户
DATE=`date +%F`
RSYNC_LOGFILE=/var/log/rsyncd/${DATE}-rsync.log
inotifywait -mrq --timefmt '%d/%m/%y %H:%M' --format '%T %w%f' -e modify,delete,create,attrib ${WEB_SRC} | while read file
do
rsync -aH --delete --progress ${WEB_SRC} ${USER}@${HOST}::${DES} --password-file=${PASSWD} && echo "${file} rsync succesed" >> ${RSYNC_LOGFILE} 2>&1
if [ $? -ne 0 ];
then
echo "remote rsync failed" >> ${RSYNC_LOGFILE};
fi
echo "-----------------------------------END-------------------------------------" >> ${RSYNC_LOGFILE} 2>&1;
done
关键的一步:如下 :
echo root123 > /etc/rsyncd/root.pwd
chmod 600 /etc/rsyncd/root.pwd
再说一次 : 本文中所有密码文件的权限一定要设为 600
权限。
测试一下:
bash -x user-inotify.sh
echo test-page > /data/test/test-page.txt
# 去 rsync-server 上对应的目录看一眼,是否同步过去
# 如果没问题
# 写一个定时任务
echo * * * * * /usr/local/scripts/user-inotify.sh > /var/spool/cron/root
3 参考文档
- [配置rsync+inotify实现站点文件实时同步]: https://www.linuxidc.com/Linux/2018-08/153719.htm