随着我们的长期使用,Jenkins 系统中的内容会越来越多,特别是一些配置相关的东西,不能有任何丢失。这个时候我们就需要定期备份我们的 Jenkins 系统,避免一些误操作不小心删除了某些重要文件,Jenkins 的备份工具就是一剂后悔药。

要对 Jenkins 系统进行备份,本质上是对 Jenkins 的文件和目录进行备份,如果没有做特殊设置的话也就是 Jenkins 的安装目录 /var/jenkins_home,知道这个原理后就简单了,我们可以写个 Shell 脚本,在脚本中对 Jenkins 目录进行打包存档,然后添加一个系统定时任务,定期执行 Shell 脚本来存档 Jenkins 目录,需要进行恢复的时候就用存档的内容全部覆盖到 Jenkins 目录。还有一种方式就是利用 Jenkins 的备份插件,安装好 Jenkins 的备份插件后进行一些简单设置,备份插件就会定期对 Jenkins 系统进行备份,需要恢复的时候还是在插件的设置界面进行恢复操作。

第一种方式,采用 Shell 脚本备份 Jenkins 目录,利用 tar 命令归档打包文件,如果想要排除某些文件和目录可以追加 exclude 指令。

#!/usr/bin/env bash

# 指定Jenkins的安装目录路径
jenkins_home='jenkins_home_path'
current_date=$(date '+%Y%m%d') cd $jenkins_home || exit
# 按日期备份
tar -cvzf ../jenkins_home_"$current_date".tar *

第二种方式,采用 Jenkins 插件备份 Jenkins 系统。在 Jenkins 的可选插件中搜索 backup 关键词,看到只有如下几个插件可选:



对比了这几个备份插件,目前就只有这两个还在维护,Periodic BackupThinBackup,其他的最后一次发布都是好几年之前了,并且也只有 Periodic BackupThinBackup 插件的备份内容比较全面,其他的都只是备份 Jenkins 的配置文件。经过我的使用体验后发现 Periodic BackupThinBackup 插件的设置也是比较相似的。我这个就演示下 Periodic Backup 插件的使用。

安装 Periodic Backup 插件后在 Jenkins 的【系统管理】中会多出一个【Periodic Backup Manager】选项。



备份插件设置,主要是设置备份文件的存储位置和存储格式,以及备份频率和要忽略的文件及文件夹。因为备份时会占用 CPU,我们这里将【Backup schedule (cron) 】设置在每天午夜执行备份操作,这里的 schedule 设置支持标准的 cron 表达式。在【Excludes list】选项中设置要忽略的文件或者文件夹,用英文符号 ; 分割:

*.log;workspace;*.jar;*.zip;*.gz;node_modules;*.hprof;*.apk;*.ipa;*.aar

全部设置如下图:



设置好后可以点击【Backup Now!】立即备份一下,也可以等着每天午夜备份插件自动备份。备份后在【Periodic Backup Manager】插件页面可以看到已有的备份,如果需要恢复,选择一个时间节点的备份文件进行【Restore selected backup】恢复即可。



还有一种方式来备份 Jenkins 的文件目录,那就是 Git 仓库,我们可以把 Jenkins 的整改文件目录当作一个 Git 代码仓库,将文件提交到 Git 代码仓库,然后再推送到远程的 Git 服务器,这也是一种不错的备份方式,有兴趣的可以试试。

Jenkins 进阶篇 - 数据备份的更多相关文章

  1. Jenkins 进阶篇 - 任务关联

    有时候我们的一个任务里面会进行很多的步骤,例如构建一个后端的 Java 服务,可能会有代码静态扫描,静态扫描通过后会打包成 jar 或者 war 文件,打包成功后可能还会对制品进行存档备份,然后可能会 ...

  2. Jenkins 进阶篇 - 节点配置

    当我们使用 Jenkins 构建的项目达到一定规模后,一个 Jenkins 服务可能承受不了负载,会导致很多的构建任务堆积,严重的话还会拖垮这台服务器,导致上面的服务无法使用.例如我们公司目前在 Je ...

  3. Jenkins 进阶篇 - 权限配置

    Jenkins的授权策略 Jenkins 默认的授权策略是[登录用户可以做任何事],也就是人人都是管理员,可以修改所有的设置以及构建所有的任务,不用做任何设置,有账号登录到 Jenkins 系统即可, ...

  4. Jenkins 进阶篇 - 权限案例实践

    为了演示方便,我这里创建了如下的一些任务,各个任务由包含在对应的目录中树形结构大概如下: jenkins-authority 目录类型任务 ├── dev-project-group 目录类型任务 │ ...

  5. Jenkins 进阶篇 - 参数化构建

    我们在构建任务时经常会遇到这样的情景,一个任务配置好了以后,在后面的构建过程中,又会修改一些配置.例如,我们构建项目的代码可能是拉取指定的分支或者是Tag进行构建,又或者是在构建是需要指定特定的运行平 ...

  6. Jenkins 进阶篇 - 单元测试覆盖率

    我们做项目开发,肯定免不了要写单元测试,不管是 Java 项目.Python 项目.PHP 项目,甚至是 nodejs 项目,都应该要写单元测试,本小节就来介绍单元测试的覆盖率报告输出和展示,在后面的 ...

  7. MySQL(十五)之数据备份中mysqldump详解

    前言 其实前面一篇数据备份已经是非常的详细了,这里我想单独的讲解一下mysqldump,相信很多程序员都是用过这个命令的! 一.MySQL数据库的备份与还原 1.1.MySQL数据库备份 1)语法 m ...

  8. Jenkins进阶系列之——17Jenkins升级、迁移和备份

    升级Jenkins Jenkins的开发迭代非常快,每周发布一个开发版本,长期支持版每半年更新一次(ps:大版本更新).如此频繁的更新,怎么升级呢? war:下载新版的war文件,替换旧版本war文件 ...

  9. RMAN备份演练进阶篇

    前篇介绍了通过rman进行各种备份,进阶篇则主要是rman的一些功能扩展和增加功能,利用前篇你已经完全可以完成数据库的备份,而通过本篇你可以更好更方便的完成数据库的备份. 一.建立增量备份 如果数据库 ...

随机推荐

  1. <JVM中篇:字节码与类的加载篇>03-类的加载过程(类的生命周期)详解

    笔记来源:尚硅谷JVM全套教程,百万播放,全网巅峰(宋红康详解java虚拟机) 同步更新:https://gitee.com/vectorx/NOTE_JVM https://codechina.cs ...

  2. Mac 右键强化工具-超级右键

    App Store 功能介绍 1.新建文件 默认支持新建:TXT/RTF/XML/Word/Excel/PPT/WPS文字/WPS表格/WPS演示/Pages/Numbers/keynote/Ai/P ...

  3. restful 与 webapi 详解

    restful 什么是API API全称Aplication Programming Itererface即应用程序编程接口, 我们在开发应用程序时经常用到.API作为接口,用来"连接&qu ...

  4. 带你解析MySQL binlog

    前言: 我们都知道,binlog可以说是MySQL中比较重要的日志了,在日常学习及运维过程中,也经常会遇到.不清楚你对binlog了解多少呢?本篇文章将从binlog作用.binlog相关参数.解析b ...

  5. c语言编程学习之字符串

    字符串字面量与字符变量 1.字符串字面量 字符串字面量是一对双引号括起来的字符序列.当c语言编译器在程序中遇到长度为n的字符串字面量时,它会为字符串字面量分配长度为n+1的内存空间.这块内存空间用来存 ...

  6. Python爬虫 小白[3天]入门笔记

    笔记来源 Day-0 1.如果你还不了解Python的基础语法,可以移步|>>>Python 基础 小白 [7天] 入门笔记<<<|或自行学习. 简介 1.什么是爬 ...

  7. IT菜鸟之计算机软件

     一.计算机系统的分类 32位操作系统:32/u:更省资源:支持4G以内的内存 64位操作系统:64/u:速度更快:支持4G以外的内存 内存单位:B KB MB GB TB 换算:1024(2的10次 ...

  8. mysql基础之忘掉密码解决办法及恢复root最高权限办法

    如果忘记了mysql的root用户的密码,可以使用如下的方法,重置root密码. 方法一: 1.停止当前mysql进程 systemctl stop mariadb 2.mysql进程停止后,使用如下 ...

  9. Redis学习笔记七:主从集群

    单机,单节点,单实例的Redis会有什么问题呢? 容易导致单点故障,那么如何解决呢? 可以通过主备方式 同时可以实现读写分离 这里的每个节点是全量的,镜像的. 单节点的容量有限而且单点的压力比较大,如 ...

  10. selenium常用代码

    from selenium import webdriver # 1. 添加浏览器设置参数对象 options = webdriver.ChromeOptions() # 2. 设置中文,与下载无弹窗 ...