当前位置:首页 > 系统运维 > CentOS7 rsync+inotify异机实时备份部署方案

CentOS7 rsync+inotify异机实时备份部署方案

Q师傅2022年07月11日系统运维954

一、 背景 需求

为了实现重要数据的异地备份,防止服务器故障导致数据丢失 而 影响业务连续运行 。 要求 实时检测 A服务器 xx目录 变化情况 ,一旦检测到目录发生 变化 立即触发向 B服务器 xx目录传输文件的动作 B服务器上保留最近 9天的备份文件 以达到 历史 数据异地 备份且不会无限撑满文件系统 。

二、 主机 环境

服务器IP 10.19.222.147 主机名 hosta 需要备份的目录为 /opt/opsmgr/backup

服务器IP 10.19.222.135 主机名 hostb用于接收备份文件的目录为 /home/backup

三、 方案 思路

hosta访问 hostb配置 ssh免密互信 。

hosta和 hostb安 装 rsync和 inotify-tools,实现实时检测目录并传输文件 。

hostb配置定时任务删除 9天以前的备份文件 防止磁盘被 无效数据 撑满 。


四、 实施方案

4.1互信配置登陆

10.19.222.147 hosta操作

[root@hosta ~]# ssh-keygen -t rsa //生成秘钥

Snipaste_2022-07-11_19-13-27.png

[root@hosta ~]# vi /etc/ssh/sshd_config //禁用 root ssh密码登录 ,但运行秘钥登录

PermitRootLogin without-password 先写

PermitRootLogin no 再写

Snipaste_2022-07-11_19-14-36.png

[root@hosta ~]# systemctl restart sshd //重启 sshd服务生效 上述 配置

[root@hosta ~]# cat /root/.ssh/id_rsa.pub //把 输出的内容 写 到 hostb的/root/.ssh/authorized_keys文件

Snipaste_2022-07-11_19-15-58.png

登陆10.19.222.135 hostb操作

[root@hostb ~]# mkdir /root/.ssh

[root@hostb ~]# chmod 700 /root/.ssh

[root@hostb .ssh]# vi /root/.ssh/authorized_keys //写入 hosta的 /root/.ssh/id_rsa.pub内容

ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABgQCf5ZLamqa6Of2NSqhjjlP2VClfWadfkHOINYOm4nOnEQ5k6PTZgMX5Gmtg1C8VUJxkFZcj+AG+oHqOzWxntIqqqKjmQodOU9NXa89GmcHSUSFnKO0pt8JafwPrPaL8bPSV0knFRV+wavxhpIG5cF//8Yvzu7CODIxP9zQgoM6fbX7V1PlHE5CTZRtv+40gyMlyz1f0NkxntZ7XZJQldx0CI5ieu0UuyqYgENQsOnlA7WfgMazOLvoVGwNJ6MPu5UeUNGPlvOgAoaY3HvfBd1Jt5FMJGToVqJjfIQqyldN2a2QquGgXrIIDai1gQJM/WPeTPs0YL5BuWa/k+CfJlG+c+ejR7halxhB1OQR2VBAdSld0wx47n7YUX4Bgztg7e6Dbb8i5xl8u49ABYJWrOC0phO5CRygtjANY7mXAqNpzV31Dm/uYbpALjeBm4WNO26G9VF4Wf5GUdDOjIhzB2GtrzMcB0OV7yNABT76j75KYgcikF+8Pg6BucXz21cv9z8= root@hosta

结果展示

Snipaste_2022-07-11_19-17-32.png

[root@hostb ~]# chmod 600 /root/.ssh/authorized_keys

[root@hostb ~]# vi /etc/ssh/sshd_config

PermitRootLogin without-password

PermitRootLogin no

Snipaste_2022-07-11_19-18-25.png

systemctl restart sshd 重启 sshd服务生效 上述 配置

登陆10.19.222.147操作

测试hosta 免密成功 登陆 hostb 22为 hostb主机 sshd服务监听端口 。

ssh -p 22 root@10.19.222.135

结果展示

Snipaste_2022-07-11_19-19-32.png

服务器A root互信 免密 登陆服务器 B配置完成 。

4.2自动同步配置

 软件安装

https://developer.aliyun.com/packageSearch

上传2个 rpm到 /tmp目录

登陆hosta hostb操作 安装 rsync和 inotify-tools

rpm -ivh /tmp/rsync-3.1.2-4.el7.x86_64.rpm

rpm -ivh /tmp/inotify-tools-3.14-9.el7.x86_64.rpm

Snipaste_2022-07-11_19-22-17.png

创建脚本

hosta上的 /opt/opsmgr/backup/为需要备份的目录

hostb上的 /home/backup/为存放备份文件的目录

vi /home/hik/remote_file_backup.sh 写入以下内容

#!/bin/bash

INOTIFY_CMD="/bin/inotifywait -mrq -e modify,create,attrib,move,delete /opt/opsmgr/backup/"

$INOTIFY_CMD | while read files

do

/bin/rsync -az /opt/opsmgr/backup/ root@10.19.222.135:/home/backup/

done

结果展示

Snipaste_2022-07-11_19-24-15.png

设置开机自动运行备份脚本

[root@hosta hik]# echo "sh /home/hik/remote_file_backup.sh &" >> /etc/rc.d/rc.local

[root@hosta hik]# chmod +x /etc/rc.d/rc.local

结果展示

Snipaste_2022-07-11_19-24-59.png

手动运行 脚本

[root@hosta hik]# sh /home/hik/remote_file_backup.sh &

查看结果

[root@hosta hik]# ps -ef|grep inotify |grep -v grep

[root@hosta hik]# ps -ef|grep remote_file_backup.sh |grep -v grep

Snipaste_2022-07-11_19-25-40.png

验证 同步效果

在hosta操作

增加一个文件 audit.log到 /opt/opsmgr/backup

[root@hosta backup]# cp /var/log/audit/audit.log ./

Snipaste_2022-07-11_19-26-55.png

在hostb操作 验证效果

Snipaste_2022-07-11_19-27-54.png

4.3备份数据 自动清理

登陆hostb 10.19.222.135操作

需要保留9天 /home/backup/backup的 数据 ,通过定时任务 每天凌晨来执行删除 9天前的文件 来实现 。

crontab -e 写入下面的内容

0 0 * * * find /home/backup/backup -type f -mtime +8 -exec rm {} \;

验证内容是否有误 crontab -l(小写 L)

Snipaste_2022-07-11_19-29-05.png

扫描二维码推送至手机访问。

版权声明:本文由 Greatqiu.cn Q师傅知识库 发布,如需转载请注明出处。

本文链接:https://greatqiu.cn/?id=115

分享给朋友:

相关文章

发表评论

访客

看不清,换一张

◎欢迎参与讨论,请在这里发表您的看法和观点。