| 123456789101112131415161718192021222324252627282930313233343536373839 |
- #!/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!"
|