Apache2在CentOS上的备份方法
导读:备份范围与准备 在 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/MariaDB 或 PostgreSQL,需单独备份数据库。
- 准备备份目录并确认权限:
- 创建目录:
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.dsudo 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
- MySQL/MariaDB:
- 验证归档完整性(示例):
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 /
- 配置与 SSL:
- 配置校验与服务启动:
- 语法检查:
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
