博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
inotify+rsync实现实时同步
阅读量:3947 次
发布时间:2019-05-24

本文共 2166 字,大约阅读时间需要 7 分钟。

配置A服务器与B服务器免密登录

  • inotifywait命令使用简介:

inotifywait尤其适用于在脚本中等待某事件的发生,并可基于特定的事件执行相应操作。如将其用于脚本中监控某指定目录中的文件上的修改、新建、删除、属性信息的改变,而后使用rsync命令将某事件对应的文件同步至其它主机上。

直接开始吧,我们追求结果,不管原理。^ _^

安装实时监测工具inotify和同步工具rsync

$ sudo apt-get update$ sudo apt-get install inotify-tools$ sudo apt-get install rsync

添加 inotify 的参数到系统内核配置

$ tail -4 /etc/sysctl.conf###inotify的参数fs.inotify.max_queued_events = 16384fs.inotify.max_user_instances = 1024fs.inotify.max_user_watches = 1048576

inotify实时监控目录变化

$ inotifywait -mrq -e modify,create,move,delete /data/test

inotify单次监控目录或者文件变化(一般是目录才有意义)

$ inotifywatch -mrq -e modify,create,move,delete /data/test

配置完成之后直接编辑脚本

$ cat <
> inotifyRsync.sh#!/bin/bash#Author:Shensg#Time:2020-12-29DIR="/data/test"COPYDIR="/data/test"_INOTIFY_CMD="inotifywait -mrq -e modify,create,attrib,move,delete $DIR"_RSYNC_CMD="rsync -azH --delete $DIR/ ubuntu@192.168.7.19:$DIR"$_INOTIFY_CMD | while read DIRECTORY EVENT FILEdo if [ $(pgrep rsync | wc -l) -le 0 ] ; then $_RSYNC_CMD fidoneEOF

脚本配置好之后放到系统( /etc/profile.d/ )的启动文件目录里面,系统重启就会运行

如果不放到系统启动启动文件目录下也可以自己建一个进程运行也可以,看大家的喜好吧

rsync 指定目录和密码文件同步方式

$ cat <
> /home/$USER/rsyncd.confport = 2873use chroot = falsemax connections = 100strict modes = yespid file = /run/rsyncd.pidlock file = /run/rsync.locklog file = /var/log/rsyncd.log[www]path = /var/www/htmlcomment = Backup LobbyServer logs fileignore errorsread only = nowrite only = nolist = false##这个默认不识别,有时候生效,有时候不生效,笔者目前也不知道是什么原因,所以在写时会多写一个[test]path = /testcomment =Backup LobbyServer logs fileignore errorsread only = nowrite only = nolist = falsehosts allow = 10.10.104.255/32 #开启白名单hosts deny = 0.0.0.0/0 #拒绝所有人#auth users = ubuntusecrets file = /tmp/rsync.secrets #密码文件EOF

生成rsync的密码文件,授权600权限(必须是600权限,否则失败)

$ cat <
>/tmp/rsync.secrets#user:passwordubuntu:123456EOFchmod 600 /tmp/rsync.secrets

启动rsync进程

rsync --daemon --config=/home/$USER/rsyncd.conf

客户端只需要配置生成密码文件即可同步(密码文件直接复制服务端的即可)

生成rsync的密码文件,授权600权限(必须是600权限,否则失败)

$ cat <
>/tmp/rsync.secretsubuntu:123456EOFchmod 600 /tmp/rsync.secrets

同步文件

$ rsync -avz --password-file=/etc/rsyncd.secrets /var/www/html ubuntu@192.168.7.19::www

转载地址:http://hhqwi.baihongyu.com/

你可能感兴趣的文章
日本GAME製作方式
查看>>
移动行业术语资料
查看>>
3G到来将全面颠覆SP、CP游戏规则
查看>>
射击游戏中跟踪弹及小角度移动的开发
查看>>
播放声音文件的完整源代码
查看>>
J2ME编程最佳实践之灵活的RMS应用
查看>>
MOBILE FIRST: HOW TO APPROACH MOBILE WEBSITE TESTING? 移动优先:如何处理移动网站测试?
查看>>
开始使用Retrofit 2 HTTP 客户端
查看>>
对于初学者练习的6个开源项目
查看>>
保持冷静和需要打破的东西:软件测试初学者
查看>>
如何通过连接您的业务应用程序来节省时间
查看>>
熟悉现代JavaScript的培训计划
查看>>
7本书从小工到数据分析专家
查看>>
程序设计的基本原则:栈和堆
查看>>
Android应用程序架构
查看>>
Android:绘制自定义视图
查看>>
Android开发:一些有用的库(第一部分)
查看>>
Android 默认暗码
查看>>
Android 系列 1.3了解Android版本
查看>>
Android 系列 6.28使用正确的复数格式化
查看>>