#!/bin/sh
# Empaqueta las subidas del WordPress de cmox.es, UNA CARPETA POR FICHERO.
#
#   ssh ... 'sh -s' < despliegue/archivar-uploads.sh
#
# ── Por que por partes y no un tar de 2 GB ──────────────────────────────
# Porque el de 2 GB se colgo. Llego a 1.794 MB de 2.019 y ahi se quedo: cero
# bytes de avance en 45 segundos, con el proceso vivo. En un alojamiento
# compartido eso pasa, y con un solo fichero no hay forma de saber por donde
# iba ni de continuar: o sale entero o no sale.
#
# Por anos —2019 a 2026 mas las carpetas sueltas— cada trozo son decenas de MB,
# se ve cual falta y el que falle se repite solo el.
#
# ── Es reanudable ───────────────────────────────────────────────────────
# Si el .tar de una carpeta ya existe y no esta vacio, se salta. Volver a
# lanzar esto despues de un corte sigue donde lo dejo.
set -e

RAIZ=/homez.1008/arfrgig/www/wp-content
DESTINO=$(ls -dt /homez.1008/arfrgig/archivo-wp-cmox-* 2>/dev/null | head -1)
[ -n "$DESTINO" ] || { echo "No hay carpeta de archivo"; exit 1; }

SUBIDAS="$DESTINO/uploads"
mkdir -p "$SUBIDAS"
echo "destino: $SUBIDAS"
echo ""

cd "$RAIZ/uploads"
for CARPETA in */; do
  NOMBRE=${CARPETA%/}
  SALIDA="$SUBIDAS/$NOMBRE.tar"

  if [ -s "$SALIDA" ]; then
    echo "   ya estaba   $NOMBRE  ($(du -h "$SALIDA" | cut -f1))"
    continue
  fi

  # Sin comprimir: son JPG, PNG y WEBP, ya comprimidos. Gzip sobre eso gasta
  # minutos de CPU para ahorrar un 2 %.
  if tar -cf "$SALIDA" "$NOMBRE" 2>/dev/null; then
    echo "   ok          $NOMBRE  ($(du -h "$SALIDA" | cut -f1))"
  else
    echo "   FALLO       $NOMBRE  -- se repite volviendo a lanzar esto"
    rm -f "$SALIDA"
  fi
done

# Los ficheros sueltos de la raiz de uploads, que no estan en ninguna carpeta.
if [ ! -s "$SUBIDAS/_sueltos.tar" ]; then
  find . -maxdepth 1 -type f -print0 2>/dev/null \
    | tar --null -cf "$SUBIDAS/_sueltos.tar" -T - 2>/dev/null \
    && echo "   ok          (sueltos)  ($(du -h "$SUBIDAS/_sueltos.tar" | cut -f1))" \
    || echo "   (sin ficheros sueltos)"
fi

echo ""
echo "== resumen"
echo "   origen:  $(du -sm "$RAIZ/uploads" | cut -f1) MB"
echo "   archivo: $(du -sm "$SUBIDAS" | cut -f1) MB"
echo "   trozos:  $(ls "$SUBIDAS" | wc -l)"
