温馨提示×

centos jenkins部署的备份与恢复方法

小樊
35
2025-12-25 14:08:41
栏目: 智能运维

CentOS 上 Jenkins 的备份与恢复方法

一 核心要点与准备

  • 备份的核心是 JENKINS_HOME 目录,默认位于 /var/lib/jenkins。该目录包含:jobs/plugins/users/config.xmlsecrets/ 等关键数据。可在 Jenkins 管理界面:系统管理 → 系统信息 查看实际路径。为减少体积与提升一致性,常见做法是备份时排除 workspace/ 与部分构建产物(如 builds/ 下的 artifacts/),这些可在恢复后按需重建。备份频率建议:开发环境每周一次全备;测试环境每日增量、每周全备;生产环境每日多次增量、每日全备。

二 备份方法

  • 手动全量备份(停机一致性)

    1. 停止服务:sudo systemctl stop jenkins
    2. 打包主目录(示例排除 workspace 与部分产物):
      sudo tar czvf jenkins_backup_$(date +%F_%H%M%S).tgz -C /var/lib/jenkins . --exclude='workspace' --exclude='jobs/*/builds/*/artifacts'
    3. 备份关键配置文件(系统级):/etc/sysconfig/jenkins/etc/default/jenkins
    4. 启动服务:sudo systemctl start jenkins
    5. 将备份文件迁移到安全位置(如独立磁盘或远程存储)。
  • 自动定时备份(脚本 + Cron)

    • 示例脚本(保留最近 7 天,含配置与日志归档):
      #!/usr/bin/env bash
      set -e
      JENKINS_HOME="/var/lib/jenkins"
      BACKUP_ROOT="/opt/backups/jenkins"
      DATE=$(date +%F_%H%M%S)
      mkdir -p "$BACKUP_ROOT"
      
      # 停止服务
      sudo systemctl stop jenkins
      
      # 打包主目录(排除大体积与可重建数据)
      tar czvf "$BACKUP_ROOT/jenkins_home_$DATE.tgz" -C "$JENKINS_HOME" . \
        --exclude='workspace' \
        --exclude='jobs/*/workspace' \
        --exclude='jobs/*/builds/*/artifacts' \
        --exclude='jobs/*/builds/*/log'
      
      # 可选:单独归档配置与日志
      tar czvf "$BACKUP_ROOT/jenkins_config_$DATE.tgz" -C /etc sysconfig/jenkins default/jenkins 2>/dev/null || true
      tar czvf "$BACKUP_ROOT/jenkins_logs_$DATE.tgz"  -C /var/log jenkins
      
      # 启动服务
      sudo systemctl start jenkins
      
      # 清理 7 天前备份
      find "$BACKUP_ROOT" -name 'jenkins_*.tgz' -mtime +7 -delete
      
    • 加入定时任务(每天 02:00 执行):
      0 2 * * * /opt/backups/jenkins/backup.sh >> /var/log/jenkins_backup.log 2>&1
      使用 crontab -e 编辑并确认:crontab -l。脚本需具备可执行权限:chmod +x backup.sh
  • 使用插件备份(ThinBackup)

    • 安装:管理界面 Manage Jenkins → Manage Plugins 搜索并安装 ThinBackup,重启。
    • 配置:Manage Jenkins → ThinBackup → Settings
      • Backup directory:如 /backups/jenkins
      • Backup schedule:如 0 2 * * *(每天 2 点)
      • Full backup schedule:如 0 1 * * 0(每周日 1 点全备)
      • Files excluded from backup:如 **/workspace/**, **/jobs/*/builds/*/artifacts/**
      • Max number of backup sets:如 10
    • 使用:可立即 Backup Now,恢复时 Manage Jenkins → ThinBackup → Restore 选择备份集执行。
  • 远程与离线存储

    • 远程备份(SSH 免密 + rsync/scp):在备份服务器生成密钥对,将公钥追加到备份目标服务器的 ~/.ssh/authorized_keys,之后可用 rsync -a --delete /opt/backups/jenkins/ backup@192.0.2.10:/backups/jenkins/scp 自动传输。
    • 传输到 FTP(可选):CentOS 安装 lftp,脚本中使用 mirror -R $SOURCE_DIR $FTP_TARGET_DIR 将备份目录推送到 Windows FileZilla Server 或其他 FTP 服务。

三 恢复方法

  • 手动恢复(停机)

    1. 停止服务:sudo systemctl stop jenkins
    2. 备份当前目录(可选):mv /var/lib/jenkins /var/lib/jenkins.bak_$(date +%F_%H%M%S)
    3. 解压备份到目标主目录:
      sudo mkdir -p /var/lib/jenkins && sudo tar xzvf jenkins_backup_YYYY-MM-DD_HHMMSS.tgz -C /var/lib/jenkins
    4. 如曾改动系统级配置,恢复 /etc/sysconfig/jenkins/etc/default/jenkins
    5. 启动服务:sudo systemctl start jenkins
    6. 登录 Web 界面验证 系统配置插件任务 是否正常。
  • 使用 ThinBackup 恢复

    • 管理界面 Manage Jenkins → ThinBackup → Restore,选择需要的备份集,按提示执行恢复,完成后重启 Jenkins 并校验。
  • 迁移到新机器或更改 JENKINS_HOME

    • 在新机器安装同版本 Jenkins,确认 JENKINS_HOME(默认 /var/lib/jenkins)。如需变更,设置环境变量:
      • 方式一:编辑 /etc/profile 或 systemd 环境文件,加入 export JENKINS_HOME=/opt/jenkins_home,执行 source /etc/profile
      • 方式二:若以 Tomcat 运行,可在 catalina.sh 中导出 JENKINS_HOME
    • 将备份解压到新的 JENKINS_HOME,启动服务并校验。

四 验证与运维建议

  • 定期验证:抽样解压备份检查关键文件(如 config.xmljobs/ 配置);在预备环境演练恢复流程;核对备份数量与保留策略是否生效。
  • 版本兼容:恢复时尽量保持 Jenkins 版本一致;跨大版本恢复前建议先测试,避免插件/配置不兼容。
  • 安全与合规:限制备份目录与日志权限;对含凭据的 secrets/master.key 妥善保护;远程传输使用 SSHFTPS,避免明文协议。

0