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&
- 最新评论