温馨提示×

Ubuntu Jenkins如何进行数据备份与恢复

小樊
41
2025-12-08 13:03:49
栏目: 智能运维

Ubuntu 上 Jenkins 数据备份与恢复

一 关键目录与环境要点

  • JENKINS_HOME:默认位于 /var/lib/jenkins,包含 jobs/plugins/secrets/config.xml 等核心数据。
  • 系统配置:Ubuntu/Debian 使用 /etc/default/jenkins(如 JENKINS_HOME、端口等)。
  • 日志/var/log/jenkins/jenkins.log
  • 建议备份时优先关注:主目录全量、系统配置、日志;构建工作空间 workspace/ 通常可重建,可按需排除以减小体积。

二 手动备份与定时备份

  • 手动全量备份(推荐先停服务以减少不一致)
    1. 停止服务:sudo systemctl stop jenkins
    2. 打包主目录(含时间戳):
      sudo tar -czvf jenkins_backup_$(date +%F).tar.gz -C /var/lib/jenkins .
    3. 重启服务:sudo systemctl start jenkins
  • 排除大目录示例(如工作空间、日志):
    sudo tar -czvf jenkins_backup_$(date +%F).tar.gz -C /var/lib/jenkins --exclude=workspace --exclude=logs .
  • 定时备份(cron)示例(每天 02:00 执行):
    1. 创建脚本 /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=workspace --exclude=logs .
      
    2. 赋权并加入 cron:
      sudo chmod +x /opt/backup/jenkins_backup.sh
      echo "0 2 * * * /opt/backup/jenkins_backup.sh" | sudo tee /etc/cron.d/jenkins-backup
  • 备份范围建议:至少包含 $JENKINS_HOME;如需迁移/完整恢复,可同时备份 /etc/default/jenkins/var/log/jenkins

三 使用插件进行备份与恢复

  • 安装 ThinBackup:进入 Manage Jenkins > Manage Plugins > 可选插件,搜索并安装 ThinBackup
  • 配置与备份:进入 Manage Jenkins > ThinBackup > Settings,设置备份目录与频率;点击 Backup Now 立即备份。
  • 恢复:在 ThinBackup 页面选择备份时间点,点击 Restore 完成恢复(适合快速回滚配置/作业)。

四 恢复步骤与迁移场景

  • 同机恢复(基于手动备份)
    1. 停止服务:sudo systemctl stop jenkins
    2. 备份当前目录(可选):sudo mv /var/lib/jenkins /var/lib/jenkins.bak_$(date +%F)
    3. 解压恢复:sudo tar -xzvf jenkins_backup_YYYY-MM-DD.tar.gz -C /
    4. 修复权限:sudo chown -R jenkins:jenkins /var/lib/jenkins
    5. 启动服务:sudo systemctl start jenkins
  • 跨机迁移/版本一致
    1. 在新机器安装与旧机一致的 JavaJenkins 版本(版本不一致可能导致插件/配置不兼容)。
    2. 按“同机恢复”步骤恢复 $JENKINS_HOME;如迁移系统配置,一并恢复 /etc/default/jenkins
    3. 启动后访问 http://新IP:8080 验证作业、插件与凭证。
  • 变更与兼容性处理
    • Jenkins URL 变更,编辑 $JENKINS_HOME/config.xml 中的 <jenkinsUrl>
    • 如使用 HTTPS,迁移证书(如 jenkins_keystore.jks)并在 /etc/default/jenkins 中设置:
      JAVA_ARGS="-Djavax.net.ssl.trustStore=$JENKINS_HOME/jenkins_keystore.jks"
    • 插件兼容性:必要时使用 java -jar /usr/share/jenkins/jenkins.war --enable-future-plugins 进行兼容性处理(视版本而定)。

五 验证与最佳实践

  • 备份有效性验证:定期执行恢复演练;核对关键项(作业配置、已装插件、凭据、系统设置)。
  • 权限与路径:恢复后确保 /var/lib/jenkins 属主为 jenkins:jenkins,避免因权限导致启动失败。
  • 版本控制思路:可将 $JENKINS_HOME 下的 .xml 配置纳入 Git 管理,实现配置即代码与审计(工作空间与构建产物通常不纳入)。
  • 监控与容量:监控 磁盘空间备份频率,保留多份历史与异地/离线副本,完善灾难恢复预案。

0