Rsync同步+inotify实时同步部署

文章目录

  • 一、Rsync
  • 二、配置reync源
    • 1、基本思路
    • 2、配置文件rsyncd.conf
    • 3、独立的账号文件
    • 4、启动rsync服务
  • 四、rsync命令
    • 1、命令使用语法
    • 2、常用选项
    • 3、格式
  • 五、inotify
  • 六、rsync本地复制
  • 七、配置rsync下同步
    • 1、在master服务器
  • 八、rsync+inotify实时同步
    • 1、在master修改配置文件
    • 2、在slave配置
  • 3、在master验证

一、Rsync

  • 快速增量备份的工具
  • remote sync,支持远程同步
  • 支持本地复制,或者与其他SSH,rsync主机同步

二、配置reync源

1、基本思路

  • 建立reyncd。conf配置文件、独立的账号文件
  • 启用rsync的 --daemon模式

2、配置文件rsyncd.conf

  • 认证配置auth users、secrets file,不加则为匿名

3、独立的账号文件

  • 用户名:密码
  • 每行一个用户记录
  • 独立的账号数据,不依赖系统账号

4、启动rsync服务

  • 通过 --daemon独自提供服务,rsync --daemon
  • 执行kill $(cat /var/run/rsyncd.pid)关闭服务

四、rsync命令

1、命令使用语法

  • reync 选项 原始位置 目标位置

2、常用选项

  • -a :归档模式,递归并保留对象属性,等同于-rlptgoD
  • -v:显示同步过程的详细信息
  • -z:在传输时进行压缩
  • -H:保留硬链接文件
  • -A:保留ACL属性信息
  • –delete:删除目标位置有而原始位置没有的文件
  • –checksum:根据对象的校验和决定是否跳过文件

3、格式

  • 用户名@主机地址::共享模块名
  • rsync://用户名@主机地址/共享模块名

五、inotify

5.1 可以监控文件系统的变动情况,并做出通知响应

  • 调整inotify内核参数(优化)
  • /etc.sysctl.conf(内核参数配置文件)
max_queue_events  #监控事件队列大小
max_user_instances #最多监控实例数
max_user_watches  #每个实例最多监控文件数
  • inotifywait:用于持续监控,实时输出结果
  • inotifywatch:用于短期监控,任务完成后在输出结果

5.2 常用选项
例: inotifywait -mrq -e modify,create,move,delete /var/www/html

  • -m:持续进行监控
  • -r:递归监控所有子对象
  • -q:简化输出信息
  • -e:指定要监控哪些时间类型
  • modify:修改
  • create:创建
  • move:移动
  • delete:删除

六、rsync本地复制

Rsync同步+inotify实时同步部署_第1张图片

七、配置rsync下同步

  • 下行同步:将master服务器数据备份到slave服务器

1、在master服务器

Rsync同步+inotify实时同步部署_第2张图片
1.1 修改master上的配置文件
在这里插入图片描述

Rsync同步+inotify实时同步部署_第3张图片
Rsync同步+inotify实时同步部署_第4张图片

Rsync同步+inotify实时同步部署_第5张图片
1.2 在slave配置
Rsync同步+inotify实时同步部署_第6张图片
Rsync同步+inotify实时同步部署_第7张图片

八、rsync+inotify实时同步

1、在master修改配置文件

在这里插入图片描述

Rsync同步+inotify实时同步部署_第8张图片
Rsync同步+inotify实时同步部署_第9张图片

2、在slave配置

Rsync同步+inotify实时同步部署_第10张图片
Rsync同步+inotify实时同步部署_第11张图片
Rsync同步+inotify实时同步部署_第12张图片
在这里插入图片描述

[root@slave ~]# vim /opt/inotify.sh
#!/bin/bash
INOTIFY_CMD="inotifywait -mrq -e create,delete,move,modify,attrib /opt/dog"
#INOTIFY_CMD变量=持续监控 /opt/dog目录中的创建,删除,移动,修改,改变事件
RSYNC_CMD="rsync -azH --delete --password-file=/etc/server.pass /opt/dog/  [email protected]::wwwroot"
#RSYNC_CMD变量=使用cat用户,/etc/server.pass密钥文件,将/opt/dog目录下的文件进行压缩,归档,保留硬链接文件同步至192.168.159.110的共享模块定义的目录下,并删除差异内容
$INOTIFY_CMD | while read DIRECTORY EVENT FILE  #持续监控...便利目录,增删改,文件
do
    if [ $(pgrep rsync | wc -l) -le 0 ] ; then #如果服务未启动,执行同步
        $RSYNC_CMD
        fi
done
[root@slave ~]# cd /opt
[root@slave opt]# chmod +x inotify.sh  /赋予权限
[root@slave opt]# ./inotify.sh &  /后台执行脚本
[3] 26932
[root@slave opt]# cd dog/ 
[root@slave dog]# ls
a.html  b.html  c.html
[root@slave dog]# touch 你好.html /创建文件
[root@slave dog]# drwxr-xr-x             48 2021/08/11 18:46:14 .
drwxr-xr-x             48 2021/08/11 18:46:14 .
-rw-r--r--              0 2021/08/11 16:59:51 a.html
-rw-r--r--              0 2021/08/11 16:59:51 a.html
-rw-r--r--              0 2021/08/11 16:59:51 b.html
-rw-r--r--              0 2021/08/11 16:59:51 b.html
-rw-r--r--              0 2021/08/11 18:46:14 c.html
-rw-r--r--              0 2021/08/11 18:46:14 c.html
drwxr-xr-x             67 2021/08/11 18:47:14 .
-rw-r--r--              0 2021/08/11 16:59:51 a.html
-rw-r--r--              0 2021/08/11 16:59:51 b.html
-rw-r--r--              0 2021/08/11 18:46:14 c.html
-rw-r--r--              0 2021/08/11 18:47:14 你好.html
[root@slave dog]# ls
a.html  b.html  c.html  你好.html

3、在master验证

Rsync同步+inotify实时同步部署_第13张图片

你可能感兴趣的:(linux)