温馨提示×

centos apache备份方法是什么

小樊
42
2026-01-10 07:18:06
栏目: 智能运维

CentOS 上备份 Apache 的实用方法

一 备份范围与关键路径

  • 配置文件:主配置 /etc/httpd/conf/httpd.conf;虚拟主机与附加配置 /etc/httpd/conf.d/*.conf;若使用 SSL/TLS,一并备份证书与密钥(常见在 /etc/pki/tls/ 或站点配置中指定的目录)。
  • 网站内容:DocumentRoot,常见为 /var/www/html,如自建站点请替换为你的实际目录。
  • 日志文件:访问与错误日志 /var/log/httpd/(可按需备份,避免占用过大空间)。
  • 数据库:如网站使用 MySQL/MariaDBPostgreSQL,需单独备份数据库(与 Apache 分开管理)。

二 手动备份步骤

  • 备份配置
    • 打包主配置与虚拟主机配置:
      sudo tar -czvf /backup/apache-conf_$(date +%F).tar.gz -C /etc/httpd conf conf.d
    • 或单文件拷贝备份(便于快速回滚):
      sudo cp /etc/httpd/conf/httpd.conf /etc/httpd/conf/httpd.conf.bak
      sudo cp /etc/httpd/conf.d/*.conf /backup/conf.d_$(date +%F)/
  • 备份网站内容
    • 打包站点目录(将 /var/www/html 替换为你的 DocumentRoot):
      sudo tar -czvf /backup/apache-html_$(date +%F).tar.gz -C /var/www/html .
  • 备份日志(可选)
    • 打包日志目录:
      sudo tar -czvf /backup/apache-logs_$(date +%F).tar.gz -C /var/log httpd
  • 备份数据库(如适用)
    • MySQL/MariaDB:
      mysqldump -u root -p --single-transaction --routines --triggers --databases your_db > /backup/db_$(date +%F).sql
    • PostgreSQL:
      pg_dumpall -U postgres > /backup/pg_all_$(date +%F).sql
  • 说明
    • 以上命令中的 $(date +%F) 生成 YYYY-MM-DD 时间戳,便于版本管理;如你的系统使用 MariaDB,命令与 MySQL 相同。

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

  • 示例脚本(/usr/local/bin/backup_apache.sh):
    • 功能:打包配置、站点、日志;可选 rsync 到远端;记录日志;按保留天数清理旧备份。
    • 使用前请先创建本地备份目录(如 /backup/apache),并确保有写入权限。
#!/bin/bash
# 配置
BACKUP_BASE="/backup/apache"
DATE=$(date +%F)
KEEP_DAYS=7

# 创建当日备份目录
mkdir -p "$BACKUP_BASE/$DATE"

# 1) 备份配置
tar -czf "$BACKUP_BASE/$DATE/conf_$DATE.tar.gz" -C /etc/httpd conf conf.d 2>/dev/null

# 2) 备份网站内容(按需修改 DocumentRoot)
DOCROOT="/var/www/html"
[ -d "$DOCROOT" ] && tar -czf "$BACKUP_BASE/$DATE/html_$DATE.tar.gz" -C "$DOCROOT" . 2>/dev/null

# 3) 备份日志(可选)
[ -d /var/log/httpd ] && tar -czf "$BACKUP_BASE/$DATE/logs_$DATE.tar.gz" -C /var/log httpd 2>/dev/null

# 4) 可选:rsync 到远端(按需启用)
# RSYNC_USER="backup"
# RSYNC_HOST="192.0.2.10"
# RSYNC_DIR="/data/backup/apache"
# rsync -avz --delete -e ssh "$BACKUP_BASE/$DATE/" "$RSYNC_USER@$RSYNC_HOST:$RSYNC_DIR/$DATE/"

# 5) 日志
echo "[$DATE] Apache backup completed." >> "$BACKUP_BASE/backup.log"

# 6) 清理旧备份
find "$BACKUP_BASE" -maxdepth 1 -type d -mtime +$KEEP_DAYS -exec rm -rf {} \;
  • 赋予执行权限并测试
    • chmod +x /usr/local/bin/backup_apache.sh
    • /usr/local/bin/backup_apache.sh
  • 添加定时任务(每天 02:00 执行)
    • crontab -e
    • 0 2 * * * /usr/local/bin/backup_apache.sh
  • 如需邮件通知,可在脚本末尾加入(需系统已配置邮件发送能力):
    • echo “Apache backup completed at $(date)” | mailx -s “Apache Backup OK” admin@example.com

四 恢复步骤

  • 恢复配置
    • 单文件回滚:
      sudo cp /backup/conf.d_YYYY-MM-DD/httpd.conf.bak /etc/httpd/conf/httpd.conf
      或解压配置包:
      sudo tar -xzvf /backup/apache-conf_YYYY-MM-DD.tar.gz -C /etc/httpd
  • 恢复网站内容
    • 解压覆盖站点目录(请先做好当前站点备份):
      sudo tar -xzvf /backup/apache-html_YYYY-MM-DD.tar.gz -C /var/www/html
  • 恢复日志(可选)
    • sudo tar -xzvf /backup/apache-logs_YYYY-MM-DD.tar.gz -C /var/log
  • 使配置生效
    • 检查语法并重启:
      sudo httpd -t && sudo systemctl restart httpd
  • 恢复数据库(如适用)
    • MySQL/MariaDB:mysql -u root -p < /backup/db_YYYY-MM-DD.sql
    • PostgreSQL:psql -U postgres -f /backup/pg_all_YYYY-MM-DD.sql

五 最佳实践与注意事项

  • 分层与保留:本地“热”备份保留近 3 天,归档“冷”备份保留近 30 天;为备份文件名加入 时间戳,便于追溯。
  • 监控与告警:监控备份目录容量,若连续 3 天无增长触发告警;在对象存储侧配置 生命周期规则 自动清理过期备份。
  • 版本控制:用 Git 管理配置文件目录(如 /etc/httpd/conf.d),每次变更提交并注释说明。
  • 安全与传输:证书与密钥权限设为 600;远端同步优先使用 SSH;备份完成后执行 httpd -t 校验配置,再重启服务。
  • 空间与性能:日志文件可能很大,可按需归档或排除;数据库使用 –single-transaction 减少锁影响。

0