Linux运维番外篇 rsync+inotify实现数据同步

Posted 鹧鸪鹄

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Linux运维番外篇 rsync+inotify实现数据同步相关的知识,希望对你有一定的参考价值。

一、rsync概念

rsync是一款快速增量备份工具
Remote Sync,远程同步
支持本地复制,或者与其他SSH、rsync主机同步
适用于Windows/Linux/unix等平台
以其deleta–transfer算法著名
监听端口 873 非常常见的C/S架构

同步方法

1 全量备份
所有的数据全部发送
源文件和新修改的文件一同复制
全量复制 效率低
2 增量复制
在传输之前用算法计算出新增加的文件 基于全量备份 将新增加的文件通过网络传输
效率高

二、rsync同步源概念

rsync同步源指的就是远程同步的服务器

在这里插入图片描述

1服务器通过网络同步2服务器数据 2就是备份源 反之 2服务器同步1服务器 1就是备份源

三 配置同步源

大致步骤分为 建立rsyncd.conf配置文件、独立的账号文件
启用rsync的 --daemon模式

1 配置文件rsyncd.conf
认证配置auth users、secrets file,不加则为匿名
2 独立的账号文件
用户名:密码
每行一个用户记录
独立的账号数据,不依赖系统账号
3 启用rsync服务
通过 --daemon独自提供服务,rsync --daemon
执行kill $(cat /var/run/rsyncd.pid)关闭服务

配置同步源的两种方法

格式一:
用户名@主机地址::共享模块名

格式二:
rsync://用户名@主机地址/共享模块名

四 rsync命令解释

语法

rsync 选项 原始位置 目标位置

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

五 rsync部署方法

关闭防火墙
systemctl stop firewalld.service 
setenforce 0
配置rsync源服务器  基本都预装了
rpm -q rsync
yum -y install rsync
vim /etc/rsyncd.conf  修改配置文件

  1 uid = root
  2 gid = root
  3 use chroot = yes
  4 address = 192.168.0.10
  5 port 873
  6 log file = /var/log/rsyncd.log
  7 pid file = /var/run/rsyncd.pid
  8 hosts allow = 192.168.0.0/24
  9 [wwwroot]        
 10 path = /var/www/html
 11 comment = Document Root of www.example.com
 12 read only = yes
 13 dont comperss = *.gz *.bz2 *.tgz *.zip *.rar *.z
 14 auth users = fox
 15 secrets file = /etc/rsyncd_users.db
 #如采用匿名的方式,只要将其中的 “auth users” 和 “secrets file”配置项去掉即可

#为备份账户创建数据文件
vim /etc/user.db
backuper:yy2234		#无需建立同名系统用户
chmod 600 /etc/user.db

#保证所有用户对源目录 /var/www/html 都有读的权限
mkdir -p /var/www/html
chmod +r /var/www/html/
ls -ld /var/www/html/

#启动 rsync 服务程序
rsync --daemon
netstat -natp | grep rsync

#关闭 rsync 服务
kill $(cat /var/run/rsyncd.pid)
rm -rf /var/run/rsyncd.pid

在这里插入图片描述

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

开启同步

服务端
[root@localhost ~]# cd /var/www/html
[root@localhost html]# echo "123" >> a.txt
客户端
mkdir /a
rsync -avz aoao@192.168.30.10::wwwroot /a
cd /a
ll

在这里插入图片描述
在这里插入图片描述

设置免交互

#客户端:免交互格式配置
echo "yy2234" > /etc/server.pass
chmod 600 /etc/server.pass
rsync -avz --delete --password-file=/etc/server.pass aoao@192.168.30.10::wwwroot /a

在这里插入图片描述

六 inotfy

和rsync配套使用 用于监控文件系统的变更信息 并且通知rsync
分为长期监控和短期监控
inotifywait:用于持续监控,实时输出结果 常用的为这个
inotifywatch:用于短期监控,任务完成后再输出结果

语法 inotifywait [参数]

-m 持续进行监控
-r 递归监控所有子对象
-q 简化输出信息
-e 指定要监控哪些事件类型
由不同的模块实现不同的功能
max_queue_events #监控事件队列大小
max_user_instances #最多监控实例数
max_user_watches #每个实例最多监控文件数

部署

服务端:修改rsync配置文件
vim /etc/rsyncd.conf
uid = root
gid = root
read only = no       #关闭只读,上行同步需要可写权限
kill $(cat /var/run/rsyncd.pid)
netstat -natp | grep rsync
rsync --daemon
netstat -natp | grep rsync
#客户端:inotify内核参数
cat /proc/sys/fs/inotify/max_queued_events
cat /proc/sys/fs/inotify/max_user_instances 
cat /proc/sys/fs/inotify/max_user_watches 
sysctl -p
#客户端安装 inotify-tools
yum -y install gcc gcc-c++ 
tar zxvf inotify-tools-3.14.tar.gz -C /opt

cd /opt/inotify-tools-3.14/
./configure
make && make install

#执行“inotifywait”命令,然后在服务端向 /var/www/html 目录下添加文件、移动文件,跟踪屏幕输出结果
inotifywait -mrq -e modify,create,move,delete /abc

#服务端编写触发同步脚本
vim /opt/inotify.sh
#!/bin/bash
INOTIFY_CMD="inotifywait -mrq -e create,delete,move,modify,attrib /abc/"
SYNC_CMD="rsync -azH --delete --password-file=/etc/server.pass aoao@192.168.30.10::wwwroot /a"
$INOTIFY_CMD | while read DIRECTORY EVENT FILE
do
    if [ $(pgrep rsync | wc -l) -le 0 ] ; then
        $RSYNC_CMD
	fi
done

chmod +x /opt/inotify.sh
chmod +x /etc/rc.d/rc.local
echo "/opt/inotify.sh" >> /etc/rc.d/rc.local  开机自启

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

以上是关于Linux运维番外篇 rsync+inotify实现数据同步的主要内容,如果未能解决你的问题,请参考以下文章

Linux运维番外篇 高效且清晰的日志分析系统--ELK日志系统

0基础linux运维教程 Rsync结合inotify实现数据实时同步

运维小实验数据镜像备份实验inotify+rsync实时备份

[AIOps番外篇]探究人工智能历史渊源

0基础linux运维教程 sersync介绍

Linux入门之内核管理番外篇udev入门