inotify+rsync同步服务器
在2台备份服务器上实时同步备份 主服务器指定的文件目录
简单的需求 简单的工具解决,也许还有更简单的.借鉴
inotify文件监控+rsync同步
https://www.cnblogs.com/architectforest/p/12360875.htmlhttps://www.cnblogs.com/ginvip/p/6430986.html
ip | 用途 | 系统 |
---|---|---|
192.168.3.131 | 主服务器 | kali |
192.168.3.97 | 备份服务器 | VM-CentOS-8.2.2004-x86_64-dvd1 |
192.168.3.103 | 备份服务器 | VM-CentOS-8.2.2004-x86_64-dvd1 |
1 主服务器配置
vim /etc/rsyncd.password
#创建文件 并写入 密码test
chmod 600 /etc/rsyncd.password
#权限必须是600
文件 | 默认值 | 说明 |
---|---|---|
max_user_watches | 8192 | 设置inotifywait或inotifywatch命令可以监视的文件数量(单进程) |
max_user_instances | 128 | 设置每个用户可以运行的inotifywait或inotifywatch命令的进程数 |
max_queued_events | 16384 | 设置inotify实例事件(event)队列可容纳的事件数量 |
inotify调整参数
.写入内核参数,用于大量文件同步,防止文件数目溢出(为防止重启丢失需要,写入rc.local)
ll /proc/sys/fs/inotify/ #查看参数
echo "5000000000" >/proc/sys/fs/inotify/max_user_watches
echo "10000000" >/proc/sys/fs/inotify/max_queued_events
echo "8192" >/proc/sys/fs/inotify/max_user_instance
startSyn.sh
测试时候用 bash startSyn.sh
稳定后可写入系统自启动项
#!/bin/bash
src=/root/work/httpworkkali # 需要同步的源路径
des=httpwork # 目标服务器上 rsync --daemon 发布的名称,rsync --daemon这里就不做介绍了,网上搜一下,比较简单。
rsync_passwd_file=/etc/rsyncd.password # rsync验证的密码文件
ip1=192.168.3.97 # 目标服务器1
ip2=192.168.3.103 # 目标服务器2
user=test # rsync --daemon定义的验证用户名
cd ${src}
# 此方法中,由于rsync同步的特性,这里必须要先cd到源目录,inotify再监听 ./ 才能rsync同步后目录结构一致,有兴趣的同学可以进行各种尝试观看其效果
/usr/bin/inotifywait -mrq --format '%Xe %w%f' -e 'modify,create,delete,attrib,close_write,move' ./ | while read