首页主机资讯Apache2在CentOS上的备份方法

Apache2在CentOS上的备份方法

时间2025-11-26 16:36:03发布访客分类主机资讯浏览1259
导读:备份范围与准备 在 CentOS 上,Apache 服务名为 httpd。建议完整备份以下目录与数据: 配置文件:/etc/httpd/conf/、/etc/httpd/conf.d/(虚拟主机)、以及 /etc/pki/tls/(SS...

备份范围与准备

  • 在 CentOS 上,Apache 服务名为 httpd。建议完整备份以下目录与数据:
    • 配置文件:/etc/httpd/conf//etc/httpd/conf.d/(虚拟主机)、以及 /etc/pki/tls/(SSL 证书与密钥)。
    • 网站文件:默认 /var/www/html/,如自定义了 DocumentRoot,以其为准。
    • 日志文件:/var/log/httpd/(可选,便于审计与排错)。
    • 数据库:如网站使用 MySQL/MariaDBPostgreSQL,需单独备份数据库。
  • 准备备份目录并确认权限:
    • 创建目录:sudo mkdir -p /backup/httpd
    • 确认服务名:systemctl status httpd(应为 active (running))。

手动备份步骤

  • 备份配置文件与 SSL:
    • sudo tar -czvf /backup/httpd/conf_backup_$(date +%F).tar.gz /etc/httpd/conf /etc/httpd/conf.d
    • sudo tar -czvf /backup/httpd/ssl_backup_$(date +%F).tar.gz /etc/pki/tls
  • 备份网站文件(按实际 DocumentRoot 调整):
    • sudo tar -czvf /backup/httpd/www_backup_$(date +%F).tar.gz /var/www/html
  • 备份日志(可选):
    • sudo tar -czvf /backup/httpd/logs_backup_$(date +%F).tar.gz /var/log/httpd
  • 备份数据库(如适用):
    • MySQL/MariaDB:sudo mysqldump -u root -p --all-databases > /backup/httpd/mysql_backup_$(date +%F).sql
    • PostgreSQL:sudo -u postgres pg_dumpall > /backup/httpd/pg_backup_$(date +%F).sql
  • 验证归档完整性(示例):
    • tar -tzvf /backup/httpd/conf_backup_$(date +%F).tar.gz | head

自动化备份脚本与定时任务

  • 备份脚本示例(/usr/local/bin/backup_httpd.sh):
    • 说明:包含配置、网站、日志与数据库备份;自动创建目录;保留最近 7 天 归档;输出日志。
    • 内容:
      #!/bin/bash
      BACKUP_DIR="/backup/httpd"
      DATE=$(date +%Y%m%d%H%M%S)
      mkdir -p "$BACKUP_DIR"
      
      # 配置与 SSL
      tar -czf "$BACKUP_DIR/conf_backup_$DATE.tar.gz" /etc/httpd/conf /etc/httpd/conf.d /etc/pki/tls 2>
          /dev/null
      
      # 网站文件(按实际 DocumentRoot 调整)
      tar -czf "$BACKUP_DIR/www_backup_$DATE.tar.gz" /var/www/html 2>
          /dev/null
      
      # 日志(可选)
      tar -czf "$BACKUP_DIR/logs_backup_$DATE.tar.gz" /var/log/httpd 2>
          /dev/null
      
      # 数据库(按需启用其一或全选)
      # mysqldump -u root -p --all-databases >
           "$BACKUP_DIR/mysql_backup_$DATE.sql" 2>
          /dev/null
      # sudo -u postgres pg_dumpall >
           "$BACKUP_DIR/pg_backup_$DATE.sql" 2>
          /dev/null
      
      # 保留最近 7 天
      find "$BACKUP_DIR" -type f -name "*.tar.gz" -mtime +7 -delete
      find "$BACKUP_DIR" -type f -name "*.sql" -mtime +7 -delete
      
      echo "Apache backup completed at $(date)" >
          >
           /var/log/httpd_backup.log
      
    • 赋权:sudo chmod +x /usr/local/bin/backup_httpd.sh
  • 定时任务(每天 02:00 执行):
    • sudo crontab -e
    • 添加:0 2 * * * /usr/local/bin/backup_httpd.sh > > /var/log/httpd_backup.log 2> & 1
  • 远程备份(可选,使用 SCP 推送到远程主机):
    • 在脚本末尾追加(按需启用):
      scp "$BACKUP_DIR/conf_backup_$DATE.tar.gz" user@remote:/backup/
      scp "$BACKUP_DIR/www_backup_$DATE.tar.gz" user@remote:/backup/
      scp "$BACKUP_DIR/mysql_backup_$DATE.sql" user@remote:/backup/
      
    • 需提前配置 SSH 免密登录 或在脚本中安全处理凭据。

恢复步骤

  • 准备与校验:
    • 建议先备份当前状态:sudo cp -a /etc/httpd /etc/httpd.bak_$(date +%F)(如涉及网站文件,也先备份当前站点)。
    • 如条件允许,先停止服务:sudo systemctl stop httpd
  • 恢复文件:
    • 配置与 SSL:
      • sudo tar -xzvf /backup/httpd/conf_backup_*.tar.gz -C /
      • sudo tar -xzvf /backup/httpd/ssl_backup_*.tar.gz -C /
    • 网站文件:
      • sudo tar -xzvf /backup/httpd/www_backup_*.tar.gz -C /
    • 日志(可选):
      • sudo tar -xzvf /backup/httpd/logs_backup_*.tar.gz -C /
  • 配置校验与服务启动:
    • 语法检查:sudo apachectl configtest
    • 启动服务:sudo systemctl start httpd
    • 访问站点或检查端口 80/443 确认恢复成功。

注意事项与最佳实践

  • 目录一致性:确认 DocumentRoot 与虚拟主机配置路径,避免漏备或错备。
  • 权限与安全:证书与密钥(如 /etc/pki/tls)属敏感文件,备份与传输需加密,存储权限设为 600/700
  • 版本与变更管理:每次变更配置或上线前先做一次备份,归档文件名包含 时间戳,便于回滚。
  • 异地与多副本:至少保留一份 异地/离线 副本;定期在测试环境演练恢复流程。
  • 监控与告警:为备份脚本添加日志与返回码检查,必要时接入监控告警。

声明:本文内容由网友自发贡献,本站不承担相应法律责任。对本内容有异议或投诉,请联系2913721942#qq.com核实处理,我们将尽快回复您,谢谢合作!


若转载请注明出处: Apache2在CentOS上的备份方法
本文地址: https://pptw.com/jishu/756826.html
CentOS中Apache2虚拟主机怎么搭建 CentOS Apache如何优化MySQL性能

游客 回复需填写必要信息