Rsync+Inotify实时同步

故事扮演 提交于 2020-01-25 17:56:38

#实现两服务器文件实时同步

rsync:负责传输同步文件

inotify:负责监测文件变动

(服务端)# yum -y install rsync

上行同步

先部署无密码登陆远程服务器

# ssh-keygen -t rsa

# ssh-copy-id root@192.168.100.151

# rsync -avzH /kubernetes root@192.168.100.151:/

  • -v 输出详细信息
  • -z 压缩传输
  • -H 保持硬链接
  • -a 归档模式、保留文件权限、时间、链接、归属、特殊文件

部署Inotify文件监控

内核模块,监控文件和目录的变化,inotify-tools工具提供inotify-wait(持续监控)和inotify-watch(短期监控)两个模块进行监控

# tar -zxvf inotify-tools-3.13.tar.gz  -C  /usr/src/

# cd /usr/src/inotify-tools-3.13/

# ./configure  &&make &&make  install

# ls  /usr/local/bin/inotify*

# vi  /etc/sysctl.conf

  • fs.inotify.max_queued_events = 16384                ##监控事件队列数
  • fs.inotify.max_user_instances = 1024            ##监控实例数

  • fs.inotify.max_user_watches = 1048576                 ##监控的文件数量

# sysctl -p

  #监控文件内容的各种变化

# inotifywait -mrq  -e  modify,create,attrib,move,delete  /kubernetes-yaml

注:-m持续监控,r递归目录,q简化输出,-e指定监控事件:modify修改、create创建、attrib权限修改、move移动、delete删除;在其他终端操作文件,查看变化

#编写脚本

# vim rsync_inotify.sh

#!/bin/bash
RSYNC="rsync -avzH /kubernetes-yaml root@192.168.100.151:/ --delete"
INT_CMD="inotifywait -mrq -e modify,create,move,delete,attrib /kubernetes-yaml"
$INT_CMD |while read DIRECOTRY EVENT FILE;do
$RSYNC
done

# chmod  +x  rsync_inotify.sh

#后台运行

# rsync_inotify.sh  &

标签
易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!