#!/bin/bash # --- CONFIGURACIÓN --- NAMESPACE="gogs" POD_NAME=$(kubectl get pods -n "$NAMESPACE" -l app=gogs-app -o jsonpath='{.items[0].metadata.name}') CONTAINER_BACKUP_DIR="/data" LOCAL_DEST_DIR="/mnt/Family/Gogs" # Crear directorio local si no existe mkdir -p "$LOCAL_DEST_DIR" # 1. Ejecutar el backup dentro del contenedor (lo guarda temporalmente en el PVC) echo "Generando backup de Gogs dentro del contenedor..." kubectl exec -n "$NAMESPACE" "$POD_NAME" -- \ bash -c "USER=git HOME=/data /app/gogs/gogs backup --target $CONTAINER_BACKUP_DIR" # 2. Buscar el nombre del archivo ZIP recién creado dentro del contenedor ZIP_FILE=$(kubectl exec -n "$NAMESPACE" "$POD_NAME" -- \ bash -c "ls -t $CONTAINER_BACKUP_DIR/gogs-backup-*.zip | head -n 1") # Validar si se encontró el archivo if [ -z "$ZIP_FILE" ]; then echo "Error: No se encontró ningún archivo de respaldo en el contenedor." exit 1 fi ZIP_NAME=$(basename "$ZIP_FILE") echo "Archivo encontrado: $ZIP_NAME" # 3. Descargar el archivo directamente a /mnt/Family echo "Moviendo archivo a $LOCAL_DEST_DIR..." kubectl cp "$NAMESPACE/$POD_NAME:$ZIP_FILE" "$LOCAL_DEST_DIR/$ZIP_NAME" # 4. Limpiar el archivo temporal dentro del volumen persistente del contenedor echo "Limpiando residuo del contenedor..." kubectl exec -n "$NAMESPACE" "$POD_NAME" -- rm "$ZIP_FILE" echo "¡Respaldo completado con éxito en $LOCAL_DEST_DIR/$ZIP_NAME!"