当前位置:首页 > 操作系统 > Linux

linux服务器 rsync + inotify 实时网站镜像

系统版本: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


【说明】本文章由站长整理发布,文章内容不代表本站观点,如文中有侵权行为,请与本站客服联系(QQ:254677821)!