#!/bin/bash echo "Iniciando limpieza completa de archivos media huérfanos..." # Función para ejecutar limpieza cleanup_batch() { echo "Ejecutando limpieza de lote..." docker exec -it EFC_backend_dev bash -c "cd /app && python manage.py cleanup_media_fast --quick-scan --verbose" 2>/dev/null return $? } # Contador de iteraciones iteration=1 total_cleaned=0 while true; do echo "=== Iteración $iteration ===" # Ejecutar dry-run para ver si hay archivos huérfanos result=$(docker exec -it EFC_backend_dev bash -c "cd /app && python manage.py cleanup_media_fast --quick-scan --dry-run" 2>/dev/null) # Extraer número de archivos huérfanos orphaned_count=$(echo "$result" | grep -o "Archivos huérfanos encontrados: [0-9]*" | grep -o "[0-9]*") if [ -z "$orphaned_count" ] || [ "$orphaned_count" -eq 0 ]; then echo "✅ No se encontraron más archivos huérfanos." echo "🎉 Limpieza completa finalizada después de $iteration iteraciones." echo "📊 Total estimado de archivos eliminados: $total_cleaned" break fi echo "📁 Encontrados $orphaned_count archivos huérfanos en esta iteración" # Preguntar confirmación en la primera iteración if [ $iteration -eq 1 ]; then echo "¿Continuar con la limpieza automática? (s/N):" read -r response if [[ ! "$response" =~ ^[sS]([iI]|í)?$ ]]; then echo "❌ Limpieza cancelada por el usuario." exit 0 fi fi # Ejecutar limpieza cleanup_result=$(docker exec -it EFC_backend_dev bash -c "cd /app && echo 's' | python manage.py cleanup_media_fast --quick-scan --verbose" 2>/dev/null) # Extraer archivos eliminados deleted_count=$(echo "$cleanup_result" | grep -o "Eliminados [0-9]* archivos" | grep -o "[0-9]*") if [ -n "$deleted_count" ]; then total_cleaned=$((total_cleaned + deleted_count)) echo "✅ Eliminados $deleted_count archivos en esta iteración" fi iteration=$((iteration + 1)) # Pausa pequeña para evitar sobrecarga sleep 2 done echo "🏁 Proceso completado exitosamente."