首页主机资讯Linux下Jenkins如何备份

Linux下Jenkins如何备份

时间2025-12-04 19:08:03发布访客分类主机资讯浏览655
导读:Linux下Jenkins备份与恢复指南 一 核心要点与准备 备份的核心是JENKINS_HOME目录,几乎所有配置、作业、插件、用户等数据都在其中;因此无论是手动打包还是插件备份,实质都是围绕该目录进行。若使用外部配置(如系统级配置文件...

Linux下Jenkins备份与恢复指南

一 核心要点与准备

  • 备份的核心是JENKINS_HOME目录,几乎所有配置、作业、插件、用户等数据都在其中;因此无论是手动打包还是插件备份,实质都是围绕该目录进行。若使用外部配置(如系统级配置文件、日志、war包),也建议一并纳入备份范围。为降低体积,可在备份时排除builds、modules、nextBuildNumber等大目录(迁移/恢复时按需处理)。为减少不一致,建议在备份窗口内短暂停止Jenkins服务或使用文件系统快照/暂停写入的方式。

二 手动备份步骤

  • 确认主目录位置:
    • 管理界面:系统管理 → 系统配置 查看“主目录”
    • 服务器上常见路径:/var/lib/jenkins
    • 也可通过系统文件查看:如 /etc/sysconfig/jenkins(RHEL/CentOS)或 /etc/default/jenkins(Debian/Ubuntu)
  • 停止服务(可选但更一致):
    • systemd:sudo systemctl stop jenkins
  • 打包主目录(示例):
    • sudo tar -czvf jenkins_backup_$(date +%F).tar.gz /var/lib/jenkins
  • 仅备份关键配置与作业(体积更小):
    • tar -czvf jenkins_cfg_$(date +%F).tar.gz /var/lib/jenkins/{ config.xml,jobs,users,plugins}
  • 备份系统级配置与日志(可选):
    • 配置:sudo tar -czvf jenkins_syscfg_$(date +%F).tar.gz /etc/sysconfig/jenkins /etc/default/jenkins
    • 日志:sudo tar -czvf jenkins_logs_$(date +%F).tar.gz /var/log/jenkins
  • 启动服务(若已停止):
    • sudo systemctl start jenkins
  • 将备份文件迁移到安全位置(如对象存储、NFS、异地主机),并校验完整性(如tar -tzf 列表核验)。

三 自动定时备份脚本

  • 目标:每日2:00自动备份,保留7天,排除大目录,压缩归档,记录日志。
  • 示例脚本(/opt/backup/jenkins_backup.sh):
#!/usr/bin/env bash
set -Eeuo pipefail

JENKINS_HOME="/var/lib/jenkins"
BACKUP_BASE="/opt/backup"
DATE=$(date +%F_%H-%M-%S)
RETENTION_DAYS=7

# 创建备份目录
mkdir -p "$BACKUP_BASE"

# 临时目录
TMP_DIR="$BACKUP_BASE/jenkins_$DATE"
mkdir -p "$TMP_DIR"

# 使用rsync增量同步并排除大目录,再打包
rsync -a --delete \
  --exclude='builds' \
  --exclude='modules' \
  --exclude='nextBuildNumber' \
  "$JENKINS_HOME/" "$TMP_DIR/"

# 归档
tar czf "$BACKUP_BASE/jenkins_backup_$DATE.tar.gz" -C "$TMP_DIR" .

# 清理临时目录
rm -rf "$TMP_DIR"

# 清理过期备份
find "$BACKUP_BASE" -name 'jenkins_backup_*.tar.gz' -mtime +$RETENTION_DAYS -delete

echo "[$(date)] Backup finished: jenkins_backup_$DATE.tar.gz" >
    >
     "$BACKUP_BASE/backup.log"
  • 赋权与定时任务:
    • 赋权:chmod +x /opt/backup/jenkins_backup.sh
    • 定时(root):sudo crontab -e
    • 添加:0 2 * * * /opt/backup/jenkins_backup.sh
  • 说明:若希望备份期间完全一致性,可在脚本开头加入systemctl stop jenkins,末尾systemctl start jenkins;注意窗口期对业务的影响。

四 使用插件备份 ThinBackup

  • 安装:管理界面 系统管理 → 插件管理,搜索并安装ThinBackup Plugin
  • 配置:管理界面 系统管理 → ThinBackup Settings,设置备份目录、备份计划(如每日/每周)、保留策略、触发条件等。
  • 执行:点击Backup Now立即备份;需要恢复时在同一页面选择Restore并指定备份点。
  • 适用场景:希望图形化配置、定期自动备份与快速回滚的团队。

五 恢复与迁移

  • 准备环境:在新机器安装与备份时版本尽量一致的Jenkins,并停服务。
  • 恢复主目录:
    • 将备份归档解压至目标主目录(如**/var/lib/jenkins**),保持文件属主属组与权限一致(常见为jenkins:jenkins)。
    • 示例:sudo tar -xzvf jenkins_backup_2025-12-04.tar.gz -C /var/lib
  • 仅恢复关键配置(可选):
    • 将备份中的config.xml、jobs、users、plugins覆盖到对应目录后启动服务。
  • 启动与验证:
    • sudo systemctl start jenkins,登录管理界面检查:系统配置、作业列表、插件、用户与构建历史是否完整。
  • 注意事项:
    • 迁移时若新旧实例同名作业冲突,需先在目标端改名或调整后再覆盖;
    • 若备份不含builds等历史产物,恢复后历史构建记录将不存在(可按需从归档中单独恢复)。

声明:本文内容由网友自发贡献,本站不承担相应法律责任。对本内容有异议或投诉,请联系2913721942#qq.com核实处理,我们将尽快回复您,谢谢合作!


若转载请注明出处: Linux下Jenkins如何备份
本文地址: https://pptw.com/jishu/763820.html
Jenkins在Linux中如何监控 Jenkins在Linux里怎样优化

游客 回复需填写必要信息