rsync+inotify实现实时同步

rsync命令:实现本地主机和远程主机之间文件同步,但是不能实现远程主机到远程主机的文件同步,可以实现增量同步
用法:
– rsync [选项…] 源目录 目标目录
• 同步与复制的差异
– 复制:完全拷贝源到目标
– 同步:增量拷贝,只传输变化过的数据
• rsync常用选项
– -n:测试同步过程,不做实际修改
– --delete:删除目标文件夹内多余的文档
– -a:归档模式,相当于-rlptgoD
– -v:显示详细操作信息
– -z:传输过程中启用压缩/解压
• 本地同步
– rsync [选项…] 本地目录1 本地目录2 //同步整个文件夹
– rsync [选项…] 本地目录1/ 本地目录2 //只同步目录下的数据
实例:
注意源目录后面是否要带反斜杠
[root@svr7 ~]# rsync -av /nsd20 /todir/ #会直接同步nsd20整个目录
[root@svr7 ~]# rsync -av /nsd20/ /todir/ #只同步目录下面的数据
如果要使源和目标目录的数据保持一致,可以加–delete参数,这个参数会删除目标目录里多余的文件
[root@svr7 ~]# rsync -av --delete /nsd20/ /todir/

• 远程同步
– rsync [选项…] 本地目录/ user@host:远程目录 //将本地文件同步到远程主机
– rsync [选项…] user@host:远程目录 本地目录/ //将远程文件同步到本地目录
[root@svr7 ~]# rsync -av --delete /todir/ root@192.168.4.207:/opt/
########################
inotify软件介绍
• 基本用法
– 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
使用rsync+inotifywait实现实时同步
需要事先在两台主机上配置免密登录
[root@ansible day06]# ssh-keygen
Generating public/private rsa key pair.
Enter file in which to save the key (/root/.ssh/id_rsa):
Enter passphrase (empty for no passphrase):
Enter same passphrase again:
Your identification has been saved in /root/.ssh/id_rsa.
Your public key has been saved in /root/.ssh/id_rsa.pub.
The key fingerprint is:
SHA256:0XRxSnNewMUnUiMmehrOBeqh9+4UwMy5p9LplpFRx6s root@ansible
The key’s randomart image is:
±–[RSA 2048]----+
| …o B++o|
| + o.=o=.Booo|
| O.+.+…|
| o.
*. |
| . +oS. |
| oo=E. |
| . +oo |
| ooo |
| …o |
±—[SHA256]-----+
[root@ansible day06]# ssh-copy-id 192.168.1.89
/usr/bin/ssh-copy-id: INFO: Source of key(s) to be installed: “/root/.ssh/id_rsa.pub”
The authenticity of host ‘192.168.1.89 (192.168.1.89)’ can’t be established.
ECDSA key fingerprint is SHA256:mwNUzyn/tHkibtWJc8DWV5pRGwICe3TZ4XyjNtskWNI.
ECDSA key fingerprint is MD5:c2:b9:67:82:f1:69:52:27:14:7e:2c:3c:d3:50:af:6a.
Are you sure you want to continue connecting (yes/no)? yes
/usr/bin/ssh-copy-id: INFO: attempting to log in with the new key(s), to filter out any that are already installed
/usr/bin/ssh-copy-id: INFO: 1 key(s) remain to be installed – if you are prompted now it is to install the new keys
root@192.168.1.89’s password:

Number of key(s) added: 1

Now try logging into the machine, with: “ssh ‘192.168.1.89’”
and check to make sure that only the key(s) you wanted were added.

编写实时同步脚本
#!/bin/bash
FROM_DIR="/var/www/html/"
RSYNC_CMD=“rsync -az --delete $FROM_DIR root@192.168.1.89:/var/www/html”
while inotifywait -rqq -e modify,move,create,delete,attrib $FROM_DIR
do
$RSYNC_CMD
done &
其中-qq为不显示输出信息

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值