当前位置: 首页 > news >正文

Rsync自动化备份平台建设实战

自动化备份全网服务器数据平台

总体需求

  • 某企业里有一台Web服务器,里面的数据很重要,但是如果硬盘坏了数据就会丢失,现在领导要求把数据做备份,这样Web服务器数据丢失在可以进行恢复
  • 要求如下:
    • 每天00点整在Web服务器上按日期打包备份系统配置文件、网站程序目录及访问日志文件
    • 通过rsync命令推送到备份服务器上保存
    • 备份服务器定时清除旧记录
    • 搭建邮件告警平台

备份需求

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

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

    • 定时任务服务的配置文件(/var/spool/cron/root) (适合Web和NFS服务器)。

    • 开机自启动的配置文件(/etc/rc.local) (适合Web和NFS服务器)。

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

  • Web服务器要求

    • Web站点目录假定为/var/html/www,如果没有,可以先模拟创建。
    • Web服务器访问日志路径假定为/app/logs,如果没有,可以先模拟创建。
    • Web服务器本地保留打包后的7天备份数据即可(本地留存不能多于7天,因为数据太多硬盘会满)。
  • 备份服务器要求

    • 保留最近7天所有备份数据,保留6个月内每周一的所有数据副本。
    • 要按照备份数据服务器内网IP为目录名称,备份的文件按照时间、名称为文件名称。
    • 需要确保备份的数据尽量完整准确,在备份服务器上对备份的数据是否完整进行检查。
    • 备份服务器每天早晨8:00把备份成功或失败结果信息发送到系统管理员邮箱里。
服务器说明备份目录目录说明备注
all server/backup备份目录统一服务器本地备份目录,便于管理
all server/var/spool/cron/root定时任务服务配置文件系统配置文件
all server/etc/rc.local开机自启动配置文件系统配置文件
all server/server/scripts日常脚本目录统一服务器本地脚本目录,便于管理
Web server/var/www/htmlweb服务器站点目录mkdir -p /var/www/html
Web server/app/logsweb服务器访问日志路径mkdir -p /app/logs

实施步骤

web01服务器准备工作(此步骤在nfs01和backup主机相同操作)注:准备工作很重要

  • 关闭防火墙、selinux
[root@web01 yum.repos.d]# systemctl stop firewalld
[root@web01 yum.repos.d]# vim /etc/selinux/config 
[root@web01 yum.repos.d]# systemctl disable firewalld
Removed symlink /etc/systemd/system/multi-user.target.wants/firewalld.service.
Removed symlink /etc/systemd/system/dbus-org.fedoraproject.FirewallD1.service.
[root@web01 yum.repos.d]# reboot

请添加图片描述

  • 配置静态ip、网关、dns
[root@web01 ~]# vim /etc/sysconfig/network-scripts/ifcfg-ens32 
[root@web01 ~]# systemctl restart network

请添加图片描述

  • 下载所需要的软件
[root@web01 ~]# yum install vim  tree tar net-tools rsync nfs-utils  epel-release -y
  • 部署网站
[root@web01 ~]# yum  install  nginx  -y
[root@web01 ~]# mkdir /www
[root@web01 ~]# cd /www
#然后通过xftp将web源文件添加到此目录下

请添加图片描述

  • 修改nginx配置文件
[root@web01 ~]# vim  /etc/nginx/nginx.conf
[root@web01 ~]# systemctl start nginx 
[root@web01 ~]# systemctl enable nginx 
Created symlink from /etc/systemd/system/multi-user.target.wants/nginx.service to /usr/lib/systemd/system/nginx.service.

请添加图片描述

测试在windows端能否通过ip访问

nfs01服务器搭建

  • 部署nfs共享储存,web01为客户端,nfs01为服务端
# nfs01端操作
[root@nfs01 ~]# yum  install rpcbind -y
[root@nfs01 ~]# yum install nfs-utils -y
[root@nfs01 ~]# mkdir /nfsfile
[root@nfs01 ~]# echo "welcome www.sx.com" > /nfsfile/readme
[root@nfs01 ~]# chmod -Rf 777 /nfsfile/ 
[root@nfs01 ~]# vim /etc/exports
[root@nfs01 ~]# systemctl enable --now  rpcbind
[root@nfs01 ~]# systemctl enable --now  nfs-server

/etc/exports文件

请添加图片描述

# web01端操作
[root@web01 ~]# showmount -e 192.168.70.137 # 查看网络中的共享信息
Export list for 192.168.70.137:
/nfsfile 192.168.70.136
[root@web01 ~]# mkdir /web_nfs
[root@web01 ~]# mount -t nfs 192.168.70.137:/nfsfile /web_nfs
[root@web01 ~]# cd /web_nfs/
[root@web01 web_nfs]# ls
readme

backup服务器搭建

  • 修改rsync配置文件
[root@backup ~]# vim /etc/rsyncd.conf

请添加图片描述

  • 创建rsync账户及共享目录
[root@backup ~]# mkdir /backup
[root@backup ~]# chown -R rsync /backup
[root@backup ~]# id rsync
[root@backup ~]# systemctl start rsyncd
[root@backup ~]# systemctl enable rsyncd
[root@backup ~]# ps -ef | grep rsync  #查看是否有rsync进程
root       2685      1  0 01:59 ?        00:00:00 /usr/bin/rsync --daemon --no-detach
root       2716   2443  0 02:00 pts/0    00:00:00 grep --color=auto rsync
[root@backup ~]# echo "rsync:rsync123" > /etc/rsync.password
[root@backup ~]# chmod 600 /etc/rsync.password  #官方规定的文件权限

配置web01本地备份脚本

# 编辑脚本
[root@web01 ~]# mkdir  /backup
[root@web01 ~]# mkdir -p  /server/scripts
[root@web01 ~]# vim  /server/scripts/backup.sh
#建立认证文件密码
[root@web01 ~]# vim /etc/rsync.password  # 创建的文件与backup备份服务端修改的/etc/rsyncd.conf(最后一行)文件中的一致
rsync123        
[root@web01 ~]# chmod 600 /etc/rsync.password

请添加图片描述

#测试

请添加图片描述

请添加图片描述

配置nfa01端备份脚本

  • 编写脚本
[root@nfs01 ~]#  mkdir  /backup
[root@nfs01 ~]# mkdir -p  /server/scripts
[root@nfs01 ~]# vim  /server/scripts/backup.sh
[root@nfs01 ~]# vim /etc/rsync.password
rsync123
[root@nfs01 ~]# chmod 600 /etc/rsync.password
[root@nfs01 ~]# ll -d /etc/rsync.password 
-rw------- 1 root root 9 812 08:58 /etc/rsync.password
# 测试
[root@nfs01 ~]# bash  /server/scripts/backup.sh 
2025-08-12_Week02 192.168.70.137 start backup ......
Local backup successful, the backup files have been pushed to the backup server
# 在备份服务器端查看
[root@backup ~]# cd /backup/
[root@backup backup]# ls
192.168.70.136  192.168.70.137

/server/scripts/backup.sh配置文件

请添加图片描述

编辑例行性计划任务

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

在nfs01主机上做相同操作

[root@web01 web_nfs]# vim /etc/crontab 

请添加图片描述

  • 在backup主机上编写脚本,实现删除180天前的所有备份数据,但保存每周一的
[root@backup backup]# mkdir -p /server/scripts
[root@backup backup]# cd /server/scripts/
[root@backup scripts]# vim /server/scripts/del_bak_data.sh

请添加图片描述

#配置定时任务
[root@backup scripts]# vim /etc/crontab 

请添加图片描述

验证数据完整性

  • backup服务端针对客户端备份时的md5指纹数据,利用MD5命令进行验证,完成数据传输过程完整性验证。
[root@backup scripts]# vim send_mail.sh

请添加图片描述

实现邮件告警

[root@backup ~]# yum  install  mailx  -y
[root@backup ~]# mkdir -p /root/.certs
[root@backup ~]# cd  /root/.certs
[root@backup .certs]# echo -n | openssl s_client -connect smtp.qq.com:465 | sed -ne '/-BEGIN CERTIFICATE-/,/-END CERTIFICATE-/p' > ~/.certs/qq.crt
depth=2 C = US, O = DigiCert Inc, OU = www.digicert.com, CN = DigiCert Global Root G2
verify return:1
depth=1 C = US, O = "DigiCert, Inc.", CN = DigiCert Secure Site OV G2 TLS CN RSA4096 SHA256 2022 CA1
verify return:1
depth=0 C = CN, ST = Guangdong Province, L = Shenzhen, O = Shenzhen Tencent Computer Systems Company Limited, CN = *.mail.qq.com
verify return:1
DONE
[root@backup .certs]# certutil -A -n "GeoTrust SSL CA" -t "C,," -d ~/.certs -i ~/.certs/qq.crt
[root@backup .certs]# certutil -A -n "GeoTrust Global CA" -t "C,," -d ~/.certs -i ~/.certs/qq.crt
[root@backup .certs]# certutil -A -n "GeoTrust SSL CA - G3" -t "Pu,Pu,Pu" -d ./ -i qq.crt
Notice: Trust flag u is set automatically if the private key is present.

#配置文件
[root@backup .certs]# vim  /etc/mail.rc

请添加图片描述

#测试服务
[root@backup ~]# bash /server/scripts/send_mail.sh

请添加图片描述

http://www.dtcms.com/a/326986.html

相关文章:

  • C#对接Ollama,调用大模型禁用思考模式
  • 鸿蒙本地与云端数据双向同步实战:从原理到可运行 Demo 的全流程指南
  • HarmonyOS元服务开发系列教程(三):实现音乐播放和封面旋转
  • 智能家居Agent:物联网设备的统一控制与管理
  • Python函数篇:从零到精通
  • 间隙锁(Gap Lock)
  • 【YOLOV8】小目标困难场景优化
  • 计算机网络---默认网关(Default Gateway)
  • 通用同步/异步收发器USART串口
  • JavaScript的fetch函数的用法
  • C++11新增关键字和范围for循环
  • 【限时分享:Hadoop+Spark+Vue技术栈电信客服数据分析系统完整实现方案
  • 基于Python的《红楼梦》文本分析与机器学习应用
  • Uniapp物联网平台登录与温湿度监测系统
  • 【电子硬件】EMI中无源晶振的优势
  • 从原理到实践:一文掌握Kafka的消息生产与消费
  • Web前端小游戏轮盘。
  • 开发避坑指南(23):Tomcat高版本URL特殊字符限制问题解决方案(RFC 7230 RFC 3986)
  • Python Day28 HTML 与 CSS 核心知识点 及例题分析
  • @Rancher简介部署使用 - Docker Compose
  • 第五章 特征值与特征向量
  • vue3 实现web网页不同分辨率适配
  • 【狂热算法篇】探寻图论幽径之SPFA算法:图论迷宫里的闪电寻径者(通俗易懂版)
  • http网页部署
  • AI Agent——基于 LangGraph 的多智能体任务路由与执行系统实战
  • 微算法科技(NASDAQ:MLGO)开发经典增强量子优化算法(CBQOA):开创组合优化新时代
  • Git与CI/CD相关知识点总结
  • 【element树组件】el-tree实现连接线及hover编辑效果
  • 机器学习处理文本数据
  • Linux Ansible的安装与基本使用