CentOS 上备份与恢复 Jenkins 配置的实用指南
一 核心要点与准备
- 所有配置与数据都在 $JENKINS_HOME,常见路径为 /var/lib/jenkins。可在 Jenkins 管理界面:系统管理 → 系统信息 查看实际路径。备份范围以配置为主,建议包含:config.xml、jobs、users、plugins、secrets;可排除:workspace、builds 的产物、cache、tools、logs 等以减小体积。为提高一致性,备份时建议停止 Jenkins 服务。备份频率建议:开发环境每周一次完整备份;测试环境每日增量、每周完整;生产环境每日多次增量、每日完整。
二 方法一 手动备份与恢复(简单可靠)
- 备份步骤
- 确认主目录:grep -E ‘^JENKINS_HOME=’ /etc/sysconfig/jenkins 或 在 Web 界面查看。
- 停止服务:sudo systemctl stop jenkins
- 打包关键数据:
sudo tar czf /mnt/backups/jenkins_$(date +%F).tar.gz -C $JENKINS_HOME config.xml jobs users plugins secrets
- 启动服务:sudo systemctl start jenkins
- 可选:保留策略(示例保留 7 天)
find /mnt/backups -name “jenkins_*.tar.gz” -mtime +7 -delete
- 恢复步骤
- 停止服务:sudo systemctl stop jenkins
- 备份当前目录(回滚用):sudo cp -a $JENKINS_HOME $JENKINS_HOME.bak.$(date +%F)
- 清空并恢复:
sudo rm -rf $JENKINS_HOME/{config.xml,jobs,users,plugins,secrets}
sudo tar xzf /mnt/backups/jenkins_YYYY-MM-DD.tar.gz -C $JENKINS_HOME
- 权限修正:sudo chown -R jenkins:jenkins $JENKINS_HOME
- 启动服务:sudo systemctl start jenkins
- 登录 Web 验证任务、用户、插件是否正常。
三 方法二 使用 ThinBackup 插件(可视化与定时)
- 安装与配置
- 管理界面:Manage Jenkins → Manage Plugins 搜索并安装 ThinBackup。
- 进入:Manage Jenkins → ThinBackup → Settings
- Backup directory:如 /mnt/backups/jenkins
- Backup schedule:如 **0 2 * * ***(每日 2:00)
- Files excluded from backup:如 ****/workspace/, /builds//artifacts/
- 按需勾选:Backup build results、Backup user content、Backup additional files
- Full backup schedule:如 0 1 * * 0(每周日 1:00 完整备份)
- Max number of backup sets:如 10
- 备份与恢复
- 备份:在 ThinBackup 页面点击 Backup Now 或等待计划任务。
- 恢复:在 ThinBackup 页面选择备份点执行 Restore(注意恢复前建议停止 Jenkins)。
四 安全与迁移注意事项
- 密钥与凭据
- master.key 用于加密 secrets/ 中的凭据,切勿放入常规备份或公开存储;应与备份分开、以最高级别保护。常规备份可包含 secrets/ 目录的其他内容,但恢复时必须确保 master.key 可用且匹配,否则已加密凭据将无法解密。
- 权限与所有权
- 恢复后执行:sudo chown -R jenkins:jenkins $JENKINS_HOME;敏感文件如 secrets/ 建议 600,config.xml 建议 644。
- 迁移到新服务器
- 在新机器安装同版本(或兼容版本)Jenkins,先停止服务,将备份解压到目标 $JENKINS_HOME,修正权限后启动;如插件版本不一致,先在 Web 端插件管理按需安装/升级,再重启验证。
五 自动化与异地备份示例
- 定时任务(crontab)
- 示例(每日 1:00 执行,日志追加到 /var/log/jenkins_backup.log):
0 1 * * * /opt/scripts/jenkins_backup.sh >> /var/log/jenkins_backup.log 2>&1
- 远程备份到 FTP(lftp)
- 安装:sudo yum install -y lftp
- 脚本要点:
lftp -u $FTP_USER,$FTP_PASS $FTP_HOST <<EOF
set ftp:ssl-allow no
mirror -R $SOURCE_DIR $FTP_TARGET_DIR
quit
EOF
- 定时:0 2 * * * /opt/scripts/jenkins_ftp_backup.sh
- 常见问题:脚本换行符需为 LF(可用 dos2unix 修正);FTP 端口 21 与防火墙策略需放行。