首页 > 代码库 > rsync+innotify做到同步式更新

rsync+innotify做到同步式更新

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=http://www.mamicode.com/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

rsync+innotify做到同步式更新