综合项目记录:自动化备份全网服务器数据平台

一、项目背景与需求

1.1项目概述

  • 该项目共分为2个子项目,由环境搭建和实施备份两部分组成

1.2项目总体需求

  • 企业内部有一台web服务器,内部数据很重要,现需要为该web服务器数据做备份,这样在数据丢失时可以恢复。
  • 要求如下:
    • 每天00点整在Web服务器上按日期打包备份系统配置文件、网站程序目录及访问日志文件

    • 通过rsync命令推送到备份服务器上保存

    • 备份服务器定时清除旧记录

    • 搭建邮件告警平台 

1.3项目备份需求

  • 所有服务器的备份目录必须都为/backup。

  • 要备份的系统配置文件包括但不限于:

    • 定时任务服务的配置文件(/var/spool/cron/root)。

    • 开机自启动的配置文件(/etc/rc.local)。

    • 日常脚本的目录 (/server/scripts)

  • Web服务器要求
    • Web站点目录为/var/html/www
    • Web服务器访问日志路径假定为/app/logs
    • Web服务器本地保留打包后的7天备份数据
  • 备份服务器要求
    • 保留最近7天所有备份数据,保留6个月内每周一的所有数据副本。

    • 要按照备份数据服务器内网IP为目录名称,备份的文件按照时间、名称为文件名称。

    • 需要确保备份的数据尽量完整准确,在备份服务器上对备份的数据是否完整进行检查。

    • 备份服务器每天早晨8:00把备份成功或失败结果信息发送到系统管理员邮箱里。

二、项目环境

2.1系统环境

使用三台CentOS7系统的服务器

3台服务器主机名分别为web01、backup、nfs01

使用静态ip,将三台主机的ip分别设置为192.168.205.181、182、183

2.2项目拓扑结构

三、需求分析

3.1项目环境搭建需求分析

首先需要关闭三台服务器的防火墙和selinux,确保网络可以正常连接

3.2主机配置需求分析

3.2.1Web服务器搭建部署

(1)验证rsync服务能否推送成功

(2)开发脚本实现打包备份、推送、校验、删除

(3)配置定时任务每天0点定时推送

3.2.2nfs服务器搭建部署

(1)验证rsync服务能否推送成功

(2)开发脚本实现打包备份、推送、校验、删除

(3)配置定时任务每天0点定时推送

3.2.3备份服务器搭建部署

(1)rsync服务器搭建部署

(2)开发脚本实现校验、删除、报警

(3)配置实时任务每天6点实时执行

(4)配置告警邮件发送平台

需求分析结束后,确定好操作步骤,接下来进入服务配置阶段

四、环境搭建

4.1web服务器

(1)修改主机名

(2)关闭防火墙和selinux

修改完selinux的配置文件后需要重启才能生效!!!

(3)安装好CentOS7.9系统后,建立本地yum源

首先备份原本的yum源,将原先的yum源目录加上back后缀,然后再新建一个yum源目录

在新建的目录下使用xftp将需要替换的yum源仓库拉入

拉入后重新读取yum源仓库缓存。

建立好缓存后yum源即成功替换

(4)设置静态ip

设置好后保存退出并且重新加载和激活网卡

(5)安装所有需要使用的软件

(6)下载yum仓库扩展并且下载nginx

(7)准备网站配置文件并且配置nginx配置文件实现网站服务

先新建网站文件存储目录

然后将网站文件上传至该网站

然后修改nginx的配置文件

修改好后启用nginx服务

然后进行检测,可见没有问题,至此web01服务器环境搭建完成。

4.2nfs服务器

前部分准备阶段与web服务器一致

(1)修改主机名

(2)关闭防火墙和selinux,并且重启

(3)建立本地yum源

上传yum源仓库

重新建立yum缓存

(4)设置静态ip

修改完成后重载和激活

(5)安装基础的软件

(6)下载必要的nfs传输的软件

(7)配置nfs传输目录和配置文件

新建一个目录专用于nfs共享文件

在该目录中创建一个readme文件

为该目录和其内所有目录和文件赋权,确保共享的文件可以正常打开

配置nfs的配置文件,添加要共享的目录和目标的网段

然后先启动rpcbind服务,后启动nfs-server服务,确保nfs共享的端口成功注册在rpcbind中

4.3web服务器验证和挂载nfs共享的文件

(1)验证nfs文件共享,可见没有问题

(2)挂载该共享目录到本地

新建一个目录用于挂载共享文件

将共享目录挂载到本地并且设置开机挂载

4.4backup服务器

前面的准备工作依然与前面一致

(1)设置主机名为backup

(2)关闭防火墙和selinux并且重启

(3)建立本地yum源

将yum仓库上传至该目录并且重新加载缓存

(4)设置静态ip并且重载和激活网卡

(5)修改rsync配置文件

(6)根据配置文件设置rsync

创建rsync账户及共享目录并修改目录属主为rsync

启动服务并设置开机自启

创建rsync虚拟账户名和密码,并赋予密码文件600权限

至此三台服务器的环境搭建全部完成。

五、配置备份脚本

5.1web服务器

编写备份web服务器的脚本

总共有一下几个内容需要备份:nginx的日志文件、网页的主数据、用于备份的脚本

开始编写备份脚本和创建备份目录

创建认证的文件密码并且设置权限为600

文件中只写密码

编写完成后进行测试

可见备份过程没有报错,接下来去检测备份结果

可见需要备份的文件已经全部存入备份服务器的备份目录中,web服务器备份脚本配置完毕。

5.2nfs服务器

编写nfs服务器的本地备份脚本

该服务器需要备份的文件有共享目录数据、日志文件、挂载信息

开始编写脚本

创建认证的文件密码并且设置权限为600

编写完成后进行测试

可见备份过程没有报错,接下来查看备份结果

可见备份目录中有了两台主机的备份文件,备份没有问题

六、配置定时任务

6.1web服务器

web01服务器编辑定时任务,实现每天00:00定时备份本地数据,并推送到Rsync服务器上

添加自动备份定时任务

可见任务已经成功添加

6.2nfs服务器

nfs服务器与web服务器一致,每天00:00定时备份本地数据,并推送到rsync服务器上

添加自动备份定时任务

可见任务已经成功添加

6.3backup服务器

backup服务器需要编写脚本,实现删除180天前的备份数据,但是保留每周一的备份数据

脚本编写好后配置定时任务,实现backup服务器删除180天的备份数据

可见任务已经成功添加

七、实现验证数据完整性和邮件告警

7.1验证数据完整性

backup服务端针对客户端备份时的md5指纹数据,利用MD5命令进行验证,完成数据传输过程完整性验证。

编写验证和邮件发送脚本

7.2配置邮件告警

首先需要安装邮件服务

配置qq邮箱ssl证书

配置邮件服务

在该文件末尾添加以下内容

最后测试邮件告警功能是否生效

可见测试邮件没有问题,可以正常收到

然后测试验证完整性的脚本

可见脚本编写没有问题,告警邮件可以收到

然后修改定时任务的时间间隔测试各个服务器的定时任务是否正常执行

修改为每分钟执行一次,并且将backup服务器的已经存在的备份文件全部删除,然后等待一分钟查看是否有新的备份文件自动备份完成。

一分钟后查看备份目录

可见备份正常,然后运行完整性检验脚本,可以正常收到邮件并且可见备份文件全部完整。

最后将定时任务修改为每天0点

至此该项目圆满完成。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。
如若转载,请注明出处:http://www.pswp.cn/pingmian/92326.shtml
繁体地址,请注明出处:http://hk.pswp.cn/pingmian/92326.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

联合索引全解析:一棵树,撑起查询的半边天

目录 一、为什么联合索引是MySQL性能优化的“王牌”? (一)索引的基本结构:从聚簇到非聚簇 1. 聚簇索引(Clustered Index) 2. 非聚簇索引(Secondary Index) (二&…

vue开发的计算机课程页面

课程信息展示页面设计与实现我将设计一个美观且实用的课程信息展示页面,重点展示计算机网络应用课程的相关信息。设计思路使用卡片式布局清晰展示课程各模块信息采用科技感配色方案,符合计算机网络课程主题添加动画效果增强用户体验响应式设计确保在各种…

MySQL 正则表达式详细说明

目录 MySQL 正则表达式详细说明 1. 基本操作符:REGEXP 和 RLIKE 2. 常用正则表达式模式 3. MySQL 正则表达式函数(MySQL 8.0) 4. 示例查询 5. 注意事项 6. 总结 MySQL 正则表达式详细说明 MySQL 支持正则表达式(Regular Ex…

c++之 栈浅析

C之栈浅析 概要 通过可视化游戏梳理栈特点以及栈操作方式. 学习栈的工作原理就像往糖果罐里放糖果和拿糖果一样简单! 栈特点 先进后出 技术名词解释 LIFO LIFO -> Last In, First Out 后进先出 可视化小游戏 游戏传送门

C++ 算术函子

在 C 中&#xff0c;算术函子&#xff08;Arithmetic Functors&#xff09; 是标准库 <functional> 中提供的一组函数对象&#xff0c;用于封装基本的算术运算&#xff08;如加、减、乘、除等&#xff09;。它们本质上是类模板&#xff0c;重载了 operator()&#xff0c;…

Flutter 事件总线 Event Bus

文章目录概要核心原理基本使用步骤优点注意事项适用场景小结概要 提示&#xff1a;这里可以添加技术概要 event_bus 是一个常用的第三方库&#xff0c;用于实现跨组件 / 跨页面的事件通信&#xff0c;基于发布 - 订阅模式&#xff08;Publish-Subscribe Pattern&#xff09;工…

数据库管理系统:入门需要了解的内容

数据库管理系统&#xff1a;数字化时代的基石 在信息技术飞速发展的今天&#xff0c;我们生活在一个被数据包围的世界里。从日常使用的社交媒体、电商平台&#xff0c;到企业运营的核心业务系统&#xff0c;再到政府部门的政务管理&#xff0c;数据无处不在。而数据库管理系统&…

安装CST时,报错问题处理

今天安装这个软件的时候&#xff0c;发现一个问题一直处理不了&#xff0c;然后看网上的一些解决方法&#xff0c;最终得到处理&#xff0c;这里就简单记录下解决方法。问题&#xff1a;处理方案&#xff1a;1.问题原因&#xff1a;crack中的CST Studio Suite 2022未配置成功。…

分治-快排-215.数组中的第k个最大元素-力扣(LeetCode)

一、题目解析1、需返回排序好的第k个最大元素2、要求时间复杂度为O(N)二、算法原理解法1&#xff1a;堆排序(大根堆) k*O(N)借用大堆的性质&#xff0c;将元素插入到大堆中&#xff0c;按照k输出堆顶第k个元素解法2&#xff1a;堆排序(小根堆) (N-k)*O(logN)先建k个小堆&#x…

新手向:Python实现图片转ASCII艺术

Python实现图片转ASCII艺术&#xff1a;从零开始的完整指南Python实现图片转ASCII艺术的技术解析ASCII艺术是一种使用字符组合来表现图像的技术&#xff0c;这种技术源于早期计算机显示器的图形限制&#xff0c;如今已成为一种独特的数字艺术形式。ASCII艺术的应用场景十分广泛…

6.类与对象(二)

总结 本章写了封装、static成员以及代码块。 一、封装 1.封装的概念 封装简单来说就是被密封起来&#xff08;不让我们看见的东西&#xff09;&#xff0c;即被隐藏。 对于用户来说&#xff0c;并不需要关心的类&#xff0c;所实现的细节就会被封装&#xff08;隐藏&#x…

流形折叠与条件机制

1. 为什么要防止流形折叠&#xff08;mode collapse&#xff09; 流形折叠 生成器只学会输出极少数甚至单一模式&#xff08;mode&#xff09;的样本&#xff0c;而完全忽略数据分布的多样性。 后果一句话&#xff1a;“模型看起来生成了很多图&#xff0c;其实都在重复同一张…

《从零构建大语言模型》学习笔记2,文本数据处理1(以及tiktoken库无法下载gpt2参数,调用get_encoding时SSL超时的解决方法)

《从零构建大语言模型》学习笔记2&#xff0c;文本数据处理1 文章目录《从零构建大语言模型》学习笔记2&#xff0c;文本数据处理1前言1、分词2.将把提取出来的词元转换为数字ID3.添加特殊上下文标记4. 字节对编码&#xff08;以及tiktoken库无法下载gpt2参数&#xff0c;调用g…

【AI工具】解放双手,操控浏览器的工具对比,来了

&#x1f4d2;前言在github上面&#xff0c;有几个操作浏览器的mcp工具&#xff1a;browser-use / browser-usemicrosoft / playwright-mcpAgentDeskAI / browser-tools-mcphangwin / mcp-chrome想知道他们的区别吗&#xff0c;想知道那个更适合你吗&#xff0c;想。。。&#…

Linux 操作系统基础知识总结

1、操作系统总体介绍 CPU&#xff1a; 就像人的大脑&#xff0c;主要负责相关事情的判断以及实际处理的机制。 查询指令&#xff1a; cat /proc/cpuinfo 内存&#xff1a; 大脑中的记忆区块&#xff0c;将皮肤、眼睛等所收集到的信息记录起来的地方&#xff0c;以供CPU进行判断…

cudagraph 本质详解

理解 CUDA Graph 的本质,关键在于理解它解决了什么问题,以及它通过什么机制来解决这个问题。 一、 核心问题:传统 CUDA 编程的“CPU 瓶颈” 在 CUDA Graph 出现之前,我们通常使用 CUDA Stream 来向 GPU 提交任务。这是一个动态的过程: CPU 作为指挥官:CPU 循环地、逐条…

Spring MVC 父子容器深度解析:原理、实战与优化

1. 父子容器的定义与设计初衷一句话总结&#xff1a;父子容器的核心价值在于解耦 Web 层与业务层&#xff0c;实现职责分离与上下文隔离。1.1 父子容器的层次关系在 Spring MVC 中&#xff0c;容器分为两类&#xff1a;父容器&#xff08;Root ApplicationContext&#xff09;&…

AI赋能SEO关键词优化策略

内容概要 人工智能&#xff08;AI&#xff09;技术正深刻改变着搜索引擎优化&#xff08;SEO&#xff09;的实践方式&#xff0c;尤其在关键词研究这一核心领域带来了革命性的影响。本文聚焦于AI如何赋能SEO关键词优化策略&#xff0c;系统性地探讨其核心价值与应用路径。我们将…

虚拟机Ubuntu图形化界面root用户登录错误

当在 Ubuntu 图形界面登录 root 用户出现错误无法进入时 1. 检查 PAM 配置文件 PAM&#xff08;Pluggable Authentication Modules&#xff0c;可插拔认证模块&#xff09;负责管理用户认证相关的策略。图形登录界面的 PAM 配置文件通常是 /etc/pam.d/gdm-password 。以管理员权…

【杂谈】-逆缩放悖论:为何更多思考会让AI变“笨“?

逆缩放悖论&#xff1a;为何更多思考会让AI变"笨"&#xff1f; 文章目录逆缩放悖论&#xff1a;为何更多思考会让AI变"笨"&#xff1f;1、解码逆缩放现象2、AI 推理失效的五大症结3、AI 推理应对复杂度的策略图谱4、人工智能评估体系的反思5、人工智能推理…