目的:
源主机A数据实时备份数据到远程备份主机B上
1、设置主机A免密访问备份主机B
2、安装inotify-tools(监控源主机文件变化)
3、编写实时同步脚本
4、配置检查
5、设置定时全数据备份
一、设置主机A免密访问备份主机B
1、在服务器A生成密钥(注意:P为大写)
[root@A ~]# ssh-keygen -t rsa -P '' -f ~/.ssh/id_rsa
2、将生成的密匙拷贝到服务器B上,根据提示输入服务器B的密码
[root@A ~]# ssh-copy-id root@121.33.7.1 //服务器B的IP
root@121.33.7.1's password: //输入服务器B的root账号登录密码
Now try logging into the machine, with "ssh 'root@121.33.7.1'", and check in:
.ssh/authorized_keys
to make sure we haven't added extra keys that you weren't expecting.
3、检查是否成功
[root@A ~]# ssh 121.33.7.1(服务器B的IP)
Last login: Mon Oct 28 21:02:57 2019 from 121.33.7.1
Welcome to Huawei Cloud Service
[root@B ~]# //已成功连接到服务器B上
二、安装inotify-tools(监控源主机文件变化)
1、yum命令安装
[root@A ~]#yum -y install inotify-tools
2、检查监控是否成功
[root@A ~]#inotifywait -mrq -e create,close_write,move,delete,modify /home/rsbak/
输入命令后使用另一个终端窗口打开源主机A,进入rsbak目录进行增删改查操作,返回监控终端查看是否有监测动态日志
三、编写实时同步脚本
1、创建脚本文件(in.sh)
[root@A ~]# vi /home/rsbak/in.sh
2、脚本内容
#!/bin/bash
#inotifywait监控源目录动态
inotifywait -mrq -e create,close_write,move,delete,modify /home/rsbak/ | while read file
do
#同步到目的主机bak目录下,--delete 参数慎重使用,不使用去掉即可
rsync -av --delete /home/rsbak/*.txt root@192.xx.xx.xx:/home/bak/
#echo " ${file} was rsynced" >>/opt/soft/log/rsync.log 2>&1
done
#将脚本加入后台执行
sh in.sh &
bash in.sh &
3、rsync服务参考
https://www.jianshu.com/p/4beb57b99927
四、检查配置是否成功
1、启动inotify-tools
[root@A ~]# /home/rsbak/in.sh
2、启动后Ctrl+z退出监听状态
3、在源主机A的rsbak目录下新建123.txt文件
4、进入备份主机B存放备份数据的bak目录下查看是否存在123.txt文件
脚本配置了后台运行权限,inotify-tools可在后台监测数据变化,同时进行rsync备份
五、定时全数据备份
为避免实时备份出现的数据遗漏、数据错误、备份出错等情况,建议定时执行全数据备份
1、编写rsycn定时全数据备份脚本(rs.sh)
[root@A ~]# vi /home/rsbak/rs.sh
脚本加入内容:
#! /bin/sh
#源主机(rsbak)同步至备份主机(bak):
#rsync -av /home/rsbak/ root@172.xx.xx.xxx:/home/bak/
2、设置定时
在crontab末尾加入自动执行脚本命令(每天0点执行)
[root@A ~]# vi /etc/crontab
末尾加入命令:00 00 * * * root /home/rsbak/rs.sh
3、 保存退出,重启cron。
[root@A ~]# /etc/rc.d/init.d/crond restart
Stopping crond: [ OK ]
Starting crond: [ OK ]