温馨提示×

Ubuntu系统如何备份Nginx配置

小樊
38
2025-11-15 11:03:30
栏目: 智能运维

Ubuntu 系统备份 Nginx 配置

一 关键目录与文件

  • 配置根目录:/etc/nginx
  • 主配置文件:/etc/nginx/nginx.conf
  • 站点配置:
    • 可用站点:/etc/nginx/sites-available/
    • 已启用站点:/etc/nginx/sites-enabled/
  • 其他常见配置:/etc/nginx/conf.d/*.conf
  • 日志目录:/var/log/nginx(备份时建议一并归档,便于排错与回滚)

二 手动备份步骤

  • 快速打包整个配置目录(推荐)
    • 命令:sudo tar -czf ~/nginx-conf-$(date +%F_%H-%M-%S).tar.gz -C /etc/nginx .
    • 说明:将**/etc/nginx**下所有文件打包,时间戳便于版本管理。
  • 仅复制关键文件与目录(更轻量)
    • 命令:sudo cp -a /etc/nginx/nginx.conf /etc/nginx/sites-available /etc/nginx/conf.d /var/log/nginx ~/nginx-conf-backup-$(date +%F)
    • 说明:使用**-a**保留权限、属主与时间戳;按需增减目录(如仅备份 sites-available)。
  • 备份后建议校验
    • 列出内容:tar -tzf ~/nginx-conf-*.tar.gz | head
    • 校验归档:tar -tzf ~/nginx-conf-*.tar.gz >/dev/null && echo "OK" || echo "FAIL"

三 自动化备份脚本

  • 示例脚本 backup_nginx.sh
    #!/usr/bin/env bash
    set -Eeuo pipefail
    
    BACKUP_DIR="${BACKUP_DIR:-/opt/backups/nginx}"
    DATE=$(date +%F_%H-%M-%S)
    KEEP_DAYS="${KEEP_DAYS:-7}"
    
    mkdir -p "$BACKUP_DIR"
    
    # 打包配置与日志
    tar -czf "$BACKUP_DIR/nginx-conf-$DATE.tar.gz" -C /etc/nginx .
    tar -czf "$BACKUP_DIR/nginx-logs-$DATE.tar.gz" -C /var/log/nginx .
    
    # 可选:同步到远端(示例:rsync 到备份服务器)
    # rsync -avz "$BACKUP_DIR/" user@backup.example.com:/backups/nginx/
    
    # 清理旧备份
    find "$BACKUP_DIR" -name 'nginx-*.tar.gz' -mtime +"$KEEP_DAYS" -delete
    
    echo "Nginx 配置与日志已备份至 $BACKUP_DIR (保留最近 $KEEP_DAYS 天)"
    
  • 使用与定时
    • 赋权:chmod +x backup_nginx.sh
    • 立即执行:./backup_nginx.sh
    • 定时任务(每天 02:30 执行):sudo crontab -e 添加
      • 30 2 * * * /path/to/backup_nginx.sh >> /var/log/nginx-backup.log 2>&1
  • 建议将脚本与备份目录加入版本控制或远端存储,避免单点故障。

四 恢复与验证

  • 恢复整个配置目录
    • 命令:sudo tar -xzf ~/nginx-conf-2025-08-30_10-00-00.tar.gz -C /
  • 仅恢复部分配置
    • 示例:sudo tar -xzf ~/nginx-conf-2025-08-30_10-00-00.tar.gz -C / etc/nginx/sites-available
  • 检查与生效
    • 语法检查:sudo nginx -t
    • 重载服务:sudo systemctl reload nginx
  • 回滚建议
    • 保留最近2–3个备份包;先备份当前配置,再执行恢复,出现问题可快速切回。

五 实践建议

  • 变更前先备份:修改或升级前执行一次完整备份,便于快速回滚。
  • 一并备份证书与密钥:若使用 HTTPS,将**/etc/letsencrypt/**或证书目录一并打包,避免证书丢失。
  • 异地与离线存储:定期将备份同步到远端服务器离线介质,提升可靠性。
  • 监控与演练:定期校验备份可用性与恢复流程,确保真实可用。

0