温馨提示×

Jenkins在Linux如何备份数据

小樊
46
2025-11-22 13:36:34
栏目: 智能运维

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"

# 如需一致性,取消下一行注释
# sudo systemctl stop jenkins

rsync -a --delete \
  --exclude='workspace' \
  --exclude='jobs/*/builds/*/artifacts' \
  --exclude='cache' \
  --exclude='tools' \
  --exclude='logs' \
  "$JENKINS_HOME/" "$BACKUP_PATH/"

# 单独备份master.key(强烈建议与常规备份分离存放)
cp -p "$JENKINS_HOME/secrets/master.key" "$BACKUP_PATH/master.key"

# 如需一致性,取消下一行注释
# sudo systemctl start jenkins

# 保留最近7天
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**与常规备份混放或上传至不可信位置。

0