目录

  • 一、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日志查看_html

  • 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   ##执行脚本文件

测试:重新打开一台终端,然后创建文件删除文件,在源端可以看见文件被创建和删除