一次性部署Rsync下行同步+inotify实时同步部署!(含操作与配图解释及软件包)

Rsync

一、简介

一款快速增量备份工具

  • Remote Sync,远程同步
  • 支持本地复制,或者与其他SSH、rsync主机同步
  • 官方网站:https://rsync.samba.org/

二、rsync同步源

指备份操作的远程服务器,也称为备份源

  • A服务器同步B服务器的数据,B服务器就是备份源
  • 反过来,B服务器同步A服务器的数据,那么A服务器就是备份源

mark

三、配置rsync源

1、基本思路

建立rsync.conf 配置文件,独立的账号文件
启用rsync的 --daemon模式

2、配置文件rsyncd.conf

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

3、独立的账号文件

以“用户名:密码”的格式记录
每行一个用户记录
独立的账号数据,不依赖于账号系统

4、启用rsync服务

通过–daemon 独立提供服务,rsync --daemon

执行kill $(cat /var/run/rsyncd.pid)关闭服务

四、Rsync相关命令

格式

rsync 【选项】原始位置 目标位置

常用选项

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

后面还有一些参数,这里暂时就不列举出来了

配置源的两种表达方式

格式一

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

格式二:

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

五、Inotify

简介

1、Linux内核的 inotify 机制

  • 从版本2.6.13开始提供
  • 可以监控文件系统的变动情况,并做出通知响应
  • 辅助软件:inotify-tools
  • 调整inotify内核参数(优化)
  • /etc/sysctl.conf(内核参数配置文件)
max_queue_events		#监控事件队列大小
max_user_instances  	#最多监控实例数
max_user_watches    	#每个实例最多监控文件数  

2、rsync + inotify 实时同步

  • 安装inotify-tools辅助工具
  • inotifywait:用于持续监控,实时输出结果
  • inotifywatch:用于短期监控,任务完成后再出结果
例:
inotifywait -mrq -e modify,create,move,delete /var/www/html


#参数解释#

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

六、配置Rsync下行同步

环境

主机 主机名 操作系统 IP 主要软件
Master Centos7-1 Centos7 192.168.171.7 rsync
Slave Cetnos7-2 Cetnos7 192.168.171.4 rsync / inotify-tools-3.14.tar.gz

inotify软件包下载地址:https://share.weiyun.com/uLrrgchw

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

1、Master(192.168.171.7)

systemctl stop firewalld
systemctl disable firewalld
setenforce 0
#关闭防火墙及安装机制

yum install -y httpd rsync
#rsync系统一般已默认安装,安装httpd是为了生成/var/www/html目录(后续会用到作为共享目录)

vim /etc/rsyncd.conf		#编辑rsync配置文件
添加
uid = root
gid = root
use chroot = yes
address = 192.168.171.7
port 873
log file = /var/log/rsyncd.log
pid file = /var/run/rsyncd.pid
hosts allow = 192.168.171.0/24
[wwwroot]        
path = /var/www/html
comment = Document Root of www.ypy.com
read only = yes
dont comperss = *.gz *.bz2 *.tgz *.zip *.rar *.z
auth users = yiyi
secrets file = /etc/rsyncd_users.db

解释

uid = root											#用户id
gid = root											#组id
use chroot = yes									#开启,禁锢在源目录
address = 192.168.171.7								#监听地址
port 873											#默认端口号为873
log file = /var/log/rsyncd.log						#日志文件存放位置
pid file = /var/run/rsyncd.pid						#存放进程id的文件位置
hosts allow = 192.168.171.0/24						#允许访问的主机网段
[wwwroot]        									#共享模块的名称
path = /var/www/html								#源目录路径
comment = Document Root of www.ypy.com				
read only = yes										#是否为只读
dont comperss = *.gz *.bz2 *.tgz *.zip *.rar *.z	#同步时不再压缩的文件类型
auth users = yiyi								    #授权用户,多个账户以空格隔开
secrets file = /etc/rsyncd_users.db					#存放账号信息的数据文件,一行一个

mark

vim /etc/rsyncd_users.db
yiyi:abc123
#编辑用户账号文件,固定格式为[名称:密码],一行一个

chmod 600 /etc/rsyncd_users.db
#最好只是赋权600,别的可能会报错

rsync --daemon
#开启服务
netstat -natp | grep rsync
#检测端口号,确认服务是否成功开启

cd /var/www/html
#切换至共享目录下
touch ppp.html 
touch 555.html

mark

mark

2、Slave(192.168.171.4)

systemctl stop firewalld
systemctl disable firewalld
setenforce 0

yum install -y rsync

cd /opt
mkdir uuu
chmod 777 uuu
#赋权777

vim /etc/server.pass
abc123
#编辑免交互密钥文件,第一行为密码


chmod 600 /etc/server.pass
#给密钥文件赋权600

rsync -az --delete --password-file=/etc/server.pass [email protected]::wwwroot /opt/uuu
#rsync,使用密钥文件/etc/server/pass对应yiyi用户,IP地址为192.168.171.7的共享模块文件进行压缩,并归档同步至当前服务器的/opt/uuu目录下,同时删除差异内容

ls uuu
#查看目录,下行同步是否成功

mark

mark

七、配置Rsync+Inotify实时同步

1、Master(192.168.171.7)

关闭只读模式并为共享目录赋权

vim /etc/rsyncd.conf
read only = no
#关闭只读模式,否则将不可写入


kill `cat /var/run/rsyncd.pid`
#修改完配置文件需要重启服务,这里采用直接杀掉进程号的方式
netstat -natp | grep rsync
#检查一下服务是否不在了

rsync --daemon
netstat -natp | grep rsync
#再次开启服务查看是否启动

chmod 777 /var/www/html
#给共享目录赋权777

mark

mark

2、Slave(192.168.171.4)

优化内核参数

cat /proc/sys/fs/inotify/max_queued_events
cat /proc/sys/fs/inotify/max_user_instances 
cat /proc/sys/fs/inotify/max_user_watches 
#查看当前默认inotify的内核参数
#依次为监控事件队列、最多监控实例与每个实例最多监控的文件

vim /etc/sysctl.conf
fs.inotify.max_queued_events = 32768
fs.inotify.max_user_instances = 1024
fs.inotify.max_user_watches = 1048576
#优化内核参数


sysctl -p
#加载内核参数配置文件使其生效

mark

mark

编译安装inotify-tools

yum install -y gcc gcc-c++ 

cd /opt
#将软件包传至该目录下
tar zxvf inotify-tools-3.14.tar.gz

cd /opt/inotify-tools-3.14/

./configure
make -j 2 && make install

编写自动监控同步脚本

vim /opt/inotify.sh
#!/bin/bash
INOTIFY_CMD="inotifywait -mrq -e create,delete,move,modify,attrib /opt/uuu/"
RSYNC_CMD="rsync -azH --delete --password-file=/etc/server.pass /opt/uuu/ [email protected]::wwwroot"
 
$INOTIFY_CMD | while read DIRECTORY EVENT FILE
do
    if [ $(pgrep rsync | wc -l) -le 0 ] ; then
        $RSYNC_CMD
	fi
done

mark

cd /opt/
chmod +x inotify.sh 
./inotify.sh &
#放在后台运行

cd /opt/uuu
touch 999.html
rm -rf 555.html
#创建一个新的html文件并删除之前的555

mark

mark

3、验证

Master (192.168.171.7)

cd /var/www/html
ls
#可以看到实时同步成功
#之后还可继续尝试,Master在共享目录内如何操作都不会影响到Slave端,而Slave的在该目录内的操作都会同步给Master

mark

简结:另一种方式的文件共享目录,并且如果同步则可实时更新情况

猜你喜欢

转载自blog.csdn.net/Gloomyumenge/article/details/114648133
今日推荐