目录
- 一、rsync 远程同步
- 1、rsync工具
- 2、实验操作
- 二、rsync + inotify 实时监控
- 1、inotify机制
- 2、操作
一、rsync 远程同步
1、rsync工具
一款快速增量备份工具(Linux系统自带安装)
[root@localhost html]# rpm -q rsync ##查看
rsync-3.1.2-4.el7.x86_64
- rsync同步源:指备份操作的远程服务器,也称备份源
- rsync备份工具:命令用法
rsync [选项] 原始位置 目标位置
常用选项:
-a:归档模式,递归并保留对象属性,等同于-rlptgoD
-v:显示同步过程详细信息
-z:在传输文件时进行压缩
-H:保留硬链接
-A:保留ACL属性信息
–delete:删除目标位置有而原始位置没有的文件
–checksum:根据对象的校验和来决定是否跳过文件 - 配置源的两种表示方法:
格式一:用户名@主机地址::共享模块名
格式二:rsync://用户名@主机地址/共享模块名
免交互同步:rsync -az --password-file=/etc/server.pass backuper@192.168.130.10::wwwroot
2、实验操作
全部关闭防火墙
服务端:
[root@promote opt]# rpm -q rsync ##查看rsync已安装
rsync-3.1.2-4.el7.x86_64
[root@promote opt]# vi /etc/rsyncd.conf ##直接修改配置文件
uid = nobody
gid = nobody
use chroot = yes
log file = /var/log/rsyncd.log
pid file = /var/run/rsyncd.pid
hosts allow = 192.168.130.0/24
port 873
[wwwroot]
path = /var/www/html ##此路径要创建出来
comment = test
read only = yes
dont compress = *.gz *.tgz *.zip *.z *.Z *.rpm *.deb *.bz2
auth users = backuper ##设置登录用户
secrets file = /etc/rsyncd_users.db ##用户密码文件所在位置
[root@promote opt]# vim /etc/rsyncd_users.db ##创建用户密码文件
backuper:123456
[root@promote opt]# chmod 600 /etc/rsyncd_users.db
[root@promote opt]# rsync --daemon ##开启
[root@promote opt]# netstat -anpt | grep rsync
tcp 0 0 0.0.0.0:873 0.0.0.0:* LISTEN 10512/rsync
tcp6 0 0 :::873 :::* LISTEN 10512/rsync
[root@promote opt]# cd /var/www/html/
[root@promote html]# ls
[root@promote html]# echo "123456789" > a.txt
发起端:
[root@192 html]# cd /opt
[root@192 opt]# ls
rh
[root@192 opt]# rsync -avz rsync://backuper@192.168.130.10/wwwroot /opt
Password:
receiving incremental file list
./
a.txt
sent 46 bytes received 115 bytes 11.93 bytes/sec
total size is 10 speedup is 0.06
[root@192 opt]# ls
a.txt rh
二、rsync + inotify 实时监控
1、inotify机制
Linux内核的inotify机制:从2.6.13开始提供,可以监控文件系统的变动情况,并作出通知响应。
结合软件:inotify-tools使用
- 调整inotify内核参数
max_queue_events:监控事件队列大小
max_user_instances:最多监控实例数
max_user_watches;每个实例最多监控文件数 - 安装inotify-tools辅助工具
inotifywait:用于持续监控,实时输出结果
inotifywatch:用于短期监控,任务完成后再出结果
inotify -mrq -e modify,create,move,delete /var/www/html
-m :持续进行监控
-r : 递归监控所有子对象
-q :简化输出信息
-e : 指定要监控哪些事件类型
2、操作
将源端的只读模式关闭
[root@promote html]# vi /etc/rsyncd.conf
read only = no
[root@192 opt]# vim /etc/sysctl.conf
fs.inotify.max_queued_events=16384
fs.inotify.max_user_instances=1024
fs.inotify.max_user_watches=1048576
[root@192 opt]# sysctl -p
fs.inotify.max_queued_events = 16384
fs.inotify.max_user_instances = 1024
fs.inotify.max_user_watches = 1048576
[root@192 inotify-tools-3.14]# tar zvxf inotify-tools-3.14.tar.gz
[root@192 inotify-tools-3.14]# cd inotify-tools-3.14/
[root@192 inotify-tools-3.14]# ./configure
[root@192 inotify-tools-3.14]# make && make install
[root@192 inotify-tools-3.14]# inotifywait -mrq -e modify,create,move,delete /var/www/html ##开启监控
这时候会一直处于监控状态,可以重开一个终端试验创建文件,在监控服务器上可以看见记录的操作
[root@192 www]# vim /opt/inotify.sh
#!/bin/bash
INOTIFY_CMD="inotifywait -mrq -e modify,create,attrib,move,delete /var/www/html/"
RSYNC_CMD="rsync -azH --delete --password-file=/etc/server.pass /var/www/html/ backuper@192.168.130.10::wwwroot/"
$INOTIFY_CMD | while read DIRECTORY EVENT FILE
do
if [ $(pgrep rsync | wc -l) -le 0 ];then
$RSYNC_CMD
fi
done
[root@192 www]# chmod +x /opt/inotify.sh
[root@192 www]# chmod 777 html/ ##另一台服务器也要给权限
然后创建免交互的存放密码的文件
[root@192 html]# vim /etc/server.pass
123456
[root@192 html]# chmod 600 /etc/server.pass ##不被其他用户查看,给600权限
[root@192 opt]# ./inotify.sh ##执行脚本文件
测试:重新打开一台终端,然后创建文件删除文件,在源端可以看见文件被创建和删除