快捷搜索:   nginx

rsync inotify ssh 实时同步

前提:源服务10.1.17.211 源目录/usr/local/mfs

         目的服务器:10.1.17.222 目的服务器目录/usr/local/mfs

         同步方向10.1.17.211:/usr/local/mfs/ —-> 10.1.17.222:/usr/local/mfs/

1.首先确认你的内核支持inotify,如果不支持对内核打补丁,一般情况内核在 2.6.3以上的都支持的。你可以确认下运行

ls -l /proc/sys/fs/inotify/
总用量 0
-rw-r–r– 1 ludy ludy 0 2008-12-16 14:40 max_queued_events
-rw-r–r– 1 ludy ludy 0 2008-12-16 14:40 max_user_instances
-rw-r–r– 1 root root 0 2008-12-16 09:07 max_user_watches

2.生成key
ssh-keygen -t rsa
cd /root/.ssh/
scp id_rsa.pub 10.1.17.222:/root/.ssh/
3,在10.1.17.211上写同步脚本

登录10.1.17.222 上执行
cd /root/.ssh/
cat id_rsa.pub > /root/.ssh/authorized_keys

脚板如下:

#!/bin/sh
src=/usr/local/mfs/    #源服务目录
des=/usr/local/mfs/   #目的服务器目录
ip=10.1.17.222         #目的服务器ip
/usr/bin/inotifywait -mrq --timefmt '%d/%m/%y %H:%M' --format '%T %w%f' -e modify,delete,create,attrib \
${src} \
| while read file
        do
                rsync -avz --delete --progress ${src} root@${ip}:${des} &&
                echo "${file} was rsynced" >> /tmp/rsync.log 2>&1
                echo "---------------------------------------------------------------------------" >> /tmp/rsync.log 2>&1
        done

inotifywait 参数说明:

-m 是保持一直监听
-r 是递归查看目录
-q 是打印出事件~
-e create,move,delete,modify
监听 创建 移动 删除写入 事件
rsync -aHqzt $SRC $DST

-a 存档模式
-H 保存硬连接
-q 制止非错误信息
-z 压缩文件数据在传输
-t 维护修改时间
-delete 删除于多余文件

4,测试

登录10.1.17.211

进入一个screen

执行

./inotify.sh&

顶(0)
踩(0)

您可能还会对下面的文章感兴趣:

最新评论