Jenkins 进阶篇 - 数据备份

随着我们的长期使用,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 关键词,看到只有如下几个插件可选:
Jenkins 进阶篇 - 数据备份
对比了这几个备份插件,目前就只有这两个还在维护,Periodic BackupThinBackup,其他的最后一次发布都是好几年之前了,并且也只有 Periodic BackupThinBackup 插件的备份内容比较全面,其他的都只是备份 Jenkins 的配置文件。经过我的使用体验后发现 Periodic BackupThinBackup 插件的设置也是比较相似的。我这个就演示下 Periodic Backup 插件的使用。
安装 Periodic Backup 插件后在 Jenkins 的【系统管理】中会多出一个【Periodic Backup Manager】选项。
Jenkins 进阶篇 - 数据备份
备份插件设置,主要是设置备份文件的存储位置和存储格式,以及备份频率和要忽略的文件及文件夹。因为备份时会占用 CPU,我们这里将【Backup schedule (cron) 】设置在每天午夜执行备份操作,这里的 schedule 设置支持标准的 cron 表达式。在【Excludes list】选项中设置要忽略的文件或者文件夹,用英文符号 ; 分割:

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

全部设置如下图:
Jenkins 进阶篇 - 数据备份
设置好后可以点击【Backup Now!】立即备份一下,也可以等着每天午夜备份插件自动备份。备份后在【Periodic Backup Manager】插件页面可以看到已有的备份,如果需要恢复,选择一个时间节点的备份文件进行【Restore selected backup】恢复即可。
Jenkins 进阶篇 - 数据备份
还有一种方式来备份 Jenkins 的文件目录,那就是 Git 仓库,我们可以把 Jenkins 的整改文件目录当作一个 Git 代码仓库,将文件提交到 Git 代码仓库,然后再推送到远程的 Git 服务器,这也是一种不错的备份方式,有兴趣的可以试试。

上一篇:C# 获取两经纬度之间的距离


下一篇:Openstack之定时任务