如何用Shell脚本备份Jenkins任务与插件并清理15天以上旧备份?
Jenkins 备份Shell脚本实现方案
一、备份最近15天更新的Jenkins任务
实现思路
用find命令筛选Jenkins任务目录中15天内有修改的任务,针对性打包备份,减少不必要的存储空间占用。
脚本代码
#!/bin/bash # 配置参数,根据你的Jenkins实际路径修改 JENKINS_HOME="/var/lib/jenkins" BACKUP_DIR="/opt/jenkins_backups/recent_jobs" DATE=$(date +%Y%m%d_%H%M%S) BACKUP_FILE="${BACKUP_DIR}/jenkins_recent_jobs_${DATE}.tar.gz" # 创建备份目录(不存在则自动创建) mkdir -p ${BACKUP_DIR} # 筛选15天内修改的任务并打包 find ${JENKINS_HOME}/jobs -type d -mtime -15 -print0 | xargs -0 tar -czf ${BACKUP_FILE} --transform 's,^/var/lib/jenkins/jobs,jobs_recent_15d,' echo "最近15天任务备份完成:${BACKUP_FILE}"
使用说明
- 把
JENKINS_HOME改成你的Jenkins实际安装目录(默认是/var/lib/jenkins) - 调整
BACKUP_DIR为你指定的备份存储路径 - 给脚本加执行权限:
chmod +x backup_recent_jobs.sh - 可通过crontab定时执行,比如每天凌晨2点:
0 2 * * * /path/to/backup_recent_jobs.sh >> /var/log/jenkins_backup.log 2>&1
二、全量备份Jenkins任务+插件并清理15天以上旧备份
实现思路
先打包Jenkins任务和插件目录生成全量备份,再自动清理备份目录中15天前的旧文件,释放存储空间。
脚本代码
#!/bin/bash # 配置参数,根据你的Jenkins实际路径修改 JENKINS_HOME="/var/lib/jenkins" BACKUP_DIR="/opt/jenkins_backups/full_backups" DATE=$(date +%Y%m%d_%H%M%S) BACKUP_FILE="${BACKUP_DIR}/jenkins_full_backup_${DATE}.tar.gz" # 创建备份目录(不存在则自动创建) mkdir -p ${BACKUP_DIR} # 打包任务与插件目录 tar -czf ${BACKUP_FILE} \ --transform 's,^/var/lib/jenkins,jobs_and_plugins,' \ ${JENKINS_HOME}/jobs \ ${JENKINS_HOME}/plugins echo "全量备份完成:${BACKUP_FILE}" # 删除15天以上的旧备份文件 find ${BACKUP_DIR} -type f -mtime +15 -name "*.tar.gz" -delete echo "已删除15天以上的旧备份文件"
使用说明
- 根据实际环境修改
JENKINS_HOME和BACKUP_DIR - 添加执行权限:
chmod +x backup_full_clean_old.sh - 定时执行示例(每天凌晨3点):
0 3 * * * /path/to/backup_full_clean_old.sh >> /var/log/jenkins_full_backup.log 2>&1
内容的提问来源于stack exchange,提问作者Chandra
相关产品推荐
相关产品推荐

