rsync同步操作
rsync [选项...] 源目录 目标目录
同步与复制的差异
复制:完全拷贝源到目标
同步:增量拷贝,只传输变化过的数据
本地同步
rsync [选项...] 本地目录1 本地目录2 #同步整个文件夹
rsync [选项...] 本地目录1/ 本地目录2 #只同步目录下的数据
mkdir /todir
rsync -a /boot /todir //同步整个文件夹
rsync -a /boot/ /todir/ //只同步目录下的数据
--------------------------------------------------------------------------------------
rsync
--delete:删除目标文件夹内多余的文档
-n:测试同步过程,不做实际修改
-a:归档模式,相当于-rlptgoD
-v:显示详细操作信息
-z:传输过程中启用压缩/解压
mkdir /nsd02
mkdir /todir
touch /nsd02/{1..5}.txt
ls /nsd02
rsync -avz /nsd02/ /todir/
ls /todir
echo ahah > /nsd02/1.txt
rsync -avz /nsd02/ /todir/
cp /etc/passwd /nsd02
rsync -avz /nsd02/ /todir/
touch /todir/7.txt
rsync -avz --delete /nsd02/ /todir/
ls /nsd02
ls /todir
cp /etc/fstab /todir
rsync -avz --delete /nsd02/ /todir/
ls /nsd02
ls /todir
-------------------------------------------------------------------------------------
远程同步
rsync+ssh
与远程的 SSH目录保持同步
下行:rsync [...] user@host:远程目录 本地目录
上行:rsync [...] 本地目录 user@host:远程目录
虚拟机A:
ls /opt
rsync -avz --delete /opt/ [email protected]:/opt/
cp /etc/group /opt
rsync -avz --delete /opt/ [email protected]:/opt/
虚拟机B:
ls /opt
--------------------------------------------------------------------------------------
实时同步
一、部署公钥、私钥 实现ssh无密码认证
1.虚拟机A生成 公钥、私钥
ssh-keygen #一路回车
2.公钥、私钥生成的位置
ls /root/.ssh/
3.传递公钥到虚拟机B
ssh-copy-id [email protected]
rsync -avz --delete /opt/ [email protected]:/opt/
wget ----》 /root/.ssh ---》mv authorized_keys
---------------------------------------------------------------------------------------
二、如何知道目录内容的变化,监控目录内容的变化
1.真机传递软件包到虚拟机A中
scp /root/桌面/tools.tar.gz [email protected]:/
2.虚拟机A安装inotify-tools工具,实现监控目录内容的变化
tar -xf /tools.tar.gz -C /root/
mkdir /myrpm
tar -xf /root/tools/inotify-tools-3.13.tar.gz -C /myrpm
ls /myrpm/
步骤1: 安装gcc与make
步骤2: ./configure #首先切换到,解压目录内
步骤3: make #首先切换到,解压目录内
步骤4: make install #首先切换到,解压目录内
which inotifywait #查询命令所对应的程序
/usr/local/bin/inotifywait
echo $PATH
------------------------------------------------------------------------------------
inotifywait监控
inotifywait [选项] 目标文件夹
-m,持续监控(捕获一个事件后不退出)
-r,递归监控、包括子目录及文件
-q,减少屏幕输出信息
-e,指定监视的 modify、move、create、delete、
-rqq #两个q没有输出信息
attrib 等事件类别
-------------------------------------------------------------------------------------
三、书写Shell脚本
死循环 while
while [条件]
do
循环执行的操作
done
----------------------------------------------------------------------------------
vim /root/rsync.sh
#!/bin/bash
while inotifywait -rqq /opt
do
rsync -az --delete /opt/ [email protected]:/opt/
done
/root/rsync.sh #运行脚本