CentOS配置rsync+inotify实时同步

北城以北 提交于 2020-01-12 05:22:32

一、rsync简介

1.rsync是一个快速备份工具,可以在不同主机之间镜像同步整个目录树,支持增量备份,保持连接和权限,在传输前压缩,非常适合异地备份、镜像服务器等
2.rsync有上行和下行同步

上行:恢复
下行:备份

二、安装配置rsync

1.rsync默认已经安装,只需要进行配置

在这里插入图片描述

2.配置

1)建立配置文件

vim /etc/rsyncd.conf
uid = nobody
gid = nobody
use chroot = yes						#禁锢在源目录
address = 192.168.1.10					#监听地址(本机)
port 837								#监听端口
log file = /var/log/rsyncd.log			#日志文件
pid file = /var/run/rsyncd.pid			#pid文件
hosts allow = 192.168.1.3				#允许访问自己的客户机地址,可以是网段
[111]									#共享模块名称
  path = /var/www/html					#源目录的实际路径
  comment = Document Root of www.love.com			
  read only = no							#是否为只读
  dont compress = *.gz *.bz2 *.tgz *.zip *.rar *.z			#同步时不再压缩的文件类型
  auth users = backuper					#授权账户(虚拟,不存在于系统)
  secrets file = /etc/rsyncd_users.db		#存放账户信息的数据文件
#可以采用匿名同步,将auth user和secret file去掉即可

2)创建存放账户信息的数据文件

vim /etc/rsyncd_users.db
backuper:123456 #上述用户名和密码
chmod 600 /etc/rsyncd_users.db				
#备份用户需要对源目录有读取权限

3)rsync控制

启动:rsync --daemon
停止:kill $(cat /var/run/rsyncd.pid)

三、rsync的使用

1.命令

1)下行(两种格式,在客户机上执行)

rsync 选项 虚拟用户名 @目标主机地址::共享模块名/目标目录(rsync客户机上的目录)
rsync -avz backuper@192.168.1.10::111 /mybak

在这里插入图片描述

rsync 选项 rsync://虚拟用户名@目标主机/共享模块名/目标目录
rsync -avz --delete rsync://backuper@192.168.1.10:/111 /mybak

2)上行

rsync 选项 /目标目录 虚拟用户名 @目标主机地址::共享模块名
rsync -zva /mybak/ backuper@192.168.1.10::111

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

rsync 选项 /目标目录 rsync://虚拟用户名@目标主机:/共享模块名
rsync -avz --delete /mybak/ rsync://backuper@192.168.1.10:/111 
2.选项集解释
-r	递归模式,包含目录及子目录中的所有文件
-l	对于符号链接文件,仍然复制为符号链接符号
-v	显示同步过程的详情
-a	归档模式,保留文件的权限属性等信息,等用于组合选项 -rlptgoD
-z	在传输文件时进行压缩
-p	保留文件的权限标记
-t	保留文件的时间标记
-g	保留文件的属组标记(仅超级用户使用)
-o	保留文件的属主标记(仅超级用户使用)
-H	保留硬链接文件
-A	保留ACL属性
-D	保留设备文件及其他特殊文件
--delete	删除目标位置有而原始位置没有的文件
--checksum	根据校验和来决定是否跳过大文件

四、配置rsync+inotify实时同步(在客户机执行)

1.原理

内核提供了inotify通知接口,来监控文件系统,一旦发生变化立马同步

2.配置实时同步

1)调整inotify内核参数

vim /etc/sysctl.conf
添加
fs.inotify.max_queued_events = 16384	#监控事件对列
fs.inotify.max_user_instances = 1024    #最多监控实例数
fs.inotify.max_user_watches = 1048576	#每个实例最多监控文件数
sysctl -p

2)安装inotify-tools
解压inotify-tools-3.14.tar.gz

安装

./configure
make && make install

3.开启实时监控

inotifywait	-mrq -e modify,create,move,delete /var/www/html
-m       持续监控
-r       递归整个目录
-q       简化输出信息
-e       指定要监控那些事件
modify   事件,修改
create   事件,创建
move     事件,移动
delete   事件,删除
attrib   事件,属性修改

在这里插入图片描述

4.编写触发式同步脚本

1)编写脚本

vim /opt/inotify_rsync.sh
#!/bin/bash
INOTIFY_CMD="inotifywait	-mrq -e modify,create,move,delete /mybak"
RSYNC_CMD="rsync -zaH --delete --password-file=/etc/server.pass /mybak/ backuper@192.168.1.10::111"
$INOTIFY_CMD | while read DIRECTORY EVENT FILE
do
	if [ $(pgrep rsync | wc -l) -le 0 ]
	then
		$RSYNC_CMD
	fi
done

2)创建密码文件

vim /etc/server.pass
123456
chmod 600 /etc/server.pass

3)加上执行权限

chmod +x /opt/inotify_rsync.sh
  1. 加入开机启动
echo '/opt/inotify_rsync.sh' >> /etc/rc.local

5)测试看是否能监控并同步

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!