1、实验主机
centos7环境
|192.168.13.96 | rsync服务端,inotify服务 | 被备份端
|192.168.13.70 | rsync客户端 | 备份服务器
2、安装rsync,两台主机都安装
yum -y install rsync
systemctl restart rsyncd
systemctl enable rsyncd
3、在服务端进行rsyncd.conf文件修改(192.168.13.96)
vim /etc/rsyncd.conf
uid = root
gid = root
use chroot = yes
max connections = 30
pid file = /var/run/rsyncd.pid
lock file = /var/run/rsync.lock
log file = /var/log/rsyncd.log
dont compress = *.gz *.tgz *.zip *.z *.Z *.rpm *.deb *.bz2
[back]
path = /data
ignore errors
read only = no
list = yes
hosts allow = 192.168.13.0/24
auth users = root
systemctl restart rsyncd
4、进行客户端免密登录(192.168.13.70)
ssh-keygen #一直回车就行
cd /root/.ssh
cat id_rsa.pub >> authorized_keys
chmod 600 authorized_keys
chmod 700 /root/.ssh
修改sshd_config问件开启免密登录
vim /etc/ssh/sshd_config
RSAAuthentication yes #文件中没有手动加入
PubkeyAuthentication yes #文件中有,去掉注释符
PasswordAuthentication yes #默认是开启的
systemctl restart sshd
取出私钥文件:id_rsa ,然后修改名字(我改为主机ip:root@192.168.13.70)
5、把root@192.168.13.70文件放入rsync服务端主机的/root/.ssh目录下
chmod 600 root@192.168.13.70
在/root/.ssh目录下创建config文件
vim config
Host 192.168.13.70
HostName 192.168.13.70
User root
Port 22
IdentityFile /root/.ssh/root@192.168.13.70
6、测试能否是有rsync进行ssh协议传输
rsync -e ssh /root/.ssh/root@192.168.13.70 -aq /date root@192.168.13.70:/backup
会出现下图情况,表示可以进行rsync进行ssh传输
再次传输,出现下图情况,并且192.168.13.70的/backup目录下出现/data目录下的数据,表示tsync可以正常备份
7、安装inotify(192.168.13.96) #进行文件监控
wget -O /etc/yum.repos.d/CentOS-Base.repo http://mirrors.aliyun.com/repo/Centos-7.repo
yum install epel-release -y
yum install inotify-tools -y
8、写shell脚本进行inotifywait检测与传输
vim bf.sh
#!/bin/bash
inotifywait -mrq -e close_write,modify,create,attrib,move,delete /data | while read file
do
rsync -e ssh /root/.ssh/root@192.168.13.70 -aq /data/* root@192.168.13.70:/backup
done
chmod 777 bf.sh
./bf.sh & #把脚本放入后台执行
当/data下发生变化时,rsync就会进行备份,192.168.13.70下的/backup就会跟随/data进行变化
测试:
当脚本放在后台执行后
在/data 目录下创建爱文件,看备份端的/backup目录下是否有刚创建的文件