温馨提示×

CentOS系统中Jenkins如何备份与恢复

小樊
45
2025-12-27 12:51:37
栏目: 智能运维

CentOS 上 Jenkins 的备份与恢复

一 核心要点与准备

  • 备份的核心是 JENKINS_HOME 目录,Linux 默认路径为 /var/lib/jenkins。该目录包含:config.xml(全局配置)、jobs/(任务配置与构建元数据)、plugins/(插件)、users/(用户与权限)、以及各任务的 builds/workspace/ 等。可在 Jenkins 管理界面:系统管理 → 系统信息 查看实际的 JENKINS_HOME 路径。为减少不一致风险,生产环境建议在备份时短暂停止 Jenkins(或使用文件系统快照)。

二 手动备份与恢复步骤

  • 备份
    1. 停止服务:sudo systemctl stop jenkins
    2. 打包主目录(推荐整目录备份,避免遗漏):
      sudo tar -czvf jenkins_backup_$(date +%Y%m%d_%H%M%S).tar.gz -C /var/lib/jenkins .
    3. 如需单独备份关键子目录/文件,可额外归档:
      sudo tar -czvf jenkins_plugins_$(date +%F).tar.gz /var/lib/jenkins/plugins
      sudo tar -czvf jenkins_jobs_$(date +%F).tar.gz /var/lib/jenkins/jobs
    4. 启动服务:sudo systemctl start jenkins
    5. 将备份文件拷贝到安全位置(如异地存储/对象存储)。
  • 恢复
    1. 准备目标环境(全新或同版本 Jenkins),建议先停止服务:sudo systemctl stop jenkins
    2. 清空或备份现有数据目录(谨慎操作):sudo rm -rf /var/lib/jenkins/*
    3. 解压备份到主目录:
      sudo tar -xzvf jenkins_backup_YYYYMMDD_HHMMSS.tar.gz -C /var/lib/jenkins
    4. 启动服务:sudo systemctl start jenkins
    5. 登录 Web 界面验证:系统配置、插件、任务、构建历史 是否完整恢复。

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

  • 安装与配置
    1. 在 Jenkins:系统管理 → 管理插件 搜索并安装 ThinBackup
    2. 进入 系统管理 → ThinBackup → Settings,配置:
      • Backup directory:如 /opt/backups/jenkins
      • Backup schedule:如 0 2 * * *(每天 02:00 执行)
      • 选项:Backup build results(是否备份构建结果)、Backup user contentFiles excluded from backup(如 **/workspace/**, **/builds/**/artifacts/**)、Max number of backup sets(保留份数)
    3. 可立即执行 Backup Now 进行手动备份。
  • 恢复
    1. ThinBackup → Restore 选择需要的备份点(如 FULL-2025-03-01_02-00-00)。
    2. 按提示执行恢复,完成后重启 Jenkins:sudo systemctl restart jenkins
    3. 登录界面核对配置与任务是否恢复。

四 自动化与远程备份脚本示例

  • 本地定时备份脚本(保留 7 天)
    #!/bin/bash
    JENKINS_HOME="/var/lib/jenkins"
    BACKUP_DIR="/opt/backups/jenkins"
    DATE=$(date +%Y%m%d_%H%M%S)
    mkdir -p "$BACKUP_DIR"
    
    # 为一致性,先停服务(可选)
    sudo systemctl stop jenkins
    
    tar -czvf "$BACKUP_DIR/jenkins_$DATE.tar.gz" -C "$JENKINS_HOME" .
    
    sudo systemctl start jenkins
    
    # 清理 7 天前备份
    find "$BACKUP_DIR" -name "jenkins_*.tar.gz" -mtime +7 -delete
    
    加入定时任务(每天 02:00):
    0 2 * * * /opt/backups/jenkins/backup.sh >> /var/log/jenkins_backup.log 2>&1
  • 远程备份(免密 SSH 到备份机)
    1. 在备份源生成密钥并分发公钥到备份机(实现 scp/rsync 免密):
      ssh-keygen -t rsa
      ssh-copy-id root@<备份机IP>
    2. 在源机执行远程拷贝(示例):
      rsync -av --delete -e ssh /opt/backups/jenkins/ root@<备份机IP>:/opt/backups/jenkins/
    3. 在备份机设置定时清理旧备份(如保留 30 天)。

五 恢复验证与注意事项

  • 恢复后必做验证
    • 登录 Jenkins 检查:全局配置插件列表任务配置构建历史 是否完整。
    • 抽查关键任务的 工作空间构建日志 是否可用。
    • 如启用安全域/代理,验证 凭据节点 状态。
  • 注意事项
    • 为减少不一致,备份时建议短暂停止 Jenkins;若不能停机,可考虑 文件系统快照(如 LVM/ZFS)以获得一致性点。
    • 跨大版本恢复时,先确认 Jenkins 版本兼容;必要时先安装对应版本的 插件
    • 备份保留策略建议:开发环境每周一次完整备份;测试环境每日增量、每周完整;生产环境每日多次增量、每日完整,并定期做恢复演练
    • 若使用外部 数据库(少数场景),需单独备份数据库并在恢复时按序恢复。

0