|
|
@@ -0,0 +1,39 @@
|
|
|
+#!/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!"
|
|
|
+
|