系统版本:CentOS 6.5 rsync版本:rsync-3.0.6-9 inotify-tools版本:inotify-tools-3.14
rsync工具与inotify机制相结合,可以实现触发式备份(实时同步)——只要原始位置的文档发生变化,则立即启动增量备份操作,这样就可以实现实时网站镜像功能
案例拓扑图:
650) this.width=650;" src="/upload/getfiles/default/2022/11/12/20221112010042501.jpg" title="案例拓扑图.jpg" />
案例环境:某公司在北京和上海两地各放置了一台网站服务器,分别应对南北大区内不断增长的客户访问需求,两台服务器的网站文档必须保持一致,同步链路已经通过VPN专用线路实现
650) this.width=650;" src="/upload/getfiles/default/2022/11/12/20221112010042808.jpg" title="案例环境.jpg" />
一、配置服务器A
1.安装软件rsync、openssh和openssh-server(系统默认已经安装,如没有使用rpm包安装即可)
650) this.width=650;" src="/upload/getfiles/default/2022/11/12/20221112010043109.jpg" title="安装rsync.jpg" />
2.安装inotify-tools工具(提供inotifywait、inotifywatch辅助工具,用来监控、汇总改变情况)
650) this.width=650;" src="/upload/getfiles/default/2022/11/12/20221112010043348.jpg" title="安装inotify-tools.jpg" />
3.构建ssh的密匙对验证
650) this.width=650;" src="/upload/getfiles/default/2022/11/12/20221112010043596.jpg" title="创建秘钥对.jpg" />
将密钥的公匙文件发送到服务器B的/tmp目录中
650) this.width=650;" src="/upload/getfiles/default/2022/11/12/20221112010043850.jpg" title="上传公匙.jpg" />
二、配置服务器B
1.安装软件openssh和openssh-server(系统默认是安装好的)
650) this.width=650;" src="/upload/getfiles/default/2022/11/12/20221112010044160.jpg" title="安装openssh.jpg" />
2.创建用于上传数据的用户
650) this.width=650;" src="/upload/getfiles/default/2022/11/12/20221112010044372.jpg" title="创建用户.jpg" />
3.设置用户对目录的写权限(由于/var/www/html是网站目录,为了安全起见,不建议更改目录的归宿,可以通过设置文件或目录的ACL属性来实现rsync对目录的写权限)
650) this.width=650;" src="/upload/getfiles/default/2022/11/12/20221112010044632.jpg" title="设置权限.jpg" />
4.导入公匙文本(之前服务器A上传过来的公匙文件,在/tmp/目录下)
首先创建用户rsync的公匙数据库目录/home/rsync/.ssh
650) this.width=650;" src="/upload/getfiles/default/2022/11/12/20221112010044909.jpg" title="创建公匙数据库.jpg" />
然后将公匙文件导入到该数据库中,默认文件名为authorized_keys
650) this.width=650;" src="/upload/getfiles/default/2022/11/12/20221112010045185.jpg" title="导入公匙文件.jpg" />
5.开启sshd服务,并且注意防火墙规则
650) this.width=650;" src="/upload/getfiles/default/2022/11/12/20221112010045396.jpg" title="启动sshd.jpg" />
三、编写触发式同步脚本,在客户机(服务器A)上操作
1.实时监控工具inotifywait用法:
选项“-e”用来指定要监控哪些事件,选项“-m”表示持续监控,选项“-r”表示递归整个目录,选项“-q”简化输出信息;可以监控modify(修改)、create(创建)、move(移动)、delete(删除)、attrib(属性更改)等各种事件,一有变动马上输出结果
2.编写脚本,内容如下:
650) this.width=650;" src="/upload/getfiles/default/2022/11/12/20221112010045761.jpg" title="编写脚本.jpg" />
650) this.width=650;" src="/upload/getfiles/default/2022/11/12/20221112010046019.jpg" title="脚本.jpg" />
四、启动脚本文件,验证是否同步
650) this.width=650;" src="/upload/getfiles/default/2022/11/12/20221112010046324.jpg" title="执行脚本.jpg" />
1.在服务器A的/var/www/html目录下创建文件
650) this.width=650;" src="/upload/getfiles/default/2022/11/12/20221112010046531.jpg" title="测试客户机.jpg" />
2.查看服务器B的/var/www/html目录中是否同步
650) this.width=650;" src="/upload/getfiles/default/2022/11/12/20221112010046798.jpg" title="测试服务器.jpg" />
这样就达到了实时同步的效果
原文:http://928004321.blog.51cto.com/10707688/1747044