Rsync + Inotify实现文件实时同步

629次阅读

共计 2205 个字符,预计需要花费 6 分钟才能阅读完成。

环境介绍

1、源服务器及目录

172.20.2.10       /data

2、目的服务器及目录

172.20.2.11       /data

 

源服务器部署

1、rsync

与传统的cp、tar备份方式相比,rsync具有安全性高、备份迅速、支持增量备份等优点,通过rsync可以解决对实时性要求不高的数据备份需求,例如定期的备份文件服务器数据到远端服务器,对本地磁盘定期做数据镜像等。

2、inotify
Inotify 是一种强大的、细粒度的、异步的文件系统事件监控机制,linux内核从2.6.13起,加入了Inotify支持,通过Inotify可以监控文件系统中添加、删除,修改、移动等各种细微事件,利用这个内核接口,第三方软件就可以监控文件系统下文件的各种变化情况,而inotify-tools就是这样的一个第三方软件。

源服务器

1、安装rsync

安装rsync有两种方式,yum和编译安装,均可以,这里为方便采用yum安装

yum install rsync -y

Rsync + Inotify实现文件实时同步

2、安装inotify

首先下载源码包

[url href=http://pan.cloudcared.cn/f/6fd1e53eb99448d1b5fe]个人网盘[/url]

解压
tar zxf inotify-tools-3.14.tar.gz
cd inotify-tools-3.14
编译(需要gcc及make环境,提前安装)
./configure --prefix=/usr/local/inotify
make && make install

同步方式一、SSH互信

1、做SSH互信,采用脚本同步

首先做好两台机器的SSH互信

同步脚本

#!/bin/bash  
host=172.20.2.11
src=/data/
des=/data
user=root
/usr/local/inotify/bin/inotifywait -mrq --timefmt '%d/%m/%y %H:%M' --format  '%T %w%f' -e modify,delete,create,attrib ${src} | while read  file  
 do
         rsync -az --rsh=ssh --delete --progress ${src} ${user}@${host}:/${des}
         
 done

同步方式二、密码保存至本地文件

1、将目的服务器密码保存至本地,读取密码文件来同步

目的服务器配置:

[root@172-20-2-11 ~]# echo "rsyncbak:rsyncpwd" > /etc/rsync.pwd
[root@172-20-2-11 ~]# chmod 600 /etc/rsync.pwd

请记住,在server端建立的密码文件,只有密码,没有用户名;而在备份服务端client里建立的密码文件,用户名与密码都有。

建立配置文件

vim /etc/rsyncd.conf

uid = root
gid = root
use chroot = no
max connections = 10
strict modes = yes
pid file = /var/run/rsyncd.pid
lock file = /var/run/rsync.lock
log file = /var/log/rsyncd.log
[web]
path = /data
comment = web file
ignore errors
read only = no
write only = no
hosts allow = 172.20.2.11
hosts deny = *
list = false
uid = root
gid = root
auth users = rsyncbak
secrets file = /etc/rsync.pwd

启动服务

rsync --daemon --config=/etc/rsyncd.conf

源服务器配置:

[root@172-20-2-10 ~]# echo "rsyncpwd" > /etc/rsync.pwd
[root@172-20-2-10 ~]# chmod 600 /etc/rsync.pwd

其中rsyncpwd可以自己设置密码,rsync.pwd名字也可以自己设置

建立配置文件

vim /etc/rsyncd.conf

uid = root
gid = root
use chroot = no
max connections = 10
strict modes = yes
pid file = /var/run/rsyncd.pid
lock file = /var/run/rsync.lock
log file = /var/log/rsyncd.log
[web]
path = /data
comment = web file
ignore errors
read only = no
write only = no
hosts allow = 172.20.2.11
hosts deny = *
list = false
uid = root
gid = root
auth users = rsyncbak
secrets file = /etc/rsync.pwd

启动服务

rsync --daemon --config=/etc/rsyncd.conf

同步测试

运行脚本,并打入后台执行

Rsync + Inotify实现文件实时同步

采用watch命令监控目的服务器的/data目录及/data目录中一个文件

[root@172-20-2-11 ~]# watch -d 'ls -l /data/'
[root@172-20-2-11 ~]# watch -d 'cat /data/test'

Rsync + Inotify实现文件实时同步

在源服务器/data目录创建、删除、修改文件,分别观察目的服务器种的变化

新建

Rsync + Inotify实现文件实时同步

修改

Rsync + Inotify实现文件实时同步

删除

Rsync + Inotify实现文件实时同步

正文完
 
mervinwang
版权声明:本站原创文章,由 mervinwang 2017-09-27发表,共计2205字。
转载说明:除特殊说明外本站文章皆由CC-4.0协议发布,转载请注明出处。
文章搜索