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实现数据实时同步