rsync+inotify实时同步

rsync基本使用

rsync概述

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

命令用法

 - rsync [选项...] 源目录 目标目录

同步与复制的差异

- 复制: 完全拷贝源到目标
- 同步:增量拷贝,只传输变化过的数据

本地同步

- rsync [选项....] 本地目录1  本地目录2
同步控制:
· rsync操作选项
 - -n 测试同步过程,不做实际修改 
 - --delete 删除目标文件内多余的文件(删除目标位置有而源位置没有的文件)
 - -a 归档模式,递归保留文件属性,相当于 -rlptgoD (也是rsync的命令参数)
 	-r 递归,包含目录/子目录及所有文件
 	-l 保留符号链接文件
 	-p、-t 保留文件的权限时间标记
 	-o、-g 保留文件的属主/属组标记
 	-D 保留设备文件及其他特殊文件
 - -v 显示详细操作信息
 - -z 传输过程中启用压缩/解压
 - -H 保留硬链接文件
 - -A 保留ACL属性
rsync+SSH同步

用法及服务器要求

· 列出 SSH服务端资源 
	- rsync user@host:远程目录/
· 与远程的SSH目录保持同步
	- 下行: rsync [...] user@host:远程目录 本地目录
	- 上行:rsync [...] 本地目录 user@host:远程目录
· 服务端要求
	- 开启sshd服务,并提供授权的用户、密码

下行同步示列

·将远程主机的/boot/ 目录备份到本地	
#查看远程主机/boot目录下的内容
[root@proxy ~]# rsync root@192.168.4.22:/boot/ 
dr-xr-xr-x          4,096 2022/11/15 17:27:38 .
-rw-r--r--            166 2018/04/21 00:57:55 .vmlinuz-3.10.0-862.el7.x86_64.hmac
.....
#将远程主机目录拷贝到本机/tmp下
#这里我虚拟机做了免密  没做免密的需要输入密码
[root@proxy ~]# rsync -az root@192.168.4.22:/boot/ /tmp/
[root@proxy ~]# ll /tmp/
总用量 187764
-rw-r--r--. 1 root root   147819 421 2018 config-3.10.0-862.el7.x86_64
drwxr-xr-x. 3 root root       17 25 2021 efi
drwxr-xr-x. 2 root root       27 25 2021 grub
drwx------. 5 root root       97 25 2021 grub2
....

上行同步演示

·将本地的/etc目录备份到远程主机
[root@proxy ~]# rsync -az /etc root@192.168.4.22:/opt/
[root@proxy ~]# du -sh /etc
31M	/etc
[root@web2 opt]# du -sh /etc/   #在远程服务器确认
31M	/etc/

inotify-tools

同步的实时性
· 按照规定周期定期同步
- 时间间隔不好固定,同步不及时或者资源浪费
- 实时性较差
· Linux内核的inotify机制
- 提供事件响应式的文件系统通知机制
- 安装inotify-tool控制工具调用此机制实现监控

安装inotify-tools工具
· 参考下载地址:
- http://download.sf.net/inotify-tools/
- 标准的原码、编译安装即可

[root@20~]# tar -vxf inotify-tools-3.13.tar.gz
[root@20 ~]# cd inotify-tools-3.13
[root@20 inotify-tools-3.13]#./configure
[root@20 ~]# make && make install

inotifywait监控

· 基本用法
	- inotifywait [选项] 目标文件夹
· 常用命令选项
	-m 持续监控(捕获一个事件后不退出)
	-r 递归监控、包括子目录及文件
	-q 减少屏幕输出信息
	-e 指定监视的的 modify、move、create、delete、attrib等事件类别
· 持续跟踪指定文件夹的变化	
	- 目标文件夹
	- 当文件出现监视的事件时,会立即给出相提示
[root@20 ~]# inotifywait -mrq -e modify,create,delete/opt
/opt/ CREATE,ISDIR tdir1
/opt/ CREATE file1.txt
/opt/ MODIFY file1.txt
/opt/ DELETE file1.txt
... ...

案列 针对文件夹/opt启用inotifywait监控
- 当此目录下出现删除、改名、新建、修改文件、更改权限等事件时能给出提示
- 验证上述监控事件的效果

· 配置实时同步
inotify与rsync的结合
 - 基本思路
  - 利用while循环来反复检查单次监控的结果
 while inotifywait 监控操作
 do 
 	需要执行的rsync同步操作
 done

编写同步脚本
实现从本地到远程的Web目录推送

  • 源与目标 :/var/www/html
#请做好免密登录
#!/bin/bash
#源文件
while inotifywait -rqq -e modify,move,create,delete,attrib /var/www/html/
do
#目标文件
	rsync -az --delete /var/www/html/ root@192.168.4.207:/var/www/htm
done &
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值