代码实时同步之rsync+inotify

先了解下rsync:

    rsync是lunix系统下的数据镜像备份工具。使用快速增量备份工具Remote Sync可以远程同步,支持本地复制,或者与其他SSH、rsync主机同步。

首先

两台服务器都安装rsync : yum install rsync

ok,下一步,开始配置:

需要同步文件内容的服务器配置(aaaa 服务器):

mkdir rsync

vi /etc/rsyncd.conf

uid = root 
gid = root 
usechroot = no
max connections = 20
timeout = 600
pid file = /var/run/rsyncd.pid
lock file = /var/run/rsync.lock
log file = /var/log/rsyncd.log
[webroot]
path = /rsync/
ignore errors
read only = false
list = no
auth users = users
secrets file = /etc/rsync.pas
hosts allow = 172.16.0.1
hosts deny = *

vi  /etc/rsync.pas

111111

给密码文件授权,权限不能高也不能低,600刚刚好

chmod 600 /etc/rsync.passwd

启动:

rsync --daemon 

查看状态:

[root@aaaa /]# ps -ef | grep rsync
root      5691     1  0 10:25 ?        00:00:00 rsync --daemon

 

重启rsync命令 service rsyncd restart

 

对接收文件的服务器配置(bbbb)

mkdir rsync

uid=root
gid=root
use chroot=no
max connections=4
strict modes=yes
port=873
log file=/var/log/rsyncd.log
lock file=/var/run/rsync.lock
pid file=/var/run/rsyncd.pid
[webroot]
path = /rsync
ignore errors
read only = false
list = no
auth users = users
secrets file = /etc/rsync.pas
hosts allow = 172.16.0.2
hosts deny = *
timeout=600

vi  /etc/rsync.pas

users:111111

给密码文件授权,权限不能高也不能低,600刚刚好

chmod 600 /etc/rsync.passwd

启动:

rsync --daemon 

[root@bbbb /]# ps -ef | grep rsync
root      5691     1  0 10:25 ?        00:00:00 rsync --daemon

 

到inotify了:

了解下概念:

    inotify 是Linux 的一个内核特性,是一种强大的、细粒度的、异步的文件系统事件监控机制。它可以监控文件系统中的添加、删除、修改、移 动等各种细微事件,并且及时向专门的应用程序发出相关的事件警告,比如删除、读、写和卸载操作等。

rsync+inotify

    rsync可以实现触发式的文件同步,但是通过crontab守护进程方式进行触发,同步的数据和实际数据会有差异,而inotify可以监控文件系统的各种变化,当文件有任何变动时,就触发rsync同步,这样刚好解决了rsync同步数据的实时性问题。

 

安装inotify(aaaa服务器):

wget --no-check-certificate https://github.com/downloads/rvoicilas/inotify-tools/inotify-tools-3.14.tar.gz

[root@aaaa soft]# tar zxvf inotify-tools-3.14.tar.gz 

[root@aaaa soft]# cd inotify-tools-3.14/

[root@aaaa inotify-tools-3.14]# ./configure --prefix=/usr/local/inotify

[root@aaaa inotify-tools-3.14]# make && make install

[root@aaaa soft]# vi inotify.sh

 

#!/bin/bash
SRC='/rsync/'
DEST='www@192.168.0.2::webroot'
inotifywait -mrq --timefmt '%Y-%m-%d %H:%M' --format '%T %w %f' -e create,delete,moved_to,close_write,attrib ${SRC} |while read DATE TIME DIR FILE;do
FILEPATH=${DIR}${FILE}
rsync -az --delete --password-file=/etc/rsync.pas $SRC $DEST && echo "At ${TIME} on ${DATE}, file $FILEPATH was backuped up via rsync" >> /var/log/rsync.log

 

[root@aaaa soft]# chmod a+x inotify.sh   #配置执行权限
[root@aaaa soft]# crontab -e 

* * * * * sh /usr/local/src/inotify.sh

 

测试:在aaaa服务器的rsync目录下添加几个文件:

touch {1..10}.txt

touch{100..103}.txt

touch{110..119}.txt

在bbbb,服务器中可以看到同步:

删除看看:

可以用。没深入研究。

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值