一文掌握Jenkins备份教程,效率提升300%

2026-08-17 来源: 点击量


Jenkins 备份的核心原则非常简单:Jenkins 的所有数据几乎都集中在 JENKINS_HOME 目录中,只要备份好这个目录,就可以完整恢复整个 Jenkins 实例。下面从确认目录、备份方式到恢复验证,给你一套完整的实操教程。

一文掌握Jenkins备份教程,效率提升300%

 确认 JENKINS_HOME 位置

在开始备份前,先确认你的 Jenkins 主目录在哪里:

页面查看:Jenkins 管理界面 → Manage Jenkins → System → 查看 Home directory

命令行查看:grep JENKINS_HOME /etc/default/jenkins

常见默认路径:

表格

下载为表格

导出为图片

环境默认路径

Linux(CentOS/Ubuntu/Debian)/var/lib/jenkins

Docker/var/jenkins_home

WindowsC:ProgramDataJenkins.jenkins

 需要备份的核心内容

JENKINS_HOME 目录下包含以下关键内容:

表格

下载为表格

导出为图片

目录/文件说明是否必须备份

config.xmlJenkins 全局配置

jobs/所有 Job/Pipeline 配置

users/用户账户信息

secrets/凭证、密钥(极其重要)

plugins/已安装插件

nodes/Agent 节点配置

credentials.xml凭据配置

workspace/构建工作空间(太大,可跳过)

builds/构建历史(按需)

 备份方式

方式一:手动全量备份(最简单、最稳妥)

这是最基础也最可靠的方式,适合临时备份或迁移场景。

步骤:

停止 Jenkins 服务(强烈建议,防止数据不一致)bash

编辑

1sudo systemctl stop jenkins

打包 JENKINS_HOME 目录bash

编辑

1sudo tar -czvf jenkins_backup_$(date +%F).tar.gz /var/lib/jenkins

启动 Jenkins 服务bash

编辑

1sudo systemctl start jenkins

将备份文件转移到安全位置(远程服务器、对象存储等)bash

编辑

1sudo cp jenkins_backup_*.tar.gz /data/backup/

2# 或远程传输

3scp jenkins_backup_*.tar.gz user@backup-server:/backup/

方式二:rsync 增量备份(不停机,适合生产环境)

如果不想停机,可以使用 rsync 进行增量同步:

bash

编辑

1# 本地增量备份

2sudo rsync -av /var/lib/jenkins/ /backup/jenkins_home/

3

4# 远程增量备份

5sudo rsync -avz /var/lib/jenkins/ user@backup-server:/backup/jenkins/

 注意:正在写入的构建日志可能不完整,恢复后建议做一次 Reload Configuration from Disk。

方式三:ThinBackup 插件(图形化操作,推荐新手)

ThinBackup 是 Jenkins 社区最常用的备份插件,支持定时备份、增量备份和自动清理。

安装与配置:

进入 Manage Jenkins → Plugins → 搜索并安装 ThinBackup

进入 Manage Jenkins → System → 找到 ThinBackup 配置区域

设置以下参数:

表格

下载为表格

导出为图片

配置项说明

Backup Directory备份存储路径(如 /var/lib/jenkins/JENKINS_BACKUP)

Full Backup Schedule全量备份的 Cron 表达式(如 0 2 * * 0 每周日凌晨2点)

Differential Backup Schedule增量备份的 Cron 表达式(如 0 2 * * 1-6 周一至周六)

Max Backup Sets保留的备份集数量

Backup build results是否备份构建结果(建议关闭以减小体积)

Backup plugins是否备份插件目录

点击 Backup Now 立即执行一次备份

手动恢复:

进入 Manage Jenkins → ThinBackup → Restore → 选择备份集 → 点击 Restore → 重启 Jenkins

方式四:自动化脚本 + Crontab(推荐生产环境)

编写一个完整的备份脚本,包含自动打包、日志记录和旧备份清理:

bash

编辑

1#!/bin/bash

2# backup_jenkins.sh

3

4JENKINS_HOME="/var/lib/jenkins"

5BACKUP_DIR="/mnt/backups/jenkins"

6TIMESTAMP=$(date +%Y%m%d_%H%M%S)

7BACKUP_FILE="$BACKUP_DIR/jenkins_backup_$TIMESTAMP.tar.gz"

8

9# 创建备份目录

10mkdir -p "$BACKUP_DIR"

11

12# 打包(排除临时文件和 workspace)

13tar -czvf "$BACKUP_FILE"

14 --exclude="$JENKINS_HOME/workspace/*"

15 --exclude="$JENKINS_HOME/logs/*"

16 --exclude="$JENKINS_HOME/plugins/*.tmp"

17 "$JENKINS_HOME"

18

19# 删除 30 天前的旧备份

20find "$BACKUP_DIR" -name "jenkins_backup_*.tar.gz" -type f -mtime +30 -delete

21

22# 记录日志

23echo "[$(date)] Jenkins backup completed: $BACKUP_FILE" >> "$BACKUP_DIR/backup.log"

赋予执行权限并配置定时任务:

bash

编辑

1sudo chmod +x /usr/local/bin/backup_jenkins.sh

2sudo crontab -e

3# 添加:每天凌晨 2 点执行

40 2 * * * /usr/local/bin/backup_jenkins.sh

方式五:Docker 环境备份

如果你的 Jenkins 运行在 Docker 容器中:

bash

编辑

1# 查看容器名

2docker ps

3

4# 备份数据卷

5docker run --rm

6 -v jenkins_home:/var/jenkins_home

7 -v $(pwd):/backup

8 alpine

9 tar czf /backup/jenkins_backup.tar.gz /var/jenkins_home

恢复:

bash

编辑

1docker run --rm

2 -v jenkins_home:/var/jenkins_home

3 -v $(pwd):/backup

4 alpine

5 tar xzf /backup/jenkins_backup.tar.gz -C /

 恢复 Jenkins(关键步骤)

无论使用哪种备份方式,恢复流程基本一致:

bash

编辑

1# 1. 停止 Jenkins

2sudo systemctl stop jenkins

3

4# 2. 清空原目录(谨慎操作)

5sudo rm -rf /var/lib/jenkins/*

6

7# 3. 解压备份

8sudo tar -xzvf jenkins_backup_2026-08-17.tar.gz -C /

9

10# 4. 修复权限(非常重要!)

11sudo chown -R jenkins:jenkins /var/lib/jenkins

12

13# 5. 启动 Jenkins

14sudo systemctl start jenkins

 权限修复是恢复后最容易踩的坑。如果跳过 chown 步骤,Jenkins 启动后会因为无法读写文件而报错。

 最佳实践总结

表格

下载为表格

导出为图片

项目建议

备份频率每天一次(配置变更频繁时可增加到每小时)

保留策略保留最近 7~30 天的备份

存储位置备份文件必须存到远程服务器或对象存储(S3/OSS),不能只留在本机

恢复测试至少每季度做一次恢复演练,验证备份的可用性

最小备份集config.xml + jobs/ + users/ + secrets/ + plugins/

Git 管理配置建议将 Pipeline 脚本和 Job 配置纳入 Git 版本控制,作为备份的补充

相关文章
  • 一文掌握Jenkins备份教程,效率提升300%
    一文掌握Jenkins备份教程,效率提升300%

    Jenkins 备份的核心原则非常简单:Jenkins 的所有数据几乎都集中在 JENKINS_HOME 目录中,只要备份好这个目录,就可以完整恢复整个 Jenkins 实例。下面从确认目录、备份方式到恢复验证,给你一套完整的实操教程。确认 JENKINS_HOME 位置在开始备份前,先确认你的 Jenkins 主...

  • 【收藏级】S3全套配置模板与脚本
    【收藏级】S3全套配置模板与脚本

    “S3”是一个在不同领域都有广泛使用的缩写。结合你平时的技术关注点,这里为你梳理了 S3 在云计算、AI芯片、新能源汽车等方向的最新含义:云计算:Amazon S3 (对象存储)这是 S3 最经典的含义,全称为 Amazon Simple Storage Service。核心定位:它是 AWS 提供的一种对象存...

  • 【实战】内存高怎么办,一步步带你搞定
    【实战】内存高怎么办,一步步带你搞定

    针对 IK 分词器导致的内存占用过高问题,可以从词典管理、JVM 调优以及架构策略三个层面进行系统性排查和优化:词典与缓存优化控制词典规模:IK 分词器在初始化时会将主词典、扩展词典及停用词全部加载至 JVM 堆内存中。建议定期清理无效词条,控制总词条数。...

  • 为什么推荐Zsh优化方案?深度对比与实测
    为什么推荐Zsh优化方案?深度对比与实测

    Zsh 启动慢、卡顿通常是因为加载了过多的插件、复杂的主题或重复的环境变量。结合你平时做网站开发和服务器运维的背景,这里为你梳理了一套从“诊断”到“根治”的 Zsh 性能优化方案,帮你把终端启动时间从几秒压缩到 0.5 秒以内。1. 性能诊断:找出拖慢速度...

  • 一文掌握十分钟IaC,效率提升300%
    一文掌握十分钟IaC,效率提升300%

    十分钟掌握 IaC(基础设施即代码),核心在于理解它的本质:把过去手动敲命令、点云控制台搭环境的重复劳动,变成可版本控制、可复用的代码。以下是为你提炼的 IaC 核心速成指南:1. 核心优势:为什么必须用 IaC?环境一致性: 彻底告别“在我机器上能跑”的玄学...

  • Shell脚本标准完全指南:运维工程师必备手册
    Shell脚本标准完全指南:运维工程师必备手册

    编写高质量的 Shell 脚本,核心在于兼顾可读性、可维护性和安全性。结合你平时在服务器运维和网络安全方面的技术积累,这里为你梳理了一套从底层规范到防御性编程的实战标准:1. 文件基础与命名规范Shebang 声明: 脚本第一行必须明确指定解释器,如 #!/bin/bash ...