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 /'