备份范围与准备
sudo mkdir -p /backup/httpdsystemctl status httpd(应为 active (running))。手动备份步骤
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/tlssudo tar -czvf /backup/httpd/www_backup_$(date +%F).tar.gz /var/www/htmlsudo tar -czvf /backup/httpd/logs_backup_$(date +%F).tar.gz /var/log/httpdsudo mysqldump -u root -p --all-databases > /backup/httpd/mysql_backup_$(date +%F).sqlsudo -u postgres pg_dumpall > /backup/httpd/pg_backup_$(date +%F).sqltar -tzvf /backup/httpd/conf_backup_$(date +%F).tar.gz | head。自动化备份脚本与定时任务
#!/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.shsudo crontab -e0 2 * * * /usr/local/bin/backup_httpd.sh >> /var/log/httpd_backup.log 2>&1scp "$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/
恢复步骤
sudo cp -a /etc/httpd /etc/httpd.bak_$(date +%F)(如涉及网站文件,也先备份当前站点)。sudo systemctl stop httpdsudo 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 configtestsudo systemctl start httpd注意事项与最佳实践