当前位置: 首页 > 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.lryc.cn/news/618791.html

相关文章:

  • 【数据分析与挖掘实战】金融风控之贷款违约预测
  • 阿里云 Windows 服务器 搭建 Gitea 私有 Git 服务器完整教程
  • 开疆智能Ethernet转ModbusTCP网关连接PAC3200电能表配置案例
  • VirtualBox 虚拟机磁盘扩容完整手册
  • MaxKB+合合信息TextIn:通过API实现PDF扫描件的文档审核
  • [git] 重配ssh key | 解决冲突
  • python日志中的logging.basicConfig和logging.getLogger
  • [Robotics_py] 机器人运动模型 | `update`函数 | 微积分矩阵
  • 数据类型 list
  • 浏览器CEFSharp+X86+win7 之 全球外贸电商平台订单管理(十)
  • 每日五个pyecharts可视化图表-line:从入门到精通 (4)
  • 数据结构:链表栈的操作实现( Implementation os Stack using List)
  • Java 中 List 接口详解:知识点与注意事项
  • Java数据结构之LinkedList
  • 【开发环境下浏览器前后端Cookie跨域问题】
  • 视频安全预警系统的应用价值
  • vue3用quill富文本赋值后回退键删除报错
  • 可以免费使用的数字人API
  • 亚马逊POST退场后的增长突围:关联与交叉销售的全链路策略重构
  • 一维数组的创建、初始化与使用指南
  • 详解k6中的核心概念——场景(Scenarios)
  • Spring面试宝典
  • Pytest项目_day13(usefixture方法、params、ids)
  • Linux系统管理利器lsof命令详解与实战应用
  • 杰理手表-增加提示音-提示音音量调整--使用提示音
  • kafka 消费者组的概念是什么?它是如何实现消息的点对点和发布/订阅模式?
  • 无人机航拍数据集|第14期 无人机水体污染目标检测YOLO数据集3000张yolov11/yolov8/yolov5可训练
  • Linux中Https配置与私有CA部署指南
  • 股指期货基本术语是什么?
  • 云计算分类与主流产品