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 bash
set -Eeuo pipefail
JENKINS_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 -delete
echo "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并登录验证配置、任务与插件。