rsync

rsync同步操作

• 命令用法

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

• 同步与复制的差异

– 复制:完全拷贝源到目标

– 同步:增量拷贝,只传输变化过的数据

• rsync操作选项

– -n:测试同步过程,不做实际修改

– --delete:删除目标文件夹内多余的文档

– -a:归档模式,相当于-rlptgoD

– -v:显示详细操作信息

– -z:传输过程中启用压缩/解压  

• 本地同步

– rsync [选项...] 本地目录1   本地目录2    //同步整个文件夹

– rsync [选项...] 本地目录1/  本地目录2    //只同步目录下的数据

虚拟机svr7:环境准备

[root@svr7 ~]# mkdir /nsd20

[root@svr7 ~]# mkdir /todir

[root@svr7 ~]# cp /etc/passwd /nsd20/

[root@svr7 ~]# cp /etc/shadow /nsd20/

[root@svr7 ~]# cp /etc/redhat-release /nsd20/r.txt

[root@svr7 ~]# ls /nsd20/

同步nsd20目录里面的数据到todir目录

[root@svr7 ~]# rsync  -av  /nsd20  /todir/ #会直接同步nsd20整个目录

[root@svr7 ~]#rm -rf /todir/*

[root@svr7 ~]# rsync  -av  /nsd20/  /todir/ #只同步目录下面的数据

只同步新增的group文件

[root@svr7 ~]# cp  /etc/group  /nsd20/

[root@svr7 ~]# rsync  -av  /nsd20/  /todir/ 

更改文件内容进行同步

[root@svr7 ~]# echo  haha  >  /nsd20/r.txt

[root@svr7 ~]# rsync  -av  /nsd20/  /todir/

[root@svr7 ~]# cat  /todir/r

使 源和目标 目录的数据保持一致

[root@svr7 ~]# rsync  -av  --delete  /nsd20/  /todir/

[root@svr7 ~]# ls  /nsd20/

[root@svr7 ~]# ls  /todir/

在todir目录里面创建1.txt和2.txt,测试同步删除

[root@svr7 ~]# touch  /todir/1.txt

[root@svr7 ~]# touch  /todir/2.txt

[root@svr7 ~]# rsync  -av  --delete  /nsd20/  /todir/

P2 rsync+SSH同步
• 远程同步

– rsync [选项...] 本地目录/   user@host:远程目录    //将本地文件同步到远程主机

– rsync [选项...] user@host:远程目录   本地目录/    //将远程文件同步到本地目录

同步svr7本地的/todir目录到px207主机的/opt下

[root@svr7 ~]# rsync  -av  --delete  /todir/  root@192.168.4.207:/opt/

[root@svr7 ~]# ls  /todir/ #查看

[root@svr7 ~]# ssh  192.168.4.207

[root@pc207 ~]# ls  /opt/ #查看

此时同步发现并不需要密码,是因为之前做过免密登录,若要使用密码同步,需要以下操作

删除pc207主机的公钥

[root@pc207 ~]# rm  -rf  /root/.ssh/authorized_keys

[root@svr7 ~]# rsync  -av  --delete  /todir/  root@192.168.4.207:/opt/ #此时同步,需要密码

root@192.168.4.207's password:

二、inotify实时同步
P1 同步的实时性
需要先实现无密码的验证

[root@svr7 ~]# ssh-keygen

Generating public/private rsa key pair.

Enter file in which to save the key (/root/.ssh/id_rsa):

/root/.ssh/id_rsa already exists.

Overwrite (y/n)? y #选择y,继续生成

[root@svr7 ~]# ls /root/.ssh/

[root@svr7 ~]# ssh-copy-id  root@192.168.4.207

……

root@192.168.4.207's password: #输入密码

[root@svr7 ~]# ssh  192.168.4.207 #测试,成功免密登录

实验准备:将tools.tar.gz传到/root目录

步骤1:安装make与gcc,开发工具         

[root@svr7 ~]# yum -y install make gcc

步骤2:tar解包,释放源代码至指定目录

[root@svr7 ~]# rm -rf /opt/*

[root@svr7 ~]# tar -xf  tools.tar.gz  -C /opt/

[root@svr7 ~]# cd /opt/tools/

[root@svr7 tools]# tar -xf inotify-tools-3.13.tar.gz

安装软件

步骤3: ./configure 配置,指定安装目录/功能模块等选项

[root@svr7 tools]# cd inotify-tools-3.13/

[root@svr7 inotify-tools-3.13]# ./configure

步骤4:make 编译,生成可执行的二进制程序文件

[root@svr7 inotify-tools-3.13]# make

步骤5: make install 安装,将编译好的文件复制到安装目录

[root@svr7 inotify-tools-3.13]# make install

[root@svr7 inotify-tools-3.13]# ls /usr/local/bin/inotifywait #确认监控程序的生成

P2 inotifywait监控
• 基本用法

– inotifywait [选项] 目标文件夹

• 常用命令选项

– -m:持续监控 (捕获一个事件后不退出)

– -r:递归监控、包括子目录及文件

– -q:减少屏幕输出信息

– -e:指定监视的 modify、move、create、delete、attrib 等事件类别,不写-e全部监控

[root@svr7 inotify-tools-3.13]# inotifywait -rq /todir/ #监控

另外开一个终端,测试

[root@svr7 ~]# touch /todir/3.txt

回到之前的终端查看

[root@svr7 inotify-tools-3.13]# inotifywait -rq /todir/ #捕捉完事件之后直接退出

/todir/ CREATE 3.txt

加上-m选项,测试

[root@svr7 inotify-tools-3.13]# inotifywait -rqm /todir/

另外开一个终端,测试

[root@svr7 ~]# touch /todir/4.txt

回到之前的终端查看

[root@svr7 inotify-tools-3.13]# inotifywait -rqm /todir/ #持续监控,不退出

/todir/ CREATE 4.txt

/todir/ OPEN 4.txt 打开

/todir/ ATTRIB 4.txt 修改或显示文件的属性

/todir/ CLOSE_WRITE,CLOSE 4.txt 关闭写入 关闭

删除3.txt 和 4.txt

[root@svr7 ~]# rm -rf /todir/3.txt

[root@svr7 ~]# rm -rf /todir/4.txt

另一终端查看

[root@svr7 inotify-tools-3.13]# inotifywait -rqm /todir/

……

/todir/ DELETE 3.txt

/todir/ DELETE 4.txt

三、同步脚本书写
P1 inotify与rsync的结合
解决重复操作,循环

for循环:适合写有次数的循环

while循环:适合写不定次数的循环(死循环)

       while  条件或命令

        do

                循环执行的代码

        done

[root@svr7 ~]# vim /root/rsync.sh

#!/bin/bash

while inotifywait -rq /todir #不能加m选项,while需要命令执行成功且退出才可进行下一个操作

do

        rsync --delete -avz /todir/ root@192.168.4.207:/op

t

done

[root@svr7 /]# chmod +x /root/rsync.sh

[root@svr7 /]# /root/rsync.sh

另开一个终端连接svr7,测试

[root@svr7 ~]# touch /todir/5.txt

[root@svr7 ~]# touch /todir/6.txt

另开一个终端连接pc207,查看/opt目录

[root@pc207 ~]# ls /opt/

回到之前运行脚本的终端,查看,会实时监控状态,没有退出

优化脚本,让其没有输出,静默模式

[root@svr7 ~]# vim /root/rsync.sh

#!/bin/bash

while inotifywait -rqq /todir

do

        rsync --delete -a /todir/ root@192.168.4.207:/opt

done

[root@svr7 ~]# /root/rsync.sh

另外终端测试

[root@svr7 ~]# touch /todir/7.txt

放入后台运行

[root@svr7 ~]# /root/rsync.sh  &

P2 实现从本地到远程web目录推送
实现从本地到远程的web目录推送,同步/var/www/html/目录

svr7主机编写脚本

[root@svr7 ~]# umount /var/www/html/dvd/

[root@svr7 ~]# vim /root/rsync.sh

#!/bin/bash

while inotifywait -rqq /var/www/html

do

        rsync --delete -a /var/www/html/ root@192.168.4.207:/var/www/html

done

[root@svr7 ~]# /root/rsync.sh & #放入后台运行

pc207安装httpd

[root@pc207 ~]# yum -y install httpd

[root@pc207 ~]# systemctl restart httpd

svr7主机编写内容,进行测试

[root@svr7 ~]# echo 123 > /var/www/html/index.html

[root@svr7 ~]# cat /var/www/html/index.html

123

pc207主机查看结果

[root@pc207 ~]# ls /var/www/html/

dvd  index.html  ks.cfg

[root@pc207 ~]# cat /var/www/html/index.html

123

  • 3
    点赞
  • 7
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值