Jenkins在Linux的备份与恢复指南
一 核心要点与准备
- 确认Jenkins主目录:多数发行版默认在**/var/lib/jenkins**,也可在Web界面查看:Manage Jenkins > System > System Configuration 中的“Home directory”。同时记录系统级配置位置:/etc/default/jenkins(Debian/Ubuntu)或**/etc/sysconfig/jenkins**(CentOS/RHEL)。备份时建议同时保存这两处配置。为减少体积,通常只备份关键数据与配置,构建工作空间与产物可按需排除。
- 备份策略建议:关键数据包括**$JENKINS_HOME/config.xml**、jobs/、users/、plugins/、secrets/;可排除workspace/、builds/ 下的artifacts/、cache/、tools/、logs/ 等。安全方面,master.key 必须单独、离线、严格保护;secrets/ 中的加密内容在恢复时依赖该密钥,切勿与常规备份混放或泄露。
二 手动备份步骤
- 停止服务(强烈建议,保证一致性):sudo systemctl stop jenkins
- 打包主目录(示例):sudo tar -czvf jenkins_backup_$(date +%F).tar.gz -C /var/lib/jenkins .
- 仅备份关键子集(更轻量):tar -czvf jenkins_cfg_$(date +%F).tar.gz
/var/lib/jenkins/config.xml
/var/lib/jenkins/jobs
/var/lib/jenkins/users
/var/lib/jenkins/plugins
/var/lib/jenkins/secrets
- 备份系统配置:tar -czvf jenkins_syscfg_$(date +%F).tar.gz
/etc/default/jenkins /etc/sysconfig/jenkins 2>/dev/null || true
- 启动服务:sudo systemctl start jenkins
- 传输到远程存储(示例):scp jenkins_backup_*.tar.gz user@backup-host:/backup/jenkins/
- 验证:检查归档内容、大小与权限,确保可解压与可读。
三 自动备份脚本与定时任务
- 示例脚本(支持排除大目录,适合在线备份;如需强一致可先停服务)
#!/usr/bin/env bash
set -Eeuo pipefail
JENKINS_HOME="/var/lib/jenkins"
BACKUP_DIR="/mnt/backups/jenkins"
TIMESTAMP=$(date +%Y%m%d_%H%M%S)
BACKUP_PATH="$BACKUP_DIR/jenkins_$TIMESTAMP"
mkdir -p "$BACKUP_PATH"
rsync -a --delete \
--exclude='workspace' \
--exclude='jobs/*/builds/*/artifacts' \
--exclude='cache' \
--exclude='tools' \
--exclude='logs' \
"$JENKINS_HOME/" "$BACKUP_PATH/"
cp -p "$JENKINS_HOME/secrets/master.key" "$BACKUP_PATH/master.key"
find "$BACKUP_DIR" -maxdepth 1 -type d -mtime +7 -delete
- 定时任务(每天02:00执行):
- 赋予执行权限:chmod +x /opt/scripts/jenkins_backup.sh
- 编辑:sudo crontab -e
- 添加:0 2 * * * /opt/scripts/jenkins_backup.sh >> /var/log/jenkins_backup.log 2>&1
- 说明:使用rsync可增量同步并高效排除目录;如需“时间点一致性”,在脚本中停启Jenkins。
四 使用插件进行备份
- ThinBackup Plugin:在Manage Jenkins > Plugins中安装,进入Manage Jenkins > ThinBackup Settings配置备份目录、计划(全量/差异)、保留策略与触发方式;支持界面化“Backup Now”与“Restore”。适合不想写脚本、希望可视化与定时备份的团队。
五 恢复与迁移步骤
- 准备环境:在新机器安装与备份时相同版本的Jenkins;如条件允许,先停服务。
- 恢复主目录(示例):
- 全新恢复:tar -xzvf jenkins_backup_YYYY-MM-DD.tar.gz -C /var/lib/jenkins
- 覆盖恢复:先备份当前目录,再解压覆盖
- 恢复系统配置:tar -xzvf jenkins_syscfg_YYYY-MM-DD.tar.gz -C /
- 权限修复(重要):chown -R jenkins:jenkins /var/lib/jenkins
- 启动服务:sudo systemctl start jenkins
- 验证:登录Web界面,检查系统配置、插件、任务、用户与凭据是否恢复;如使用了外部存储的artifacts,按需恢复或重新归档。
- 安全提醒:将master.key单独恢复到**$JENKINS_HOME/secrets/,再启动服务;切勿把master.key**与常规备份混放或上传至不可信位置。