inotify+rsync多目录同步

系统:centos6.5

ip:10.19.21.241     被同步端

       10.19.21.242     同步端 


一.配置rsync(同步端)

1.安装rsync

# yum install -y rsync

2.写rsync配置

# vi /etc/rsyncd.conf
uid = root
gid = root
use chroot = no
max connections = 0      #最大连接数不限制
log file = /var/log/rsyncd.log
pid file = /var/run/rsyncd.pid
lock file = /var/run/rsyncd.lock
hosts allow = *      #允许所有主机

[test1]
path = /home/test1/
comment = rsync from everyone
read only = no
list = no
auth users = rsyncuser
secrets file = /etc/rsync.pas

[test2]
path = /home/test2/
comment = rsync from everyone
read only = no
list = no
auth users = rsyncuser
secrets file = /etc/rsync.pas

3.创建密码文件

# echo "rsyncuser:123456" > /etc/rsync.pas

4.更改密码文件权限

# chmod 600 /etc/rsync.pas

5.启动服务

# /usr/bin/rsync --daemon --config=/etc/rsyncd.conf

二.配置inotify(被同步端)

1.安装rsync

# yum install -y rsync

2.安装inotify

# wget http://nchc.dl.sourceforge.net/project/inotify-tools/inotify-tools/3.13/inotify-tools-3.13.tar.gz
# tar zxf inotify-tools-3.13.tar.gz
# cd inotify-tools-3.13
# ./configure --preifx=/usr/local/inotify
# make && make install

3.创建inotify_rsync_dirs.sh脚本

#!/bin/bash

inotify_rsync_fun ()
{

    dir=`echo $1 | awk -F"," '{print $1}'`
    ip=`echo $1 | awk -F"," '{print $2}'`
    des=`echo $1 | awk -F"," '{print $3}'`
    user=`echo $1 | awk -F"," '{print $4}'`




    /usr/local/inotify/bin/inotifywait -mr --timefmt '%d/%m/%y %H:%M' --format '%T %w %f' -e modify,delete,create,attrib ${dir} |while read DATE TIME DIR FILE
        do
                FILECHAGE=${DIR}${FILE}
                /usr/bin/rsync -av --progress --delete  --password-file=/etc/rsync.pas ${dir} ${user}@${ip}::${des} && echo "At ${TIME} on ${DATE}, file $FILECHAGE was backed up via rsync" >> /var/log/rsyncd.log
        done
}
count=2

# localdir,host,rsync_module,user of rsync_module,
sync1="/home/test1/,10.19.21.242,test1,rsyncuser"
sync2="/home/test2/,10.19.21.242,test2,rsyncuser"

#############################################################

#main
i=0
while [ ${i} -lt ${count} ]
do
    i=`expr ${i} + 1`
    tmp="sync"$i
    eval "sync=\$$tmp"
    inotify_rsync_fun "$sync" &
done

相关注释如下:

/usr/local/inotify/bin/inotifywait -mr

-m      是保持一直监听

-r      是递归查看目录

-q      是打印出事件

-e modify,delete,create,attrib 是指“监听 创建 移动 删除 写入权限”

/usr/bin/rsync -av --progress --delete  --password-file=/etc/rsync.pas

-a      存档模式

-delete      删除多余的文件

--password-file      密码文件 

4.添加密码文件

# echo 123456 > /etc/rsync.pas

5.添加权限

# chmod +x inotify_rsync_dirs.sh

6.执行命令

# ./inotify_rsync_dirs.sh

三.测试

241上创建目录
[root@VM-241 home]# mkdir /home/test1/dir{1,2,3}
242上查看
[root@VM-242 home]# ll test1
总用量 12
drwxr-xr-x 2 root root 4096 5月  13 18:33 dir1
drwxr-xr-x 2 root root 4096 5月  13 18:33 dir2
drwxr-xr-x 2 root root 4096 5月  13 18:33 dir3
241上创建文件
[root@VM-241 home]# touch /home/test2/file{1,2,3}
242上查看
[root@VM-242 home]# ll test2
总用量 0
-rw-r--r-- 1 root root 0 5月  14 10:49 file1
-rw-r--r-- 1 root root 0 5月  14 10:49 file2
-rw-r--r-- 1 root root 0 5月  14 10:49 file3



你可能感兴趣的:(rsync,inotfiy)