Linux下Jenkins备份与恢复实操指南

一 核心要点与准备
二 手动备份步骤
grep -E '^JENKINS_HOME=' /etc/default/jenkins /etc/sysconfig/jenkins 2>/dev/null || echo $JENKINS_HOMEsudo systemctl stop jenkinssudo tar -czvf jenkins_backup_$(date +%F).tar.gz -C /var/lib/jenkins .sudo tar -czvf jenkins_cfg_$(date +%F).tar.gz /var/lib/jenkins/{config.xml,jobs,users,plugins,secrets}sudo tar -czvf jenkins_sys_$(date +%F).tar.gz /etc/default/jenkins /etc/sysconfig/jenkins /var/log/jenkinssudo systemctl start jenkinsscp jenkins_backup_*.tar.gz user@backup-server:/backup/jenkins/三 自动化备份脚本与定时任务
#!/usr/bin/env bashset -Eeuo pipefailJENKINS_HOME="/var/lib/jenkins"BACKUP_ROOT="/mnt/backups/jenkins"DATE=$(date +%Y%m%d_%H%M%S)KEEP_DAYS=7# 创建备份目录mkdir -p "$BACKUP_ROOT"# 使用rsync排除大目录,再打包(不停机,一致性略弱于停机备份)TMP_DIR="$BACKUP_ROOT/jenkins_$DATE"rsync -a --delete --exclude='workspace/**' --exclude='builds/**/artifacts/**' --exclude='nextBuildNumber' "$JENKINS_HOME/" "$TMP_DIR/"# 打包tar czf "$BACKUP_ROOT/jenkins_backup_$DATE.tar.gz" -C "$TMP_DIR" .rm -rf "$TMP_DIR"# 可选:拷贝到远程# rsync -av "$BACKUP_ROOT/jenkins_backup_$DATE.tar.gz" user@backup-server:/backup/jenkins/# 清理旧备份find "$BACKUP_ROOT" -name 'jenkins_backup_*.tar.gz' -mtime +$KEEP_DAYS -deleteecho "Backup finished: $BACKUP_ROOT/jenkins_backup_$DATE.tar.gz"0 2 * * * /usr/local/bin/jenkins_backup.sh >> /var/log/jenkins_backup.log 2>&1systemctl stop jenkins再备份,完成后systemctl start jenkins。四 使用插件备份 ThinBackup
五 恢复与迁移要点
systemctl stop jenkins,清空或移走现有目录,再用备份解压覆盖至**/var/lib/jenkins**(示例:tar xzf jenkins_backup_2025-09-01.tar.gz -C /var/lib/jenkins),然后systemctl start jenkins并登录验证配置、任务与插件。