温馨提示×

Ubuntu Jenkins如何进行备份与恢复

小樊
37
2025-12-20 09:57:20
栏目: 智能运维

Ubuntu 上 Jenkins 的备份与恢复

一 核心原则与准备

  • 备份的核心是 JENKINS_HOME,默认位于 /var/lib/jenkins,其中包含:config.xml、jobs、plugins、workspace、builds、users 等关键数据。若使用外部存储(如数据库、外部凭证库),需同步纳入备份范围。为降低风险,建议在备份前短暂停止 Jenkins 服务以避免写入冲突。迁移或跨主机恢复时,注意 JENKINS_HOME 路径一致或做好路径适配,并修正 jenkinsUrl 等配置。

二 手动备份与自动化

  • 手动全量备份(推荐先停服务)
    1. 停止服务:sudo systemctl stop jenkins
    2. 打包主目录:sudo tar -czvf jenkins_backup_$(date +%F).tar.gz -C /var/lib/jenkins .
    3. 重启服务:sudo systemctl start jenkins
  • 常用排除项(可按需增减)
    • 构建产物与日志:--exclude jobs/*/builds --exclude jobs/*/workspace --exclude logs
    • 大文件或易变目录:--exclude cache --exclude tmp
  • 自动化备份脚本示例
    • 脚本:/opt/backup/jenkins_backup.sh
      #!/usr/bin/env bash
      set -e
      BACKUP_DIR="/opt/backups/jenkins"
      JENKINS_HOME="/var/lib/jenkins"
      TIMESTAMP=$(date +%F_%H-%M-%S)
      mkdir -p "$BACKUP_DIR"
      sudo tar -czvf "$BACKUP_DIR/jenkins_$TIMESTAMP.tar.gz" \
        -C "$JENKINS_HOME" \
        --exclude='jobs/*/builds' \
        --exclude='jobs/*/workspace' \
        --exclude='logs' \
        --exclude='cache' \
        --exclude='tmp' \
        .
      
    • 定时任务(每天 02:00):0 2 * * * /opt/backup/jenkins_backup.sh >> /var/log/jenkins_backup.log 2>&1
  • 权限与保留
    • 备份文件属主建议设为 jenkins:jenkins 或备份专用账号,保留策略可用 find $BACKUP_DIR -mtime +30 -delete 清理 30 天前归档。

三 使用插件进行备份 ThinBackup

  • 安装:进入 系统管理 → 插件管理 → 可选插件,搜索并安装 ThinBackup
  • 配置:进入 系统管理 → ThinBackup,设置备份目录(如 /opt/jenkins_backups)、备份频率、保留数量、要忽略的路径等。
  • 执行与恢复:点击 Backup Now 立即备份;恢复时在同一页面选择备份时间点,点击 Restore 完成回滚。跨主机恢复时,确保目标机器的 备份目录路径 与插件配置一致。

四 恢复步骤与迁移要点

  • 标准恢复(同机同路径)
    1. 停止服务:sudo systemctl stop jenkins
    2. 备份当前目录:sudo mv /var/lib/jenkins /var/lib/jenkins.bak_$(date +%F)
    3. 解压备份:sudo tar -xzvf /opt/backups/jenkins_YYYY-MM-DD_HH-MM-SS.tar.gz -C /
    4. 修复权限:sudo chown -R jenkins:jenkins /var/lib/jenkins
    5. 启动服务:sudo systemctl start jenkins
  • 迁移到新机器或新路径
    • 保持 JENKINS_HOME 一致;如路径变更,需在 /etc/default/jenkins/lib/systemd/system/jenkins.service.d/override.conf 中调整 JENKINS_HOME,并修正 $JENKINS_HOME/config.xml 中的
    • 若使用 HTTPS,迁移 keystore 并在启动参数中指定信任库(示例:JAVA_ARGS="-Djavax.net.ssl.trustStore=$JENKINS_HOME/jenkins_keystore.jks")。
    • 恢复后检查 /var/log/jenkins/jenkins.log 是否有插件兼容性告警或启动错误。

五 验证与最佳实践

  • 备份有效性验证
    • 定期在测试环境执行恢复演练;核对关键对象:作业配置、插件列表、构建历史、用户与凭证、系统配置
    • 使用清单对比:ls $JENKINS_HOME/plugins/ | awk -F'.' '{print $1}' > plugins.list 恢复后再次导出并 diff 校验。
  • 高可用与灾难恢复
    • 采用 3-2-1 策略:至少保留 3 份备份、存放在 2 种不同介质、其中 1 份异地/离线;对备份文件做 校验和定期恢复演练
    • 若使用外部 数据库 或对象存储,务必纳入备份与恢复流程,并在恢复后验证连通性与数据一致性。

0