innotify主要功能:
他是内核用于通知用户控件程序文件系统变化的机制。
也就是说,当服务器发生了任何的改动,内核都会知道并通知用户。
rssync(做同步的)+innotify做到的就是实时的同步。
首先,我们需要明白的rsync的工作机制,常用的工作模式有俩种:
1,rsync客户端向服务器端推送文件。eg:
rsync -avz --progress /opt/ yangshuai@192.168.10.152::backup1 --password-file=/etc/rsyncd.secrets1
opt:客户端被推送文件所在的目录。
yangshuai@192.168.10.152::backup1 对端服务器的用户和IP,加上模块
/etc/rsyncd.secrets1:本机的密码文件,只有密码。
2,rsync客户端从服务器端下载文件。
rsync -vzrtopg --password-file=/etc/rsyncd.secrets yangshuai@192.168.10.252::backup /opt
--password-file=/etc/rsyncd.secrets:本机的密码文件,只有密码.
yangshuai@192.168.10.252::backup 对端服务器的用户和IP,加上模块
opt: 想要把从服务器端下载的文件存放的目录。
要想利用rsync+innotify做到实时同步,我们可以用到的是rsync客户端向服务器端传送文件。
客户端需要做的是安装rsync,并安装innotity模块。
安装rsync:
yum -y install rsync
无需输入密码访问 echo "123456">>/etc/rsyncd.secrets
安装innotity模块并写监控脚本:
将压缩包上传到客户端
解压:tar zvxf inotify-tools-3.13.tar.gz
编译安装: cd inotify-tools-3.13
./configure --prefix=/usr/local/inotify
make && make install
编写监控脚本:
vi rsync.sh
#!/bin/bash
src=/opt/
des=backup1
ip=192.168.10.152
/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 -vzrtopg --delete --progress $src yangshuai@$ip::$des --password-file=/etc/rsyncd.secrets1 &&
echo "$src has been resynced"
done
执行监控脚本,并在后台执行
sh rsync.sh &
服务器端做的配置:
安装rsync,并编写配置文件:
yum -y install rsync
vi /etc/rsyncd.conf
pid file = /var/run/rsyncd.pid
port = 873
address = 192.168.10.152 #主机的地址
uid = root
gid = root
use chroot = yes
read only = no
write only = no
hosts allow = * #备份主机的地址
hosts deny = *
max connections = 10
timeout = 300
log file = /var/log/rsyncd.log
transfer logging = yes
log format = %t %a %m %f %b
[backup1]
path=/opt/ #被客户端推送的时候,是存放路径:被客户端下载的时候,是下载路径。
list = yes
ignore errors = yes
auth users = yangshuai #连接用户的名字
secrets file=/etc/rsyncd.secrets
编写密码文件并配置权限:
vi /etc/rsyncd.secrets
yangshuai:123456
chmod 600 /etc/rsyncd.secrets
启动服务:
rsync --daemon
现在整个rsync服务器就已经搭建好了,并且能做到实时同步。
直接在客户端做测试就好了
日常笔记,有问题的话请联系我531197592@qq.com
原文:http://11185185.blog.51cto.com/11175185/1862733