服务器间文件实时双向同步(rsync+inotify)
1.下载rsync+inotify
https://download.samba.org/pub/rsync/src/rsync-3.1.2.tar.gz http://github.com/downloads/rvoicilas/inotify-tools/inotify-tools-3.14.tar.gz --no-check-certificate
2.复制程序包到linux服务器中 然后安装rsync
cd /usr/local tar -zxvf rsync-3.1.2.tar.gz cd rsync-3.1.2 ./configure --prefix=/usr/local/rsync make & make install
3.配置rsync
vi /usr/local/rsync/rsyncd.conf
uid = root gid = root use chroot = 0 port = 873 #允许ip访问设置,请根据实际需要进行配置,这里为了方便设为全网段 * # hosts allow = 192.168.0.1/255.255.255.0 198.162.145.1 10.0.1.0/255.255.255.0 hosts allow = * max connections = 0 timeout = 300 pid file = /var/run/rsyncd.pid lock file = /var/run/rsyncd.lock log file = /var/log/rsyncd.log log format = %t %a %m %f %b transfer logging = yes syslog facility = local3 #方括号中为模块声明,对应命名,这里master_web对应了主web机配置 [master_web] #指定当前模块在rsync服务器上的同步路径,该参数是必须指定的 path = /home/test-file #注释,可以同模块名一样,从服务器可都为slave_web comment = master_web ignore errors #是否允许客户端上传文件 read only = no list = no #指定由空格或逗号分隔的用户名列表,只有这些用户才允许连接该模块 auth users = root #保存密码和用户名文件,需要自己生成 secrets file = /usr/local/rsync/rsyncd.passwd
创建用户名 密码文件
vi /usr/local/rsync/rsyncd.passwd 文件内容:root:密码 vi /root/rsyncd.passwd 文件内容:密码
赋予600权限
chmod 600 /usr/local/rsync/rsyncd.passwd chmod 600 /root/rsyncd.passwd
4.以守护进程方式启动rsync服务
/usr/local/rsync/bin/rsync --daemon --config=/usr/local/rsync/rsyncd.conf
添加开启自启动
echo "/usr/local/rsync/bin/rsync --daemon --config=/usr/local/rsync/rsyncd.conf">>/etc/rc.local
两台服务器都需要安装 rsync 都安装好后 测试rsync是否正常运行
rsync -vzrtopg --delete --progress /home/test-file/ root@192.168.51.117::master_web --password-file=/root/rsyncd.passwd
没有出现报错(部署成功)
node115:/usr/local/rsync # rsync -vzrtopg --delete --progress /home/test-file/ root@192.168.51.117::master_web --password-file=/root/rsyncd.passwd sending incremental file list ./ 11 0 100% 0.00kB/s 0:00:00 (xfr#1, to-chk=1/3) 22 0 100% 0.00kB/s 0:00:00 (xfr#2, to-chk=0/3) sent 163 bytes received 65 bytes 456.00 bytes/sec total size is 0 speedup is 0.00
5.安装inotify
tar -zxvf inotify-tools-3.14.tar.gz makedir /usr/local/inotify cd inotify-tools-3.14 ./configure --prefix=/usr/local/inotify make && make install
查看是否安装成功
ls -alh /usr/local/inotify/bin/inotify*
建立软连接
ln -s /usr/local/inotify/bin/inotifywait /usr/bin/inotifywait
ln -s /usr/local/inotify/bin/inotifywatch /usr/bin/inotifywatch
6.创建并配置inotify_back.sh 脚本
vi /usr/local/inotify/inotify_back.sh
脚本内容:
#!/bin/bash src=/home/test-file/ /usr/local/inotify/bin/inotifywait -mrq --timefmt '%d/%m/%y %H:%M' --format '%T %w%f%e' -e close_write,delete,create,attrib $src | while read file do rsync -vzrtopg --delete --progress /home/test-file/ root@192.168.51.117::master_web --password-file=/root/rsyncd.passwd echo "${file} was rsynced" >> /tmp/rsync.log 2>&1 done
另外一台服务器 更改ip即可
赋予可执行权限
chmod +x /usr/local/inotify/inotify_back.sh
运行inotify_back.sh同步监控脚本和配置守护进程
nohup /usr/local/inotify/inotify_back.sh &>/dev/null &
echo "nohup /usr/local/inotify/inotify_back.sh &>/dev/null &" >> /etc/rc.local
备注:注意端口是否开放 用户是否配置
rsync可能遇到的问题整理:https://blog.csdn.net/weixin_36131079/article/details/116599565
⎛⎝官萧何⎠⎞一只快乐的爪哇程序猿;邮箱:1570608034@qq.com
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· TypeScript + Deepseek 打造卜卦网站:技术与玄学的结合
· Manus的开源复刻OpenManus初探
· AI 智能体引爆开源社区「GitHub 热点速览」
· 三行代码完成国际化适配,妙~啊~
· .NET Core 中如何实现缓存的预热?