设为首页 收藏本站
查看: 583|回复: 0

[经验分享] inotify+rsync双向同步

[复制链接]
累计签到:1 天
连续签到:1 天
发表于 2014-12-23 08:21:24 | 显示全部楼层 |阅读模式
inotify+rsync实现双向自动同步文件,这个在实验是由于本人所在公司一项业务需要实现双向同步,inotify+rsync的大多数配置都是单向实施的,这个双向实验经过验证是可行的,对于没有共享存储的但是又需要实现数据双向一致性的场景还是比较实用的。
Inotify+rsync实现双向同步实验
机器地址:192.168.14.202
          192.168.14.203

目录为/var/www/html/web202和/var/www/html/web203目录的所有者和所属组为rsync

用户为:rsync

部署步骤:

1、 在202上建立rsync服务器配置文件
[iyunv@S202 ~]# vim /etc/rsyncd.conf

uid = nobody
gid = nobody
use chroot = no
max connections = 200
timeout = 60
strict modes = yes
log file = /var/log/rsyncd.log
pid file = /var/run/rsyncd.pid
lock file = /var/run/rsync.lock
log format = %t %a %m %f %b
[web202]
path = /var/www/html/wwwlvyecn/web202
ignore errors
read only = no
write only = no
list = false
gid = rsync
uid = rsync
hosts allow = 192.168.14.203
auth users = rsync
secretsfile = /etc/rsyncd.passwd

配置文件参数说明:
Uid:此选项用于指定该模块传输文件时守护进程具有的用户ID默认是nobody
Gid:此选项用于指定该模块传输文件时守护进程具有的用户组ID默认是nobody
Maxconnections:指定最大的并发连接数,以包括服务器。超过限制的请求将被暂时限制,默认值为0 ,没有限制
Strictmodes:此选项用于指定是否检查口令文件的权限,yes为检查,反之为no,如果设置为yes,密码文件的权限必须为root用户的权限
[web202]:表示定义一个模块的开始,web202就是对应模块的名称
Path:用于指定需要备份的文件和目录。
Ignoreerror:表示可以忽略一些I/O错误
Read  only:设置为no 表示客户端可以上传文件,设置为yes表示只读
Write  only:设置为no表示客户端可以下载文件,设置为yes表示不能下载文件
Hosts  allow:设置可以连接rsync服务器的主机
Hostsdeny:设置禁止连接服务器的主机
List:设定当客户请求可以使用的模块列表是,该模块是否被列出,默认是true,如果需要建立隐藏的模块,可以设置为false
Vauth users:用来定义可以连接该模块的用户名,多个用户以空格或者逗号分隔开。需要注意的是,这里的用户和linux系统用户没有任何关系,这里指定的用户是backup
Secrets file:指定一个包含”用户名:密码”格式的文件,用户名就是auth users选项定义的用户,密码可以随便指定

2、 建立用户和密码文件
[iyunv@S202 ~]#echo “rsync:network”>/etc/rsyncd.passwd
[iyunv@S202 ~]#chmod 600 /etc/rsyncd.passwd

3、 启动rsync服务器
[iyunv@S202 ~]#rsync –daemon
4、 在203上安装inotify-tools工具包,并编写脚本如下:
[iyunv@203 ~]# vim /etc/rsync-bak.sh

#!/bin/sh
#create time 2014/11/20
Host=192.168.14.203
SRC=/var/www/html/web203
DES=web202
USER=rsync
/usr/bin/inotifywait -mrq –timefmt `%d/%m/%y%H:%M` --format `%T %w%f%e`  -ecreate,move,modify,attrib $SRC | while read files
       do
rsync -auzq --exclude "attachment"--password-file=/etc/rsyncd.passwd  $SRC$USER@$Host::$DES
        echo "${files} was rsynced">>/tmp/rsync.log 2>&1

脚本说明:

在使用inotify是时候可能需要调整的系统参数:
/proc/sys/fs/inotify/max_user_watches:表示每个inotify实例相关联的watches的上线,也就是inotify实例可以监控的最大目录数量

/proc/sys/fs/inotify/max_user_instances:每个real ID可以创建的inotify instances数量的上线

/proc/sys/fs/inotify/max_queued_events:在调用inotify_init时分配到inotify instances中可排队的event数的最大值,超过这个值的时间被丢弃

Inotifywait:
-m:即”monitor”,表示始终将保持事件监听状态
-r:即”recuresive”,表示递归查询目录
-q:即”quit”,表示打印出监控事件
-e:即”event”
--timefmt :指定时间的输出格式
--format:指定变化文件的详细信息
有时候会遇到这样的情况,向监控目录中写入一个很大的文件,当写入这个文件需要一段时间,inotify会持续不断的输出该文件被更新的信息,这样就会不断的触发rsync执行同步操作,占用大量的系统资源,针对这种情况,最理想的做法是等待文件写完后再触发rsync同步,这种情况下,可以修改inotify的监控时间即”-e close_write,delete,create,attrib”


Rsync:
         z:表示压缩
         r:表示递归
         t:用来保持文件时间信息
         o:用来保持文件属主信息
         p:用来保持文件权限
         g:用来保持文件的属组信息
         --exclude:用来拍出不需要传输的目录或文件
         --delete:制定以rsync服务器为基准进行数据进项同步,也就是要保持rsync服务器目录和客户端目录完全一样,谨慎使用。
         a:等于rlptgoD的集合

5、 建立密码文件
[iyunv@203 ~]# echo “network”>/etc/rsyncd.passwd
[iyunv@S203 ~]#chmod 600 /etc/rsyncd.passwd

6、 启动脚本

[iyunv@S203~]#nohup sh /etc/rsync-bak.sh &

  以上步骤实施完成后,单项同步及完成,把以上步骤再在202和203上反向部署一次就可以得到双向同步


运维网声明 1、欢迎大家加入本站运维交流群:群②:261659950 群⑤:202807635 群⑦870801961 群⑧679858003
2、本站所有主题由该帖子作者发表,该帖子作者与运维网享有帖子相关版权
3、所有作品的著作权均归原作者享有,请您和我们一样尊重他人的著作权等合法权益。如果您对作品感到满意,请购买正版
4、禁止制作、复制、发布和传播具有反动、淫秽、色情、暴力、凶杀等内容的信息,一经发现立即删除。若您因此触犯法律,一切后果自负,我们对此不承担任何责任
5、所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其内容的准确性、可靠性、正当性、安全性、合法性等负责,亦不承担任何法律责任
6、所有作品仅供您个人学习、研究或欣赏,不得用于商业或者其他用途,否则,一切后果均由您自己承担,我们对此不承担任何法律责任
7、如涉及侵犯版权等问题,请您及时通知我们,我们将立即采取措施予以解决
8、联系人Email:admin@iyunv.com 网址:www.yunweiku.com

所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其承担任何法律责任,如涉及侵犯版权等问题,请您及时通知我们,我们将立即处理,联系人Email:kefu@iyunv.com,QQ:1061981298 本贴地址:https://www.yunweiku.com/thread-38431-1-1.html 上篇帖子: 修复损坏的gz或tar.gz压缩文件之方法篇 下篇帖子: PXE实现批量部署linux系统
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

扫码加入运维网微信交流群X

扫码加入运维网微信交流群

扫描二维码加入运维网微信交流群,最新一手资源尽在官方微信交流群!快快加入我们吧...

扫描微信二维码查看详情

客服E-mail:kefu@iyunv.com 客服QQ:1061981298


QQ群⑦:运维网交流群⑦ QQ群⑧:运维网交流群⑧ k8s群:运维网kubernetes交流群


提醒:禁止发布任何违反国家法律、法规的言论与图片等内容;本站内容均来自个人观点与网络等信息,非本站认同之观点.


本站大部分资源是网友从网上搜集分享而来,其版权均归原作者及其网站所有,我们尊重他人的合法权益,如有内容侵犯您的合法权益,请及时与我们联系进行核实删除!



合作伙伴: 青云cloud

快速回复 返回顶部 返回列表