总体需求某企业里有一台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/htmlWeb server/app/logsweb服务器访问日志路径mkdir -p /app/logs项目结构配置前准备主机名IP地址硬件软件web01192.168.88.200cpu:1颗2核内 存2GBHDD20GB网 络NATVmWare17Centos7.9nginx1.20rsync3.1.2nfs01192.168.88.201cpu:1颗2核内 存2GBHDD20GB网 络NATVmWare17Centos7.9nfsrpcbindrsync3.1.2backup192.168.88.202cpu:1颗2核内 存2GBHDD20GB网 络NATVmWare17Centos7.9mailx12.5rsync3.1.21、项目环境搭建1.1 web01服务器环境搭建安装Centos7.9系统替换yum源连接xshell关闭防火墙和selinux设置主机名设置主机名[rootliulinyao ~]# hostnamectl set-hostname web01 [rootliulinyao ~]# bash关闭防火墙[rootweb01 ~]# systemctl stop firewalld [rootweb01 ~]# systemctl disable firewalld [rootweb01 ~]# systemctl status firewalld设置静态ip进行挂载[rootweb01 ~]# nmcli c up ens32 [rootweb01 ~]# nmcli c reload下载软件[rootweb01 ~]# yum install vim tree tar net-tools rsync -y[rootweb01 ~]# yum install nfs-utils -y1.2 部署网站[rootweb01 ~]# wget -O /etc/yum.repos.d/epel.repo https://mirrors.aliyun.com/repo/epel-7.repo //下载阿里云EPEL7源 [rootweb01 ~]# yum makecache //生成yum软件缓存 [rootweb01 ~]# yum install nginx -y [rootweb01 ~]# mkdir -p /www/sczl [rootweb01 ~]# cd /www/sczl把网站文件上传到虚拟机使用Xftp配置nginx文件[rootweb01 sczl]# vim /etc/nginx/nginx.conf [rootweb01 sczl]# systemctl start nginx [rootweb01 sczl]# systemctl enable nginx在主机输入ip测试网页是否搭建成功如图则成功1.3 nfs服务器环境搭建安装Centos7.9系统替换yum源连接xshell关闭防火墙和selinux设置主机名步骤如上述1.1相同设置主机名关闭防火墙配置静态ip安装软件2 部署共享存储nfs01为服务端web01为客户端2.1 nfs01服务端操作下载所需软件[rootnfs01 ~]# yum install rpcbind nfs-utils -y[rootnfs01 ~]# mkdir /nfsfile [rootnfs01 ~]# echo welcome to www.openlab.com /nfsfile/readme [rootnfs01 ~]# chmod -Rf 777 /nfsfile/ [rootnfs01 ~]# vim /etc/exports [rootnfs01 ~]# systemctl start rpcbind [rootnfs01 ~]# systemctl enable rpcbind [rootnfs01 ~]# systemctl start nfs-server [rootnfs01 ~]# systemctl enable nfs-server2.2 web01客户端操作[rootweb01 ~]# showmount -e 192.168.164.111[rootweb01 ~]# showmount -e 192.168.164.111 Export list for 192.168.164.111: /nfsfile 192.168.164.0/24 [rootweb01 ~]# mkdir /web_nfs [rootweb01 ~]# mount -t nfs 192.168.164.111:/nfsfile /web_nfs [rootweb01 ~]# cd /web_nfs [rootweb01 web_nfs]# ls readme [rootweb01 web_nfs]# cd ~ [rootweb01 ~]# vim /etc/fstab [rootweb01 ~]# [rootweb01 ~]# mount -a [rootweb01 ~]# df -h进行挂载2.3 backup服务器环境搭建安装Centos7.9系统替换yum源连接xshell关闭防火墙和selinux设置主机名步骤如上述1.1相同设置主机名关闭防火墙配置静态ip安装软件[rootbackup ~]# yum install vim tree tar net-tools rsync mailx -y[rootbackup ~]# vim /etc/rsyncd.conf创建rsync账户及共享目录并修改目录属主为rsync[rootbackup ~]# useradd -M -s /sbin/nologin rsync [rootbackup ~]# mkdir /backup [rootbackup ~]# chown -R rsync /backup开机启动服务[rootbackup ~]# systemctl enable --now rsyncd [rootbackup ~]# ps -ef | grep rsync创建rsync虚拟账户名和密码,并赋予密码文件600权限[rootbackup ~]# echo rsync:rsync123 /etc/rsync.password [rootbackup ~]# chmod 600 /etc/rsync.password3 配置备份脚本3.1配置web01客户端本地备份脚本web01需要打包备份的内容[rootweb01 ~]# tree /var/log/nginx/ //日志 [rootweb01 ~]# tree /www //网站主数据配置web01的脚本[rootweb01 ~]# mkdir /backup [rootweb01 ~]# mkdir -p /server/scripts [rootweb01 ~]# vim /server/scripts/backup.sh配置客户端认证文件[rootweb01 ~]# vim /etc/rsyncd.passwd [rootweb01 ~]# chmod 600 /etc/rsyncd.passwd测试在web01测试[rootweb01 ~]# bash /server/scripts/backup.sh在backup中可以看到数据[rootbackup ~]# ls /backup/192.168.164.1313.2 配置nfs01客户端本地备份脚本nfs01客户端主机需要打包备份的内容配置备份nfs01服务器的脚本[rootnfs01 ~]# mkdir /backup [rootnfs01 ~]# mkdir -p /server/scripts [rootnfs01 ~]# vim /server/scripts/backup.sh配置客户端认证文件[rootnfs01 ~]# vim /etc/rsyncd.passwor [rootnfs01 ~]# chmod 600 /etc/rsyncd.password [rootnfs01 ~]# ls -ld /etc/rsyncd.password测试进行测试[rootnfs01 ~]# bash /server/scripts/backup.sh在backup服务器中可以看到推送的数据[rootbackup ~]# ls /backup/4 配置定时任务web01服务器编辑定时任务实现每天00:00定时备份本地数据并推送到Rsync服务器上4.1 安装检查crond[rootweb01 ~]# yum install crontabs[rootweb01 ~]# systemctl status crond4.2 编辑定时任务[rootweb01 ~]# crontab -e[rootnfs01 ~]# crontab -e4.3 backup服务器编写脚本实现删除180天前的所有备份数据但保存每周一的数据[rootbackup ~]# mkdir -p /server/scripts [rootbackup ~]# cd /server/scripts/ [rootbackup scripts]# vim /server/scripts/del_bak_data.sh[rootbackup scripts]# crontab -e5 数据传输完整性验证与监控告警5.1验证数据完整性利用MD5命令进行验证完成数据传输过程完整性验证。[rootbackup scripts]# vim send_mail.sh5.2配置邮件告警安装邮件服务[rootbackup scripts]# yum install mailx -y​配置邮箱ssl证书[rootbackup ~]# mkdir -p /root/.certs [rootbackup ~]# cd /root/.certs [rootbackup .certs]# echo -n | openssl s_client -connect smtp.qq.com:465 | sed -ne /-BEGIN CERTIFICATE-/,/-END CERTIFICATE-/p ~/.certs/qq.crt [rootbackup .certs]# certutil -A -n GeoTrust SSL CA -t C,, -d ~/.certs -i ~/.certs/qq.crt [rootbackup .certs]# certutil -A -n GeoTrust Global CA -t C,, -d ~/.certs -i ~/.certs/qq.crt [rootbackup .certs]# certutil -A -n GeoTrust SSL CA - G3 -t Pu,Pu,Pu -d ./ -i qq.crt5.3 配置邮件服务[rootbackup .certs]# vim /etc/mail.rc在末尾添加指令测试进行测试[rootbackup ~]# echo testmail | mail -s testmail 1736752274qq.com[rootbackup ~]# bash /server/scripts/send_mail.sh