在 CentOS 上备份 Jenkins 配置的实用方案
一 核心备份范围与默认路径
- 备份的核心是 JENKINS_HOME(默认 /var/lib/jenkins),其中包含:
- 全局配置:config.xml
- 作业配置:jobs/ 下各作业的 config.xml
- 插件:plugins/(建议连同版本一起备份)
- 用户与权限:users/、secrets/(含 credentials.xml 等敏感文件)
- 可选:构建历史 jobs//builds/(体积大,可按需取舍)
- 系统级配置与日志(建议一并纳入):
- 服务配置:/etc/sysconfig/jenkins(RHEL/CentOS 常见)或 /etc/default/jenkins(Debian 系常见)
- 日志:/var/log/jenkins/jenkins.log
- 迁移/恢复时,优先保证 JENKINS_HOME 完整;若仅迁移配置,至少保留 config.xml、jobs、plugins、users、secrets 等关键目录与文件。
二 手动一次性备份步骤
- 确认 JENKINS_HOME(如非默认需替换路径):
- grep ^JENKINS_HOME /etc/sysconfig/jenkins 或 systemctl show jenkins | grep -i environment
- 停止服务(减少写入,保证一致性):
- sudo systemctl stop jenkins
- 打包备份(示例将日期写入文件名):
- 备份主目录:
- sudo tar -czvf /backup/jenkins_home_$(date +%F).tar.gz /var/lib/jenkins
- 备份系统配置与日志:
- sudo tar -czvf /backup/jenkins_config_$(date +%F).tar.gz /etc/sysconfig/jenkins /etc/default/jenkins /var/log/jenkins
- 启动服务:
- sudo systemctl start jenkins
- 校验:
- ls -lh /backup | tail -n 2
- 可选:tar -tzf /backup/jenkins_home_$(date +%F).tar.gz | head
- 说明:如系统使用 systemd,也可在备份脚本中使用 systemctl 管理服务;若以 root 运行脚本,sudo 可酌情省略。
三 自动化与增量备份
- 定时全量备份脚本(含保留策略示例 7 天):
- 创建脚本 /usr/local/bin/jenkins_backup.sh:
- #!/bin/bash
set -e
BACKUP_DIR=“/backup/jenkins”
JENKINS_HOME=“/var/lib/jenkins”
DATE=$(date +%F_%H%M%S)
mkdir -p “$BACKUP_DIR”
停止服务
systemctl stop jenkins || true
全量打包
tar -czvf “$BACKUP_DIR/jenkins_home_$DATE.tar.gz” -C “$JENKINS_HOME” .
可选:系统配置与日志
tar -czvf “$BACKUP_DIR/jenkins_config_$DATE.tar.gz” /etc/sysconfig/jenkins /etc/default/jenkins /var/log/jenkins 2>/dev/null || true
启动服务
systemctl start jenkins || true
清理 7 天前
find “$BACKUP_DIR” -name “jenkins_*.tar.gz” -mtime +7 -delete
echo “Backup finished: $DATE”
- 赋权与定时:
- chmod +x /usr/local/bin/jenkins_backup.sh
- crontab -e 添加:0 2 * * * /usr/local/bin/jenkins_backup.sh
- 增量备份思路(基于 tar 快照,每周日全量、其余增量):
- 原理:使用 tar 的 -g snapshot 生成/更新快照文件,周日删除快照并执行全量,其余天执行增量。
- 参考示例脚本结构(按周切换全量/增量、维护 snapshot 文件),适合对 /var/lib/jenkins 做周期性增量归档。
- 远程/异地备份(配合 rsync 或 scp):
- rsync -avz --delete /backup/jenkins/ user@backup-host:/data/jenkins/
- 或 scp /backup/jenkins_home_*.tar.gz user@backup-host:/data/backups/
- 建议将备份目录挂载到独立磁盘或网络存储,避免单点故障。
四 插件化与迁移恢复
- 使用 ThinBackup 插件(可视化与定时):
- 安装:Manage Jenkins → Plugins → 搜索并安装 ThinBackup
- 配置:Manage Jenkins → ThinBackup → 设置备份目录、计划任务(如每日/每周)、保留数量
- 使用:可手动触发备份;恢复时在同一页面选择备份点并执行恢复(适合快速回滚)
- 迁移到新服务器(最小化步骤):
- 在新机器安装同版本 Jenkins(或兼容版本)并首次启动一次以生成目录结构
- 停止新机器 Jenkins:systemctl stop jenkins
- 将旧机的 JENKINS_HOME 完整拷贝到新机相同路径(或按需修改 JENKINS_HOME 后启动)
- 如仅迁移配置,至少拷贝:config.xml、jobs、plugins、users、secrets(缺失插件会导致任务不可用)
- 启动新机 Jenkins:systemctl start jenkins,登录验证作业与插件是否正常
- 凭证与敏感信息:
- 备份 secrets/ 与 credentials.xml;注意其为加密存储,跨实例恢复需确保主密钥一致或使用 Jenkins 的凭证迁移流程。