You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何用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}"

使用说明

  1. 把JENKINS_HOME改成你的Jenkins实际安装目录(默认是/var/lib/jenkins)
  2. 调整BACKUP_DIR为你指定的备份存储路径
  3. 给脚本加执行权限:chmod +x backup_recent_jobs.sh
  4. 可通过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天以上的旧备份文件"

使用说明

  1. 根据实际环境修改JENKINS_HOME和BACKUP_DIR
  2. 添加执行权限:chmod +x backup_full_clean_old.sh
  3. 定时执行示例(每天凌晨3点):
    0 3 * * * /path/to/backup_full_clean_old.sh >> /var/log/jenkins_full_backup.log 2>&1
    

内容的提问来源于stack exchange,提问作者Chandra

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.02 02:23:12