LiveCommerce Blog

Tecnología, estrategia y resultados en ecommerce

Eliminar imágenes sin acceso en más de dos años en producción mediante limpieza incremental controlada en Linux

Crear archivo

cat > /root/cleanup_images_safe.sh << 'EOF'
#!/bin/bash
#
# Script de limpieza segura de database_images_urls
# Procesa carpeta por carpeta con pausas para no saturar el disco
#

BASE="/var/www/livecommerce.fronts/web/database_images_urls"
LOG="/root/cleanup_progress.log"
DAYS=730  # Archivos sin acceso en más de 2 años

echo "========================================" | tee $LOG
echo "Inicio limpieza: $(date)" | tee -a $LOG
echo "Directorio: $BASE" | tee -a $LOG
echo "Días sin acceso: $DAYS" | tee -a $LOG
echo "========================================" | tee -a $LOG
echo "" | tee -a $LOG

# Espacio inicial
echo "Espacio ANTES de limpiar:" | tee -a $LOG
df -h / | grep loop0 | tee -a $LOG
echo "" | tee -a $LOG

# Contador de carpetas procesadas
COUNT=0
TOTAL=$(ls -1d $BASE/?? 2>/dev/null | wc -l)

# Procesar cada carpeta hash una por una
for folder in $BASE/??; do
    if [ -d "$folder" ]; then
        COUNT=$((COUNT + 1))
        FOLDER_NAME=$(basename "$folder")
        
        echo "[$COUNT/$TOTAL] Procesando carpeta: $FOLDER_NAME - $(date)" | tee -a $LOG
        
        # Contar archivos a borrar
        FILES_TO_DELETE=$(ionice -c3 nice -n 19 find "$folder" -type f -atime +$DAYS 2>/dev/null | wc -l)
        echo "  Archivos a borrar: $FILES_TO_DELETE" | tee -a $LOG
        
        # Borrar archivos con baja prioridad I/O
        ionice -c3 nice -n 19 find "$folder" -type f -atime +$DAYS -delete 2>/dev/null
        
        # Mostrar espacio actual
        echo "  Espacio después de $FOLDER_NAME:" | tee -a $LOG
        df -h / | grep loop0 | awk '{print "    Usado: "$3" / "$2" ("$5") - Libre: "$4}' | tee -a $LOG
        
        # Pausa entre carpetas para no saturar el disco
        echo "  Pausa 30 segundos..." | tee -a $LOG
        sleep 30
        echo "" | tee -a $LOG
    fi
done

echo "========================================" | tee -a $LOG
echo "Limpieza COMPLETADA: $(date)" | tee -a $LOG
echo "========================================" | tee -a $LOG

# Espacio final
echo "" | tee -a $LOG
echo "Espacio DESPUÉS de limpiar:" | tee -a $LOG
df -h / | grep loop0 | tee -a $LOG

# Resumen
echo "" | tee -a $LOG
echo "Carpetas procesadas: $COUNT de $TOTAL" | tee -a $LOG
echo "Log completo en: $LOG" | tee -a $LOG
EOF

chmod +x /root/cleanup_images_safe.sh

echo "Script creado en: /root/cleanup_images_safe.sh"
echo ""
echo "Para ejecutar:"
echo "  1. En primer plano (verás el progreso):  /root/cleanup_images_safe.sh"
echo "  2. En segundo plano:                     nohup /root/cleanup_images_safe.sh &"
echo ""
echo "Para monitorear el progreso:"
echo "  tail -f /root/cleanup_progress.log"
echo ""
echo "Para ver espacio liberándose:"
echo "  watch -n 10 'df -h /'"

Ejecución

# Opción A: Primer plano (recomendado para ver que funciona)
/root/cleanup_images_safe.sh

# Opción B: Segundo plano (puedes cerrar la terminal)
nohup /root/cleanup_images_safe.sh &

# Monitorear progreso
tail -f /root/cleanup_progress.log

# Ver espacio en tiempo real (otra terminal)
watch -n 10 'df -h /'
Compártelo:

¿Tienes alguna consulta?

Si tienes alguna pregunta o sabes la respuesta sobre algún comentario, no dudes en contribuir.
Responderemos rápidamente.
Puedes utilizar etiquetas BBCode para escribir negrita, enlaces, imágenes, etc...
Más información en la página oficial de BBCOde http://www.bbcode.org/ Ejemplo:
[url=http://google.com]links[/url], [color=red]colores[/color] [b]negrita[/b]...

¿Has visto los videos en nuestro canal de Youtube?

En nuestro canal de Youtube publicamos periódicamente mejoras y funcionalidades del software de ecommerce .