- A+
要对 Jenkins 系统进行备份,本质上是对 Jenkins 的文件和目录进行备份,如果没有做特殊设置的话也就是 Jenkins 的安装目录 /var/jenkins_home,知道这个原理后就简单了,我们可以写个 Shell 脚本,在脚本中对 Jenkins 目录进行打包存档,然后添加一个系统定时任务,定期执行 Shell 脚本来存档 Jenkins 目录,需要进行恢复的时候就用存档的内容全部覆盖到 Jenkins 目录。还有一种方式就是利用 Jenkins 的备份插件,安装好 Jenkins 的备份插件后进行一些简单设置,备份插件就会定期对 Jenkins 系统进行备份,需要恢复的时候还是在插件的设置界面进行恢复操作。
第一种方式,采用 Shell 脚本备份 Jenkins 目录,利用 tar 命令归档打包文件,如果想要排除某些文件和目录可以追加 exclude 指令。
1 2 3 4 5 6 7 8 9 | #!/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 Backup 、ThinBackup,其他的最后一次发布都是好几年之前了,并且也只有 Periodic Backup 和 ThinBackup 插件的备份内容比较全面,其他的都只是备份 Jenkins 的配置文件。经过我的使用体验后发现 Periodic Backup 和 ThinBackup 插件的设置也是比较相似的。我这个就演示下 Periodic Backup 插件的使用。
安装 Periodic Backup 插件后在 Jenkins 的【系统管理】中会多出一个【Periodic Backup Manager】选项。
备份插件设置,主要是设置备份文件的存储位置和存储格式,以及备份频率和要忽略的文件及文件夹。因为备份时会占用 CPU,我们这里将【Backup schedule (cron) 】设置在每天午夜执行备份操作,这里的 schedule 设置支持标准的 cron 表达式。在【Excludes list】选项中设置要忽略的文件或者文件夹,用英文符号 ; 分割:
1 | *.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 服务器,这也是一种不错的备份方式,有兴趣的可以试试。