gioser

sergio/takana

> Una distribución Linux construida con un laboratorio funcional y hermético en el > sótano, y una terminal mutable, clásica y anárquica en el piso de arriba — diseñada > desde el suelo para que una IA programadora entienda, modifique y co…

TOML 815Rust 56Shell 37Markdown 291229 Definiciones

respaldo: el listado no recorre .dmerge — tardaba tanto que se cortaba

`du -s hammer/store/*` incluia `.dmerge`, la cache transitoria de fusion del
store: 48 GB en el box el 2026-08-12. Recorrerla hacia que --listar tardara
lo bastante como para cortarse por timeout, y entonces el box "devolvia 0
artefactos" — el guardian de los 0 hizo bien su trabajo y se nego a pisar el
manifiesto, pero la causa no era el enlace.

Con `store/[0-9a-f]*` el listado baja de cortarse a 3 s, y de paso descarta
en el origen `.bootstrap-tmp`/`.mirror-tmp`, que nunca son artefactos. Un
artefacto SIEMPRE empieza por hex: filtrar en el origen sale mas barato que
traerse la basura y descartarla despues.

Verificado: 2037 artefactos, 0 vacios.

⚠ Aparte: que .dmerge ESTE en el respaldo es en si un problema — son 48 GB de
cache reconstruible ocupando el box, y el propio script la excluye al subir
(`--exclude /.dmerge`). Llego por otra via. No se toca aqui: borrar en el
destino es una decision deliberada y aparte.

Y una limitacion del guardian de vacios que conviene conocer: durante una
SUBIDA en curso, los directorios a medio escribir son indistinguibles de los
rotos. Reporto 101 vacios a mitad del rsync y 0 al terminar. No es un falso
positivo del filtro: es que la pregunta no tiene respuesta estable mientras
se escribe.

Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>

82f9055670209916ea2e803730836af50638d12f · por Sergio · (hace 2 meses) · padre a95a1126c · ver el árbol en este commit

Delta semántico

Ninguna definición cambió: el cambio es de texto, documentación o datos.

1 archivos · +6 −1

diff --git a/scripts/respaldo-storagebox.sh b/scripts/respaldo-storagebox.sh
index 6686e02e..5154c9f8 100755
--- a/scripts/respaldo-storagebox.sh
+++ b/scripts/respaldo-storagebox.sh
@@ -75,8 +75,13 @@ if [ "${1:-}" = "--listar" ]; then
   # (2026-08-10: 7 vacíos de 1749, todos del stack gráfico, de una subida que falló callada.)
   # Cuesta 8,6 s sobre 1751 artefactos frente a un `ls` instantáneo — barato para lo que evita.
   # La shell del box no es bash y no tiene `find`, pero SÍ expande globs y SÍ tiene `du`.
+  # `du -s hammer/store/[0-9a-f]*` y NO `store/*`: el glob amplio incluye `.dmerge`, la caché
+  # transitoria de fusión —48 GB el 2026-08-12—, y recorrerla hace que el listado tarde tanto que se
+  # corta por timeout. El sufijo del glob además descarta de entrada los `.bootstrap-tmp`/`.mirror-tmp`
+  # que nunca son artefactos. Un artefacto SIEMPRE empieza por hex: filtrar en el origen es más barato
+  # que traerse la basura y descartarla aquí.
   ssh -4 -p "$SB_PORT" -i "$KEY" -o StrictHostKeyChecking=accept-new \
-      "$SB_USER@$SB_HOST" 'du -s hammer/store/*' 2>/dev/null > work/.respaldo-du.tmp
+      "$SB_USER@$SB_HOST" 'du -s hammer/store/[0-9a-f]*' 2>/dev/null > work/.respaldo-du.tmp
   # OJO CON EL ORDEN: recortar la ruta ANTES del awk se come el contador (`sed 's#.*/##'` es codicioso
   # y borra "5347<TAB>hammer/store/" entero), y entonces $1 es el NOMBRE, no los bloques: el filtro
   # compara basura y devuelve cualquier cosa. Primero se filtra por número, después se recorta.