Rsync远程同步及inotify自主监控

一、rsync服务基本介绍

1.1 Rync服务器

  • Rsync是一款开源的、快速的、多功能的、可实现全量及增量的本地或远程数据同步备份的优秀工具。并且可以不进行改变原有数据的属性信息,实现数据的备份迁移特性。Rsync软件适用于unix/linux/windows等多种操作系统平台。
  • Rsync是一个快速rsync监听端口:873和非常通用的文件复制工具。它能本地复制,远程复制,或者远程守护进程方式复制。它提供了大量的参数来控制其行为的各个方面,并且允许非常灵活的方式来实现文件的传输复制。它以其delta-transfer算法闻名。
  • rsync监听端口:873
  • rsync运行模式:C/S

1.2 全量备份与增量备份

1.2.1 全量备份

  • 所有数据全部传送
  • 把原来的文件和新的文件一起统一传送
  • 全量复制,效率低

假设客户端上有 file1 file2 file3 文件,服务端上有 file1 文件,现要将客户端上的数据备份至服务端

  • 完全备份方式:
    在这里插入图片描述

1.2.2 增量备份

  • 在传输数据之前通过一些算法通过你有的数据和我有的数据进行对比,把不一样的数据通过网络传输
  • 增量复制,效率较高

假设客户端上有 file1 file2 file3 文件,服务端上有 file1 文件,现要将客户端上的数据备份至服务端

  • 增量备份方式:
    在这里插入图片描述

二、rsync参数及部署

2.1 rsync命令参数

-a #归档模式传输, 等于-tropgDl
-v #详细模式输出, 打印速率, 文件数量等
-z #传输时进行压缩以提高效率
-r #递归传输目录及子目录,即目录下得所有目录都同样传输。
-t #保持文件时间信息
-o #保持文件属主信息
-p #保持文件权限
-g #保持文件属组信息
-l #保留软连接
-P #显示同步的过程及传输时的进度等信息
-D #保持设备文件信息
-L #保留软连接指向的目标文件
-e #使用的信道协议,指定替代 rsh 的 shell 程序
--exclude=PATTERN #指定排除不需要传输的文件模式
--exclude-from=file #文件名所在的目录文件
--bwlimit=100 #限速传输
--partial #断点续传
--delete #让目标目录和源目录数据保持一致

2.2 rsync守护进程部署

修改rsync主配置文件/etc/rsync.conf

[root@server1 ~]# vi /etc/rsyncd.conf

uid = nobody	# 匿名 删除前面的注释
gid = nobody	# 匿名 删除前面的注释
use chroot = yes		# 不锁定宿主目录,删除前面的注释
max connections = 200		# 后台最大连接数,删除注释
pid file = /var/run/rsyncd.pid		# 删除注释
log file = /vsr/log/rsync.log		# 后添加日志目录
# exclude = lost+found/
# transfer logging = yes
# timeout = 900
# ignore nonreadable = yes
# dont compress   = *.gz *.tgz *.zip *.z *.Z *.rpm *.deb *.bz2		# 指定一些固定结尾的文件不压缩
hosts allow = 192.168.10.0/24
address = 192.168.10.11
port 873

[wwwroot]	# 复制目录修改内容,及以下内容
    path = /www		# 目录位置
    comment = web site page		# 目录描述
    read only =yes		# 权限为只读
    auth users = zhangsan		# 授权账户名
    secrets file = /etc/user.db	# 账户信息存储位置(用户数据文件)

设置账户信息

[root@server1 ~]# vi /etc/user.db
	zhangsan:123456
[root@server1 ~]# chmod 600 /etc/user.db
[root@server1 ~]# rsync --daemon
[root@server1 ~]# netstat -anpt | grep 873
tcp        0      0 192.168.10.11:873       0.0.0.0:*               LISTEN      61088/rsync   

2.3 验证

  1. 方式一:
    创建/www目录,在目录下面创建新文件。其他目录访问不成功。
    在这里插入图片描述进入客户机备份数据:

    [root@server2 opt]# rsync -azv zhangsan@192.168.10.11::wwwroot /opt
    在这里插入图片描述

  2. 方式二:

     [root@server2 ~]# rsync -azv rsync://zhangsan@192.168.10.11/wwwroot /bak
    

在这里插入图片描述

  1. 方式三:免交互

     [root@server2 ~]# rsync -azv --password-file=/root/password rsync://zhangsan@192.168.10.11/wwwroot /bak2
    

在这里插入图片描述获取信息成功

2.4 rsync实时同步

2.4.1 定期同步的不足

  • 执行备份的时间固定,延迟明显、实时性差
  • 当同步源长期不变化时,密集的定期任务是不必要的

2.4.2 实时同步的优点

  • 一旦同步源出现变化,立即启动备份
  • 只要同步源无变化,则不执行备份

三、案例

3.1 全量备份

mkdir aa
cd aa
touch a b c
rsync -azv /root/aa /opt		# 备份目录下的文件

![在这里插入图片描述](https://img-blog.csdnimg.cn/20201231091746505.png?x- oss-process=image/watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L3dlaXhpbl81MDM0NDgyMA==,size_16,color_FFFFFF,t_70)

rsync -azv /root/aa/ /opt		# 备份该目录及目录下文件

在这里插入图片描述

3.2 增量备份

[root@server1 aa]# touch d
[root@server1 aa]# rsync -azv /root/aa /opt

在这里插入图片描述

3.3 异地的备份

[root@server1 ~]# rsync -zva /root/aa/ root@192.168.10.12:/opt
在这里插入图片描述进入客户端2查看相关目录下文件

在这里插入图片描述

3.4 代替删除(相当于全覆盖)

[root@server1 ~]# mkdir /bb
[root@server1 ~]# echo "bbbbbbb" > /bb/11
[root@server1 ~]# cat /bb/11
bbbbbbb
[root@server1 ~]# rsync -avz --delete /bb/ root@192.168.10.12:/opt

在这里插入图片描述
进客户机2查看信息,发现原文件及目录被删除,只剩下新备份的文件
在这里插入图片描述

3.5 远程数据备份

rsync下拉操作
在客户机2上面直接备份1上面的数据:
[root@server2 opt]# rsync -azv root@192.168.10.11:/root/aa/ /opt

在这里插入图片描述

四、关于inotify

4.1 Linux内核的inotify机制

  • 从版本2.6.13开始提供
  • 可以监控文件系统的变动情况,并做出通知响应
  • 辅助软件: inotify-tools

4.2 调整inotify内核参数

  • max_queue_events:监控事件队列大小
  • max_user_instances:最多监控实例数
  • max user watches:每个实例最多监控文件数

4.3 安装inotify-tools辅助工具

  • inotifywait:用于持续监控,实时输出结果
  • inotifywatch:用于短期监控,任务完成后再出结果

4.4 inotify命令

命令描述
#m持续监听
#-r使用递归形式监视目录
#-q减少冗余信息,只打印出需要的信息
#-e指定要监视的事件,多个时间使用逗号隔开

4.5 对于inotify监控调整内核参数

[root@server2 html]# vi /etc/sysctl.conf 
//添加以下
fs.inotify.max_queued_events = 16384	#监控事件的最大队列数
fs.inotify.max_user_instances = 1024#	#监控最大实例数
fs.inotify.max_user_watches = 104876	#监控每个实例的最大文件数
[root@server2 html]# sysctl -p	# 写入系统内存

在这里插入图片描述

4.6 rsync+inotify

需要分清客户端与服务器上面配置的差异;

客户端服务器
rsync关闭状态rsync开启状态
netstat -anptgrep 873无返回值
pgrep rsync无返回值pgrep rsync有返回值
  • 服务器上面的配置:
    rsync配置文件中需要关闭只读选项,即可以修改目录。

      vi /etc/rsync.conf
      [wwwroot]
        path = /var/www/html
        comment = web site page
        read only = no
          auth users = zhangsan
         secrets file = /etc/user.db
    

对应的/etc/user.db文件也应该是有对应内容及权限为600。
在这里插入图片描述

  • 客户端的配置:

导入并解包inotify-tools-3.14.tar.gz

[root@server2 ~]# tar zxvf inotify-tools-3.14.tar.gz
[root@server2 ~]# cd inotify-tools-3.14/
[root@server2 inotify-tools-3.14]# ./configure && make && make install

配置自动检测脚本

[root@server1 ~]# vi /opt/inotify.sh
#!/bin/bash
INOTIFY_CMD="inotifywait -mrq -e 	modify,create,delete,move /var/www/html"
RSYNC_CMD="rsync -avz --delete --password-file=/root/password /var/www/html/ zhangsan@192.168.10.12::wwwroot"
$INOTIFY_CMD | while read DIRECTORY EVENT FILE
do
  if [ $(pgrep rsync | wc -l) -le 0 ]
  then $RSYNC_CMD
  fi
done

另外需要在根目录下设置免交互密码

vi password
123456

运行程序即可

sh /opt/inotify.sh

然后可以新开一个客户端窗口,在目录/var/www/html/目录下新建一个网页文本,脚本就会自动检测并执行同步到服务器端,形成同步。

在这里插入图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值