温馨提示×

Ubuntu Jenkins部署的备份与恢复

小樊
43
2025-12-30 03:31:56
栏目: 智能运维

Ubuntu 上 Jenkins 的备份与恢复

一 备份策略与范围

  • 核心数据目录:Jenkins 主目录默认在 /var/lib/jenkins,其中包含 config.xml、jobs、users、plugins 等关键内容;必要时可连同 /var/log/jenkins(日志)与 /var/cache/jenkins(插件缓存)一并备份。若通过包安装,建议同时备份 /etc/default/jenkins(环境变量与启动参数)以及 /usr/share/jenkins(WAR 包)。如使用外部数据库(如 MySQL),需单独对数据库进行导出备份。为减少不一致,建议在备份前先停止服务:sudo systemctl stop jenkins

二 手动备份步骤

  • 停止服务:sudo systemctl stop jenkins
  • 打包主目录(推荐整目录备份):sudo tar -czvf jenkins_backup_$(date +%Y%m%d_%H%M%S).tar.gz -C /var/lib/jenkins .
  • 仅打包关键配置与作业(可选):sudo tar -czvf jenkins_cfg_$(date +%Y%m%d).tar.gz /var/lib/jenkins/config.xml /var/lib/jenkins/jobs /var/lib/jenkins/users /var/lib/jenkins/plugins
  • 将备份文件拷贝到安全位置(如外置盘、NFS、对象存储),并定期做异地/离线留存与校验(如 sha256sum)。

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

  • 示例脚本 backup_jenkins.sh(保留最近 7 天):
#!/usr/bin/env bash
set -e
BACKUP_DIR="/backups/jenkins"
JENKINS_HOME="/var/lib/jenkins"
TIMESTAMP=$(date +%Y%m%d_%H%M%S)
mkdir -p "$BACKUP_DIR"
tar -czvf "${BACKUP_DIR}/jenkins_backup_${TIMESTAMP}.tar.gz" -C "$JENKINS_HOME" .
# 清理 7 天前
find "$BACKUP_DIR" -name 'jenkins_backup_*.tar.gz' -mtime +7 -delete
  • 赋权与定时(每天 02:00 执行):chmod +x backup_jenkins.sh;在 root 或 jenkins 用户的 crontab 中添加:0 2 * * * /path/to/backup_jenkins.sh
  • 如需备份脚本自身与 WAR 包,可在脚本中追加相应 cp 命令与保留策略。

四 使用插件进行备份 ThinBackup

  • 安装:进入 Manage Jenkins → Manage Plugins 搜索并安装 ThinBackup
  • 配置:在 Manage Jenkins → ThinBackup Settings 中设置备份目录、计划(Cron)、保留策略与排除项。
  • 执行与恢复:可点击 Backup Now 立即备份;恢复时在同一页面选择备份点并执行 Restore,完成后重启 Jenkins:sudo systemctl restart jenkins

五 恢复与迁移步骤

  • 准备:在新/原机器安装相同版本的 JavaJenkins,并停止服务:sudo systemctl stop jenkins
  • 恢复主目录:
    • 整目录覆盖:sudo tar -xzvf jenkins_backup_YYYYMMDD_HHMMSS.tar.gz -C /
    • 仅关键文件:按备份内容解压到 /var/lib/jenkins 对应路径
  • 权限修复:sudo chown -R jenkins:jenkins /var/lib/jenkins;必要时修正日志与脚本权限
  • 配置调整(迁移场景):
    • 更新 /var/lib/jenkins/config.xml 中的 为新地址
    • 迁移 SSH 密钥(如 Git):将旧 ~/.ssh/id_rsa* 复制到 /var/lib/jenkins/.ssh 并修正属主
    • 如启用 HTTPS,迁移 keystore 并在 /etc/default/jenkins 中设置 JAVA_ARGS 指向新证书
  • 启动与验证:sudo systemctl start jenkins;查看日志:sudo tail -f /var/log/jenkins/jenkins.log;登录 Web 检查作业、插件、凭证与构建历史;必要时执行插件兼容性处理(如启用未来插件模式)。

0