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

打印 上一主题 下一主题

主题 1379|帖子 1379|积分 4137



任务清单

项目环境搭建



  • 可以使用iventoy网启安装3台centos7.9服务器
  • 管理员模式启动iventoy:



  • 【剩下两台机子以此类推】
  • 按照规划,最小化摆设体系,
  • 更换yum源:
  • 删除本来yum源:
    1. rm -rf yum.repos.d/
    复制代码

  • 创建新的:
    1. mkdir  /etc/yum.repos.d
    复制代码


  • 关闭防火墙

设置服务器名字:




  • 禁用SELinux

  • 确保可以大概联网。
  • 摆设静态IP:


安装所需软件:
  1. yum install vim  tree tar net-tools rsync nfs-utils -y
复制代码
  1. yum install epel-release -y
复制代码
摆设网站:
  1. yum install nginx -y
复制代码




  1. vim /etc/nginx/nginx.conf
复制代码

启动nginx:
  1. systemctl start nginx
复制代码
测试:

摆设nfs01:

安装须要软件:
  1. yum install vim  tree tar net-tools rsync -y
复制代码
  1. yum  install  rpcbind  -y
复制代码
  1. yum  install  nfs-utils  -y
复制代码


创建共享文件包:

  1. mkdir  /nfsfile
复制代码
测试:

  1. echo  "welcome to www.openlab.com" > /nfsfile/readme
复制代码




启动软件:
【牢记启动顺序不可乱】
回到web01:
创建当地挂载目录:
  1. mkdir  /web_nfs
复制代码
挂载:【堕落查看nfs的设定】
  1. mount -t nfs  192.168.12.201:/nfsfile  /web_nfs
复制代码
测试:
  1. cd  /web_nfs
复制代码

  1. mount
复制代码

或者:



backup摆设:

安装须要软件:
  1. yum install vim  tree tar net-tools rsync mailx -y
复制代码


修改rsync软件的配置:

  1. vim /etc/rsyncd.conf
复制代码
删掉原有,直接粘贴:

  1. uid = rsync                                                        # 用户
  2. gid = rsync                                                        # 组
  3. use chroot = no                                                # 程序安全设置
  4. max connections = 200                                # 客户端连接数
  5. timeout = 300                                                # 超时时间
  6. pid file = /var/run/rsyncd.pid                # 进程号文件位置
  7. lock file = /var/run/rsync.lock                # 进程锁
  8. log file = /var/log/rsyncd.log                # 日志文件
  9. fake super = yes                                         # 无需rsync以root身份运行,允许接受数据
  10. [backup]
  11.         path = /backup                                                # 目录
  12.         ignore errors                                                # 有错误时忽略
  13.         read only = false                                        # 可读可写
  14.         list = false                                    # 阻止远程列表
  15.         hosts allow = 192.168.88.0/24                # 允许IP
  16.         hosts deny = 0.0.0.0/32                                # 禁止IP
  17.         auth users = rsync                                        # 用于认证的账户
  18.         secrets file = /etc/rsync.password        # 存放用户和密码的文件
复制代码
我的:

  1. uid = rsync                                                     
  2. gid = rsync                                                     
  3. use chroot = no                                         
  4. max connections = 200                           
  5. timeout = 300                                          
  6. pid file = /var/run/rsyncd.pid         
  7. lock file = /var/run/rsync.lock         
  8. log file = /var/log/rsyncd.log          fake super = yes                                       
  9. [backup]
  10.         path = /backup                                          
  11.         ignore errors                                          
  12.         read only = false                                       
  13.         list = false                                
  14.         hosts allow = 192.168.12.0/24           
  15.         hosts deny = 0.0.0.0/32                        
  16.         auth users = rsync                              
  17.         secrets file = /etc/rsync.password
  18. ~                                             
复制代码
账户的新建和备份目录新建:

  1. useradd -M -s /sbin/nologin rsync
复制代码
  1. mkdir /backup
复制代码


递归:
  1. chown -R rsync /backup
复制代码
启动并开机启动:
  1. systemctl enable --now rsyncd
复制代码

检查:

密码配置:
建立密码文件:
  1. echo "rsync:rsync123" > /etc/rsync.password
复制代码

权限:
  1. chmod 600 /etc/rsync.password
复制代码

配置备份脚本

web01:
  1. rpm -q rsync
复制代码

  1. tree /www
复制代码

新建备份目录:
  1. mkdir  /backup
复制代码
新建备份脚本:
  1. mkdir -p  /server/scripts
复制代码
  1. vim  /server/scripts/backup.sh
复制代码
  1. #!/bin/bash
  2. # Date:2025-2-19
  3. # Author:Andy
  4. # Mail:andy@126.com
  5. # Function: Regularly backup data from web servers
  6. # Version: V1.0
  7. Date=$(date +%F_Week0%w)          # 定义时间方式  
  8. Host_IP=$(ifconfig ens32 | awk '/inet / {print $2}')  # 获取IP,注意网卡名
  9. Backup_Dir="/backup/"             # 本地备份路径
  10. Backup_Server_IP=192.168.12.202   # 备份服务器的IP
  11. # 创建指定目录和IP的目录
  12. [ ! -d $Backup_Dir/$Host_IP ] && mkdir -p $Backup_Dir/$Host_IP
  13. # 输出提示信息
  14. echo ${Date} ${Host_IP} start backup ......
  15. Date=$(date +%F_Week0%w)          # 定义时间方式  
  16. Host_IP=$(ifconfig ens32 | awk '/inet / {print $2}')  # 获取IP,注意网卡名
  17. Backup_Dir="/backup/"             # 本地备份路径
  18. Backup_Server_IP=192.168.12.202   # 备份服务器的IP
  19. # 创建指定目录和IP的目录
  20. [ ! -d $Backup_Dir/$Host_IP ] && mkdir -p $Backup_Dir/$Host_IP
  21. # 输出提示信息
  22. echo ${Date} ${Host_IP} start backup ......
  23. # 把备份推送到备份服务器
  24. rsync -az $Backup_Dir rsync@${Backup_Server_IP}::backup --password-file=/etc/rsync.password
  25. # 删除7天以前的所有本地备份数据
  26. find ${Backup_Dir:-/tmp} -type f -name "*.tar.gz" -a -name "*flag*" -mtime +7|xargs rm -f
  27. echo "Local backup successful, the backup files have been pushed to the backup server"
  28. [root@web01 ~]# vim  /server/scripts/backup.sh
  29. [root@web01 ~]# cat  /server/scripts/backup.sh
  30. #!/bin/bash
  31. # Date:2025-4-11
  32. # Author:Andy
  33. # Mail:andy@126.com
  34. # Function: Regularly backup data from web servers
  35. # Version: V1.0
  36. Date=$(date +%F_Week0%w)          # 定义时间方式  
  37. Host_IP=$(ifconfig ens32 | awk '/inet / {print $2}')  # 获取IP,注意网卡名
  38. Backup_Dir="/backup/"             # 本地备份路径
  39. Backup_Server_IP=192.168.12.202   # 备份服务器的IP
  40. # 创建指定目录和IP的目录
  41. [ ! -d $Backup_Dir/$Host_IP ] && mkdir -p $Backup_Dir/$Host_IP
  42. # 输出提示信息
  43. echo ${Date} ${Host_IP} start backup ......
  44. Date=$(date +%F_Week0%w)          # 定义时间方式  
  45. Host_IP=$(ifconfig ens32 | awk '/inet / {print $2}')  # 获取IP,注意网卡名
  46. Backup_Dir="/backup/"             # 本地备份路径
  47. Backup_Server_IP=192.168.12.202   # 备份服务器的IP
  48. # 创建指定目录和IP的目录
  49. [ ! -d $Backup_Dir/$Host_IP ] && mkdir -p $Backup_Dir/$Host_IP
  50. # 输出提示信息
  51. echo ${Date} ${Host_IP} start backup ......
  52. # 把备份推送到备份服务器
  53. rsync -az $Backup_Dir rsync@${Backup_Server_IP}::backup --password-file=/etc/rsync.password
  54. # 删除7天以前的所有本地备份数据
  55. find ${Backup_Dir:-/tmp} -type f -name "*.tar.gz" -a -name "*flag*" -mtime +7|xargs rm -f
  56. echo "Local backup successful, the backup files have been pushed to the backup server"
复制代码
客户端建立认证的文件密码如下:
  1. vim /etc/rsync.password  
复制代码

权限:
  1. chmod 600 /etc/rsync.password
复制代码
测试:

  1. bash  /server/scripts/backup.sh
复制代码

backup:

nfs01同上
设置定时任务:
web01下载软件:
  1. yum  install  crontabs
复制代码
查看crontabs的状态:【一样平常体系中会自带】

设置定时任务:
web01:
编辑crontab文档:

nfs01:
同上:

backup:
同上:

邮件设置backup:
创建目录:
  1. mkdir  /backup
复制代码
  1. mkdir -p  /server/scripts
复制代码



  • 强制创建多级目录,忽略已存在的情况
  • 这是脚本和一样平常操纵中的最佳实践,能有效避免路径缺失导致的错误。

进入设置文档:
  1. vim  /server/scripts/backup.sh
复制代码
  1. #!/bin/bash
  2. # Date:2025-4-12
  3. # Author:Andy
  4. # Mail:andy@126.com
  5. # Function: Verify the integrity of backup files
  6. # Version: V1.0
  7. Date=$(date +%F_Week0%w)
  8. Backup_Dir="/backup/"
  9. Check_Log="/tmp/bak.log_$(date +%F)"   
  10. Admin_Mail=2701964360@qq.com   
  11. find $Backup_Dir -type f -name "${Date}.flag"|xargs md5sum -c >> $Check_Log
  12. if [ -n "cat $Check_Log" ]
  13. then
  14.     mail -s "$Date backup data info" $Admin_Mail < $Check_Log
  15. else
  16.     echo "$Date backup data error,pls check it." > $Check_Log   
  17.     mail -s "$Date backup data info" $Admin_Mail < $Check_Log
  18. fi
  19. cp $Check_Log{,.ori} && > $Check_Log
复制代码
配置邮件告警功能:
backup安装发邮件的软件:
  1. yum  install  mailx  -y
复制代码
backup配置QQ邮箱ssl证书:
  1. mkdir -p /root/.certs
复制代码
  1. cd  /root/.certs
复制代码
  1. echo -n | openssl s_client -connect smtp.qq.com:465 | sed -ne '/-BEGIN CERTIFICATE-/,/-END CERTIFICATE-/p' > ~/.certs/qq.crt
  2. certutil -A -n "GeoTrust SSL CA" -t "C,," -d ~/.certs -i ~/.certs/qq.crt
  3. certutil -A -n "GeoTrust Global CA" -t "C,," -d ~/.certs -i ~/.certs/qq.crt
  4. 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.】

配置邮件文件:
  1. vim  /etc/mail.rc
复制代码
修改文档:
  1. set from=      @qq.com
  2. set smtp=smtps://smtp.qq.com:465         # ssl端口默认465
  3. set smtp-auth-user=       @qq.com
  4. set smtp-auth-password=             # 授权码
  5. set smtp-auth=login
  6. set nss-config-dir=/root/.certs/     # 设置证书路径
  7. set ssl-verify=ignore                # 启用加密ssl传输in
复制代码

授权码:
QQ的授权码申请:
登录QQ邮箱--->打开设置--->进入账号与安全--->选择安全设置----如图选择生成授权码:

backup测试邮件:
  1. echo  "testmail"  |  mail  -s  "testmail"       @qq.com
复制代码

测试成功:

backup发送邮件:
  1. bash /server/scripts/send_mail.sh
复制代码
如图所示,则项目成功:

易堕落点:
Web01的备份数据没有备份成功,在backup和web01中的存储备份的文件中没有应出现的数据
如图所示:



办理方案:
发现备份脚本有重复信息,删除备份脚本内容,重新输入并启动。备份文件中出现内容,备份成功。





免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!更多信息从访问主页:qidao123.com:ToB企服之家,中国第一个企服评测及商务社交产业平台。

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有账号?立即注册

x
回复

使用道具 举报

0 个回复

倒序浏览

快速回复

您需要登录后才可以回帖 登录 or 立即注册

本版积分规则

小小小幸运

论坛元老
这个人很懒什么都没写!
快速回复 返回顶部 返回列表