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 4月 21 2018 config-3.10.0-862.el7.x86_64
drwxr-xr-x. 3 root root 17 2月 5 2021 efi
drwxr-xr-x. 2 root root 27 2月 5 2021 grub
drwx------. 5 root root 97 2月 5 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 &