پشتیبانگیری و بازیابی 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>