ThankNeko's Blog ThankNeko's Blog
首页
  • 操作系统

    • Linux基础
    • Linux服务
    • WindowsServer笔记
    • Ansible笔记
    • Shell笔记
  • 容器服务

    • Docker笔记
    • Kubernetes笔记
    • Git笔记
  • 数据库服务

    • MySQL笔记
    • ELK笔记
    • Redis笔记
  • 监控服务

    • Zabbix笔记
  • Web服务

    • Nginx笔记
    • Tomcat笔记
  • 数据处理

    • Kettle笔记
  • Python笔记
  • Bootstrap笔记
  • C笔记
  • C++笔记
  • Arduino笔记
  • 分类
  • 标签
  • 归档
  • 随笔
  • 关于
GitHub (opens new window)

Hoshinozora

尽人事,听天命。
首页
  • 操作系统

    • Linux基础
    • Linux服务
    • WindowsServer笔记
    • Ansible笔记
    • Shell笔记
  • 容器服务

    • Docker笔记
    • Kubernetes笔记
    • Git笔记
  • 数据库服务

    • MySQL笔记
    • ELK笔记
    • Redis笔记
  • 监控服务

    • Zabbix笔记
  • Web服务

    • Nginx笔记
    • Tomcat笔记
  • 数据处理

    • Kettle笔记
  • Python笔记
  • Bootstrap笔记
  • C笔记
  • C++笔记
  • Arduino笔记
  • 分类
  • 标签
  • 归档
  • 随笔
  • 关于
GitHub (opens new window)
  • 操作系统

    • Linux基础

    • Linux服务

      • Rsync文件传输
      • Sersync实时同步
        • Sersync介绍
        • 部署方法
          • 部署rsync服务
          • 部署inotify监控服务
          • 部署sersync服务
        • inotifywait命令
          • 事件监控的企业应用
        • Sersync命令
          • sersync [参数]
          • sersync配置文件
      • NFS文件服务
      • SSH远程连接
      • Keepalived高可用
      • Supervospr进程管理
      • APT包管理工具
      • Samba文件共享
      • JumpServer堡垒机
      • Linux搭建DNS服务
      • Tmux终端管理
      • Iptables
      • Firewalld防火墙管理
      • OpenVPN代理
      • 本地yum仓库搭建
    • Windows Server笔记

    • Shell笔记

    • Ansible笔记

  • 虚拟化服务

  • 数据库服务

  • 监控服务

  • Web服务

  • 数据处理

  • Ops
  • 操作系统
  • Linux服务
Hoshinozora
2024-03-09
目录

Sersync实时同步

# Sersync介绍

Sersync用于实时同步数据,它通过将inotify服务和rsync服务建立联系,实现实时同步数据的功能。

inotify用于监控存储服务器目录的数据的变化。

rsync用于数据发生变化则使用rsync进行传输。

# 部署方法

# 部署rsync服务

参考往期Rsync文章。

服务端配置:配置文件、备份目录、用户密码文件

客户端配置:备份目录、密码文件

# 部署inotify监控服务

# 需要安装epel源
yum install -y inotify-tools
1
2
  • inotifywait命令用于监控目录数据信息变化。

  • inotifywatch命令用于对监控的的变化信息进行统计,没什么用。

# 部署sersync服务

首先要确保inotify服务和rsync服务已经部署完成。

# 创建放置软件包的目录,如:/data/tools

# 下载部署sersync软件:https://github.com/wsgzao/sersync

# 解压压缩包,进行部署

# 将解压的软件移动到/usr/local目录

# 编写sersync配置文件

# 添加文件路径到PATH环境变量或创建软链接到PATH中的目录

# 添加命令可执行权限

# 执行sersync命令,默认会使用无差异同步--delete
sersync -dro /usr/local/sersync/confxml.xml

# 设为开机自动启动,命令添加到rc.local文件中,并使rc.local源文件拥有执行权限
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18

# inotifywait命令

用于监控目录数据信息变化。

inotifywait [参数] [监控的目录]

  • -m 持续监控目录的数据变化

  • -r 进行递归监控目录下的子目录下...

  • -q 尽量减少信息的输出

  • --format '[格式]' 指定输出信息的格式

    • %T 代表时间信息
    • %w 代表目录信息
    • %f 代表文件名信息
    • %e 代表事件信息
  • --timefmt '[格式]' 指定输出的时间信息的格式

    • 如%F、%T等
  • -e 仅监控指定的事件

    • 一般监控CREATE、DELETE、MOVED_TO、CLOSE_WRITE事件
    • 指定多个可 -e "CREATE,DELETE......"
  • -d 后台运行,需要指定 –outfile

  • -o 输出事情到一个文件而不是标准输出

  • 监控事件说明,可用来看文件操作命令的执行原理。

    • ACCESS - 读取文件内容
    • MODIFY - 修改文件内容
    • ATTRIB - 修改文件属性
    • OPEN - 打开文件
    • CLOSE - 关闭文件
    • CLOSE_WRITE - 保存并关闭文件
    • CLOSE_NOWRITE - 不保存并关闭文件
    • CREATE - 创建文件
    • DELETE - 删除文件
    • MOVED - 文件被移动
    • MOVED_FROM - 文件或目录被移入到目录的源文件
    • MOVED_TO - 文件或目录被移动到目录的目标文件
    • ISDIR - 操作对象是目录

# 事件监控的企业应用

防止系统重要文件被破坏,使用inotify监控一些重要的目录,如/etc、/var/spool/cron/root等,并将inotify的屏幕信息输出到文件中。

# Sersync命令

# sersync [参数]

  • -d 启用守护进程模式

  • -r 服务启动时立即同步一次

    • 确保监控时 监控目录与远程主机数据一致
    • 测试是否可以正常同步
  • -o 指定配置文件 默认是confxml.xml文件

  • 可编写多个配置文件 来实时同步多个目录

sersync启动后默认没有停止命令,我们可以安装psmisc软件包,然后使用killall sersync终止进程。

# sersync配置文件

  • 软件目录内 confxml.xml 文件
  • # 排除指定数据不进行实时传输同步
    # true开启 false关闭
    <filter start="false">
      # 排除.gz结尾的文件
      <exclude expression="(.*)\.gz"></exclude>
    </filter>
    
    # 定义inotify监控的事件
    <inotify>
      <delete start="true"/>
      ... ...
      <modify start="false"/>
    </inotify>
    
    # 定义rsync同步的参数
    # 指定监控实时同步的目录rsync时默认会加上./同等于/data/
    <localpath watch="/data">
      # 备份服务器的地址 和 模块信息
      <remote ip="127.0.0.1" name="tongbu1"/>
      # 指定其他多台服务器
      <!--<remote ip="192.168.8.39" name="tongbu"/>-->
      # 指定rsync命令参数
      <commonParams params="-az"/>
      # 指定是否开启认证用户  指定认证用户名  指定认证密码文件
      <auth start="true" users="root" passwordfile="/etc/rsync.pas"/>
      # 是否指定端口  指定的端口号
      <userDefinedPort start="false" port="874"/><!-- port=874 -->
      # 如果没有数据传输 多久断开
      <timeout start="false" time="100"/><!-- timeout=100 -->
    
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
#Linux#实时同步
Rsync文件传输
NFS文件服务

← Rsync文件传输 NFS文件服务→

最近更新
01
二〇二五年四月十七日随笔
04-17
02
二〇二五年四月十六日随笔
04-16
03
二〇二五年四月九日随笔
04-09
更多文章>
Theme by Vdoing | Copyright © 2022-2025 Hoshinozora | MIT License
湘ICP备2022022820号-1
  • 跟随系统
  • 浅色模式
  • 深色模式
  • 阅读模式