CentOS 上 Jenkins 的备份与恢复方法
一 核心要点与准备
二 备份方法
手动全量备份(停机一致性)
sudo systemctl stop jenkinssudo tar czvf jenkins_backup_$(date +%F_%H%M%S).tgz -C /var/lib/jenkins . --exclude='workspace' --exclude='jobs/*/builds/*/artifacts'/etc/sysconfig/jenkins 或 /etc/default/jenkinssudo systemctl start jenkins自动定时备份(脚本 + Cron)
#!/usr/bin/env bash
set -e
JENKINS_HOME="/var/lib/jenkins"
BACKUP_ROOT="/opt/backups/jenkins"
DATE=$(date +%F_%H%M%S)
mkdir -p "$BACKUP_ROOT"
# 停止服务
sudo systemctl stop jenkins
# 打包主目录(排除大体积与可重建数据)
tar czvf "$BACKUP_ROOT/jenkins_home_$DATE.tgz" -C "$JENKINS_HOME" . \
--exclude='workspace' \
--exclude='jobs/*/workspace' \
--exclude='jobs/*/builds/*/artifacts' \
--exclude='jobs/*/builds/*/log'
# 可选:单独归档配置与日志
tar czvf "$BACKUP_ROOT/jenkins_config_$DATE.tgz" -C /etc sysconfig/jenkins default/jenkins 2>/dev/null || true
tar czvf "$BACKUP_ROOT/jenkins_logs_$DATE.tgz" -C /var/log jenkins
# 启动服务
sudo systemctl start jenkins
# 清理 7 天前备份
find "$BACKUP_ROOT" -name 'jenkins_*.tgz' -mtime +7 -delete
0 2 * * * /opt/backups/jenkins/backup.sh >> /var/log/jenkins_backup.log 2>&1crontab -e 编辑并确认:crontab -l。脚本需具备可执行权限:chmod +x backup.sh。使用插件备份(ThinBackup)
0 2 * * *(每天 2 点)0 1 * * 0(每周日 1 点全备)**/workspace/**, **/jobs/*/builds/*/artifacts/**远程与离线存储
~/.ssh/authorized_keys,之后可用 rsync -a --delete /opt/backups/jenkins/ backup@192.0.2.10:/backups/jenkins/ 或 scp 自动传输。lftp,脚本中使用 mirror -R $SOURCE_DIR $FTP_TARGET_DIR 将备份目录推送到 Windows FileZilla Server 或其他 FTP 服务。三 恢复方法
手动恢复(停机)
sudo systemctl stop jenkinsmv /var/lib/jenkins /var/lib/jenkins.bak_$(date +%F_%H%M%S)sudo mkdir -p /var/lib/jenkins && sudo tar xzvf jenkins_backup_YYYY-MM-DD_HHMMSS.tgz -C /var/lib/jenkins/etc/sysconfig/jenkins 或 /etc/default/jenkinssudo systemctl start jenkins使用 ThinBackup 恢复
迁移到新机器或更改 JENKINS_HOME
/etc/profile 或 systemd 环境文件,加入 export JENKINS_HOME=/opt/jenkins_home,执行 source /etc/profilecatalina.sh 中导出 JENKINS_HOME四 验证与运维建议