centos

Jenkins在CentOS上如何进行备份

小樊
37
2025-11-24 02:22:27
栏目: 智能运维

Jenkins在CentOS上的备份与恢复指南

一 备份策略与范围

二 手动备份步骤

三 自动化备份脚本与定时任务

#!/bin/bash
set -e

JENKINS_HOME="/var/lib/jenkins"
BACKUP_DIR="/mnt/backups/jenkins"
TIMESTAMP=$(date +%F_%H%M%S)
RETENTION_DAYS=7

# 创建备份目录
mkdir -p "$BACKUP_DIR"

# 停止Jenkins
echo "[$TIMESTAMP] 停止 Jenkins 服务..."
sudo systemctl stop jenkins || { echo "停止失败"; exit 1; }

# 等待进程完全退出
sleep 15

# 备份核心数据(排除大目录)
BACKUP_FILE="$BACKUP_DIR/jenkins_${TIMESTAMP}.tar.gz"
echo "[$TIMESTAMP] 创建备份: $BACKUP_FILE"
sudo tar -czvf "$BACKUP_FILE" -C "$JENKINS_HOME" \
  --exclude=jobs/*/workspace \
  --exclude=jobs/*/builds/*/artifacts \
  --exclude=cache \
  --exclude=tools \
  --exclude=logs \
  .

# 备份系统配置
CFG_FILE="$BACKUP_DIR/jenkins_config_${TIMESTAMP}.tar.gz"
echo "[$TIMESTAMP] 备份系统配置: $CFG_FILE"
sudo tar -czvf "$CFG_FILE" /etc/sysconfig/jenkins /etc/default/jenkins 2>/dev/null || true

# 启动Jenkins
echo "[$TIMESTAMP] 启动 Jenkins 服务..."
sudo systemctl start jenkins || { echo "启动失败"; exit 1; }

# 清理旧备份
echo "[$TIMESTAMP] 清理 $RETENTION_DAYS 天前的备份..."
find "$BACKUP_DIR" -name "jenkins_*.tar.gz" -mtime +$RETENTION_DAYS -delete
find "$BACKUP_DIR" -name "jenkins_config_*.tar.gz" -mtime +$RETENTION_DAYS -delete

echo "[$TIMESTAMP] 备份完成: $BACKUP_FILE"
exit 0

四 使用插件进行备份 ThinBackup

五 恢复与验证

0
看了该问题的人还看了