18.8.2 备份与恢复策略(配置、作业、插件、密钥)

备份与恢复策略(配置、作业、插件、密钥)#

导语
本节聚焦 Jenkins 备份与恢复策略,覆盖配置、作业、插件、密钥,提供可执行命令、插件安装示例、排错与演练练习。

原理草图:备份链路与恢复依赖

文章图片

1. 备份范围与优先级(含命令解释)
- 核心配置与作业:
- JENKINS_HOME/config.xml:全局配置
- JENKINS_HOME/jobs/:作业与流水线配置
- 插件与依赖:
- JENKINS_HOME/plugins/:插件文件与依赖
- 密钥与凭据:
- JENKINS_HOME/credentials.xml
- JENKINS_HOME/secrets/JENKINS_HOME/secret.key
- 构建产物与缓存(按需):
- builds/workspace/(容量大,优先级低)

2. 备份实现方式(文件级备份示例)
示例:使用 rsync + tar + cron 做每日增量、每周全量

# 变量定义
JENKINS_HOME=/var/lib/jenkins
BK_DIR=/data/jenkins-backup
DATE=$(date +%F)
FULL_DAY=Sun

# 进入安静模式(避免配置变化)
curl -X POST http://127.0.0.1:8080/quietDown

# 全量备份(周日)
if [ "$(date +%a)" = "$FULL_DAY" ]; then
  tar -czf ${BK_DIR}/jenkins-full-${DATE}.tar.gz \
    ${JENKINS_HOME}/config.xml \
    ${JENKINS_HOME}/jobs \
    ${JENKINS_HOME}/plugins \
    ${JENKINS_HOME}/credentials.xml \
    ${JENKINS_HOME}/secrets \
    ${JENKINS_HOME}/secret.key
else
  # 增量备份(其余天)
  rsync -av --delete \
    ${JENKINS_HOME}/config.xml \
    ${JENKINS_HOME}/jobs \
    ${JENKINS_HOME}/plugins \
    ${JENKINS_HOME}/credentials.xml \
    ${JENKINS_HOME}/secrets \
    ${JENKINS_HOME}/secret.key \
    ${BK_DIR}/jenkins-inc/
fi

# 退出安静模式
curl -X POST http://127.0.0.1:8080/cancelQuietDown

命令说明
- quietDown:停止新构建进入,确保配置一致性
- tar -czf:打包压缩全量
- rsync -av --delete:增量同步并清理多余文件

3. 插件备份与安装示例(ThinBackup)
安装 ThinBackup(GUI)
- 管理 Jenkins → 插件管理 → 可选插件 → 搜索 ThinBackup → 安装

配置备份路径与计划任务示例(系统管理 → ThinBackup)

Backup directory: /data/jenkins-thinbackup
Backup schedule: H 2 * * *
Include plugins: YES
Include build results: NO

4. 密钥与凭据备份示例(加密)
使用 GPG 对密钥备份文件加密

# 打包密钥与凭据
tar -czf /data/jenkins-secrets-${DATE}.tar.gz \
  /var/lib/jenkins/credentials.xml \
  /var/lib/jenkins/secrets \
  /var/lib/jenkins/secret.key

# GPG 对称加密
gpg --symmetric --cipher-algo AES256 \
  /data/jenkins-secrets-${DATE}.tar.gz

预期效果
- 输出 /data/jenkins-secrets-YYYY-MM-DD.tar.gz.gpg,需口令解密

5. 恢复流程(全量恢复示例)

# 1) 停止 Jenkins
systemctl stop jenkins

# 2) 备份当前 JENKINS_HOME(防止误操作)
mv /var/lib/jenkins /var/lib/jenkins.bak

# 3) 解压恢复
mkdir -p /var/lib/jenkins
tar -xzf /data/jenkins-full-2024-01-01.tar.gz -C /

# 4) 恢复权限
chown -R jenkins:jenkins /var/lib/jenkins

# 5) 启动 Jenkins
systemctl start jenkins

验证点
- http://<host>:8080 登录正常
- 作业、节点、凭据可用
- 关键流水线可构建

6. 一致性与停机窗口建议
- 在线备份时需:进入安静模式 → 停止新任务 → 备份 → 恢复
- 如果 workspace/ 特别大:仅对关键任务做单独备份

7. 常见故障排查(含命令)
- 启动失败(插件不兼容)
```bash
# 查看日志定位插件
tail -n 200 /var/log/jenkins/jenkins.log

# 临时禁用插件
mv /var/lib/jenkins/plugins/xxx.jpi /var/lib/jenkins/plugins/xxx.jpi.disabled
systemctl restart jenkins
- **凭据失效**(secret.key 不匹配) - 确认 `credentials.xml`、`secrets/`、`secret.key` 同时恢复 - **权限问题**bash
chown -R jenkins:jenkins /var/lib/jenkins
```

8. 练习题(可操作)
1. 用 rsync 实现 Jenkins 每日增量备份,并验证文件一致性。
2. 模拟插件不兼容启动失败,使用日志定位并禁用插件。
3. 在测试环境完成一次完整恢复并记录 RTO。

9. 备份策略推荐清单
- 3-2-1 备份策略
- 配置/作业/凭据必备份
- 插件清单纳入版本控制
- 至少季度恢复演练