先了解下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,服务器中可以看到同步:
删除看看:
可以用。没深入研究。