DevOps متوسط

پشتیبان‌گیری و بازیابی Jenkins

اسکریپتی که پیکربندی، jobها و افزونه‌های Jenkins را پشتیبان‌گیری و بازیابی می‌کند.

منتشر شده: 2024/05/06

کد

#!/bin/bash

# Jenkins Backup and Restore Script

JENKINS_HOME="${JENKINS_HOME:-/var/lib/jenkins}"
BACKUP_DIR="/backup/jenkins"
ACTION="${1:-backup}"

if [ ! -d "$JENKINS_HOME" ]; then
    echo "Error: Jenkins home directory not found: $JENKINS_HOME"
    exit 1
fi

mkdir -p "$BACKUP_DIR"

if [ "$ACTION" = "backup" ]; then
    DATE=$(date +%Y%m%d_%H%M%S)
    BACKUP_FILE="$BACKUP_DIR/jenkins_backup_${DATE}.tar.gz"
    
    echo "Backing up Jenkins..."
    echo "Jenkins Home: $JENKINS_HOME"
    echo "Backup File: $BACKUP_FILE"
    echo ""
    
    tar -czf "$BACKUP_FILE" -C "$(dirname "$JENKINS_HOME")" "$(basename "$JENKINS_HOME")"
    
    if [ $? -eq 0 ]; then
        SIZE=$(du -h "$BACKUP_FILE" | cut -f1)
        echo "✓ Backup completed: $BACKUP_FILE ($SIZE)"
    else
        echo "✗ Backup failed!"
        exit 1
    fi
    
elif [ "$ACTION" = "restore" ]; then
    if [ -z "$2" ]; then
        echo "Usage: $0 restore <backup_file>"
        exit 1
    fi
    
    BACKUP_FILE="$2"
    
    if [ ! -f "$BACKUP_FILE" ]; then
        echo "Error: Backup file not found: $BACKUP_FILE"
        exit 1
    fi
    
    echo "Restoring Jenkins from backup..."
    echo "Backup File: $BACKUP_FILE"
    echo "Jenkins Home: $JENKINS_HOME"
    echo ""
    echo "⚠️  WARNING: This will overwrite current Jenkins configuration!"
    read -p "Continue? (y/n): " CONFIRM
    
    if [ "$CONFIRM" != "y" ]; then
        echo "Restore cancelled"
        exit 0
    fi
    
    systemctl stop jenkins
    
    if [ -d "$JENKINS_HOME" ]; then
        mv "$JENKINS_HOME" "${JENKINS_HOME}_old_$(date +%Y%m%d_%H%M%S)"
    fi
    
    tar -xzf "$BACKUP_FILE" -C "$(dirname "$JENKINS_HOME")"
    
    chown -R jenkins:jenkins "$JENKINS_HOME"
    
    systemctl start jenkins
    
    echo "✓ Restore completed!"
else
    echo "Usage: $0 [backup|restore] [backup_file]"
    exit 1
fi

نحوه استفاده

chmod +x jenkins_backup.sh
./jenkins_backup.sh backup
./jenkins_backup.sh restore <backup_file>

برچسب‌ها

jenkins backup ci/cd devops restore