温馨提示×

Linux中Jenkins如何备份

小樊
45
2025-12-20 04:07:08
栏目: 智能运维

Linux下Jenkins备份与恢复实操指南

一 核心要点与准备

  • 备份的核心是JENKINS_HOME目录,几乎所有配置、任务、插件与构建元数据都在此处;Linux默认路径通常为**/var/lib/jenkins**。可在Jenkins管理界面:系统管理 → 系统信息查看实际路径。为降低体积,可按需排除workspacebuilds等目录(注意这会影响构建历史与产物恢复)。备份频率建议:开发环境每周一次完整备份;测试环境每日增量、每周完整;生产环境每日多次增量、每日完整。

二 手动备份步骤

  • 确认JENKINS_HOME:在Jenkins管理界面查看或使用命令:grep -E '^JENKINS_HOME=' /etc/default/jenkins /etc/sysconfig/jenkins 2>/dev/null || echo $JENKINS_HOME
  • 停止服务(强烈建议,保证一致性):sudo systemctl stop jenkins
  • 打包主目录(示例):sudo tar -czvf jenkins_backup_$(date +%F).tar.gz -C /var/lib/jenkins .
  • 仅备份关键配置与元数据(体积更小):sudo tar -czvf jenkins_cfg_$(date +%F).tar.gz /var/lib/jenkins/{config.xml,jobs,users,plugins,secrets}
  • 备份系统级配置与日志(可选):sudo tar -czvf jenkins_sys_$(date +%F).tar.gz /etc/default/jenkins /etc/sysconfig/jenkins /var/log/jenkins
  • 启动服务:sudo systemctl start jenkins
  • 传输到远程存储(示例):scp jenkins_backup_*.tar.gz user@backup-server:/backup/jenkins/
  • 权限与安全:确保备份文件权限为600/640,并妥善保护包含凭据的secrets/master.key文件。

三 自动化备份脚本与定时任务

  • 示例脚本(支持排除大目录、保留最近N份、异地拷贝):
#!/usr/bin/env bash
set -Eeuo pipefail

JENKINS_HOME="/var/lib/jenkins"
BACKUP_ROOT="/mnt/backups/jenkins"
DATE=$(date +%Y%m%d_%H%M%S)
KEEP_DAYS=7

# 创建备份目录
mkdir -p "$BACKUP_ROOT"

# 使用rsync排除大目录,再打包(不停机,一致性略弱于停机备份)
TMP_DIR="$BACKUP_ROOT/jenkins_$DATE"
rsync -a --delete \
  --exclude='workspace/**' \
  --exclude='builds/**/artifacts/**' \
  --exclude='nextBuildNumber' \
  "$JENKINS_HOME/" "$TMP_DIR/"

# 打包
tar czf "$BACKUP_ROOT/jenkins_backup_$DATE.tar.gz" -C "$TMP_DIR" .
rm -rf "$TMP_DIR"

# 可选:拷贝到远程
# rsync -av "$BACKUP_ROOT/jenkins_backup_$DATE.tar.gz" user@backup-server:/backup/jenkins/

# 清理旧备份
find "$BACKUP_ROOT" -name 'jenkins_backup_*.tar.gz' -mtime +$KEEP_DAYS -delete

echo "Backup finished: $BACKUP_ROOT/jenkins_backup_$DATE.tar.gz"
  • 定时任务(每天02:00执行):0 2 * * * /usr/local/bin/jenkins_backup.sh >> /var/log/jenkins_backup.log 2>&1
  • 如需更强一致性,可在脚本中先systemctl stop jenkins再备份,完成后systemctl start jenkins

四 使用插件备份 ThinBackup

  • 安装:进入Manage Jenkins → Manage Plugins,搜索并安装ThinBackup Plugin,重启Jenkins。
  • 配置:进入Manage Jenkins → ThinBackup → Settings,设置备份目录(如**/mnt/backups/jenkins**)、备份计划(如0 2 * * )、是否备份构建结果与用户内容、以及排除路径(如/workspace//builds//artifacts/*)。
  • 执行与恢复:点击Backup Now立即备份;恢复时在同一页面选择备份集并执行Restore,随后重启Jenkins并验证。

五 恢复与迁移要点

  • 恢复步骤
    • 准备相同版本的Jenkins实例(迁移时尤为关键)。
    • 恢复JENKINS_HOME:先停服务systemctl stop jenkins,清空或移走现有目录,再用备份解压覆盖至**/var/lib/jenkins**(示例:tar xzf jenkins_backup_2025-09-01.tar.gz -C /var/lib/jenkins),然后systemctl start jenkins并登录验证配置、任务与插件。
  • 迁移要点
    • 在新机器安装同版本Jenkins,恢复JENKINS_HOME后启动;如路径不同,确保目录权限正确(Jenkins运行用户可读写)。
    • 若使用外部凭据或安全存储,确认secrets/master.key已正确恢复;必要时在恢复后更新插件以适配新环境。
  • 验证清单
    • 登录管理界面检查:系统配置、全局工具、插件版本、任务配置与构建历史(若备份包含)。
    • 抽样执行构建与流水线,确认工作空间与SCM拉取正常。

0