准备两台主机服务器
服务端:host1 192.168.1.109
客户端:host2 192.168.1.107
一.服务端配置
1.修改host1的rsync配置文件:
~]# vim /etc/rsyncd.conf
uid=root
gid=root
use chroot=no
max connections=0 #不限制最大连接数
exclude = lost+found
pid file = /var/run/rsyncd.pid
log file = /var/log/rsyncd.log
lock file =/var/run/rsyncd.lock
reverse lookup = no
hosts allow = 192.168.1.107/24 #允许连接的主机
ignore errors
[backup]
path = /backup/ #备份的到路径
comment = backup
read only= no
auth users = kobe #客户端同步数据到服务端时的授权账户
secrets file=/etc/rsync.pass #将授权账户与密码存放到此文件中
...
...
...
2.创建配置文件中的备份文件夹、授权账户、账户密码文件
创建用于备份的文件目录
~]# mkdir /backup/
创建授权用户
~]# useradd -r -s /sbin/nologin kobe
将授权的用户名及密码存入文件,为了安全将此文件设置600权限
~]# echo 'kobe:123456' > /etc/rsyncd.pass
~]# chmod 600 /etc/rsyncd.pass
3.服务端配置完成重新启动rsyncd服务加载配置文件
~]# systemctl restart rsyncd.service
二.客户端配置
1.yum安装监控包客户端工具inotifyd-tools、导入授权用户密码
~]# yum install inotify-tools -y
导入授权用户密码
~]# echo 123456 > /etc/rsyncd.pass
~]# chmod 600 /etc/rsynd.pass
2.编写脚本实现客户端与服务端实时同步
~]# vim /data/shell.sh/rsync_inotify.sh
#!/bin/bash
SRC='/data/shell.sh/'
DEST='kobe@192.168.1.109::backup'
inotifywait -mrq --timefmt '%Y-%m-%d %H:%M' --format '%T %w%f' -e create,delete,moved_to,close_write,attrib ${SRC} |while read DATE TIME DIR FILE;do
FILEPATH=${DIR}${FILE}
rsync -az --delete --password-file=/etc/rsync.pass $SRC $DEST && echo "At ${TIME} on ${DATE}, file $FILEPATH was backuped up via rsync" >> /var/log/changelist.log
done
:wq #保存退出
运行脚本文件实时同步开始 .....
~]# rsync_inotify.sh
三.客户端更改数据测试实时同步
1.服务端host1
监控backup文件夹,每秒钟刷新一次:
~]# watch -n 1 ls -l /backup
2.客户端host2
~]# ls -l /data/shell.sh
可以看出实现数据实时同步,在客户端修改数据时会自动将修改数据同步到服务端
3.客户端查看日志文件
显示客户端已备份到服务端的文件及备份的时间
~]# cat /var/log/changelist.log