Rsync命令格式:
推送数据
1
| rsync [选项] src user@host:dest
|
提取数据
1
| rsync [选项] user@host:src dest
|
常用选项:
-r:递归同步目录
-l:同步软链接文件
-z:同步大文件时进行压缩
-v:同步时显示详细信息
-o:同步时不修改属主
-g:同步时不修改属组
-p:同步时不修改权限
–delete:同步时,如果目标端存在源端没有的数据,则先将这些数据删除再进行同步,需要搭配选项-r使用
-a:具有以上选项的功能除了-v
服务器信息
| IP |
角色 |
| 172.16.1.12 |
Rsync |
| 172.16.1.13 |
Client |
Client
创建一个接收数据的目录
Rsync配置
配置免密登录
1 2 3
| ssh-keygen ssh-copy-id -i root@172.16.1.12 ssh-copy-id -i root@172.16.1.13
|
创建数据目录并在目录中创建普通文件
1 2
| mkdir /data && cd /data touch test
|
推送数据到Client
1
| rsync /data/test root@1.1.1.2:/datatest
|
Client
配置inotify实现实时同步
Inotify:可以监控目录,当被监控的目录发生相应事件时,会将输出相应的文件在终端上
部署rsync+inotify
1 2 3 4
| [root@ServerOne ~]# tar zxf /inotify-tools-3.14.tar.gz -C /usr/src [root@ServerOne ~]# cd /usr/src/inotify-tools-3.14/ [root@ServerOne inotify-tools-3.14]# ./configure --prefix=/usr/local/inotify && make && make install [root@ServerOne inotify-tools-3.14]# ln -s /usr/local/inotify/bin/* /usr/local/bin/
|
编写实时同步脚本
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15
| [root@ServerOne ~]# [root@ServerOne ~]# vi rsync.sh #!/bin/bash SrcPath=/data/ DestPath=/datatest/ BackupServer=172.16.1.13 inotifywait -mrq --format %w%f -e create,delete,close_write $SrcPath | while read line; do if [ -f $line ]; then rsync -a --delete $SrcPath root@${BackupServerone}:$DestPath else rsync -a --delete $SrcPath root@${BackupServerone}:$DestPath fi done
|
执行脚本
在rsync端数据目录中创建新文件
client验证