respaldo→volumen: la `-H` de rsync no es opcional, y al llegar hay que podar los superados
Dos cosas medidas al traer los 167 GB. 1. `rsync -a` SIN `-H` no preserva los enlaces duros, y el store comparte ficheros entre artefactos justamente así. Llegó inflado: 76 G en el box → 159 G en el volumen, con **0 ficheros de nlink>1** al llegar — ésa es la prueba de que se perdieron, no una sospecha. (El 76 G del box es además ZFS comprimido, así que las dos cosas se sumaban y parecía peor.) El contenido es correcto —es CAS y los hashes casan—, pero ocupa de más y el volumen no sobra. 2. El respaldo conserva artefactos que el hub YA podó. Son SUPERADOS: existe otro con el hash vigente, y no pueden dar cache-hit nunca porque la receta que los nombraba cambió. Eran 544 de 1536 · 31 G. Podados con work/store-gc-superados.txt como lista. El guardián es RECONTAR tras el rm: «borré 544» y «hay 544 menos» son afirmaciones distintas, y sólo la segunda es la que importa. Cuadró. Volumen: 992 artefactos vigentes, 95 G libres de 246. Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
Delta semántico
Ninguna definición cambió: el cambio es de texto, documentación o datos.
1 archivos · +13 −0
diff --git a/scripts/farm/respaldo-subcuenta.sh b/scripts/farm/respaldo-subcuenta.sh
index ee879468..81ccb997 100755
--- a/scripts/farm/respaldo-subcuenta.sh
+++ b/scripts/farm/respaldo-subcuenta.sh
@@ -35,6 +35,19 @@
# Uso: scripts/farm/respaldo-subcuenta.sh crear # crea y guarda la clave en ~/.config/hammer
# scripts/farm/respaldo-subcuenta.sh autorizar <ip-worker>
# scripts/farm/respaldo-subcuenta.sh verificar <ip-worker> # la prueba NEGATIVA
+#
+# ── ⚠ AL TIRAR DEL RESPALDO, `rsync -aH` — LA H NO ES OPCIONAL ─────────────────────────────────
+# El store comparte ficheros entre artefactos por ENLACE DURO. `rsync -a` sin `-H` no los preserva:
+# copia cada enlace como un fichero independiente y el store llega INFLADO. Medido el 2026-08-09:
+# 76 G en el box → 159 G en el volumen, con **0 ficheros de nlink>1** al llegar (la prueba de que se
+# perdieron; el 76 G del box es además ZFS comprimido, así que las dos cosas se sumaban).
+# El contenido es correcto —es CAS, los hashes casan— pero ocupa de más y el volumen no sobra.
+#
+# ── Y AL LLEGAR, PODAR CON EL REGISTRO DE SUPERADOS ────────────────────────────────────────────
+# El respaldo conserva artefactos que el hub YA podó: son SUPERADOS (existe otro con el hash vigente)
+# y no pueden dar cache-hit nunca, porque la receta que los nombraba ya cambió. Medido: 544 de 1536
+# en el volumen, 31 G. Se podan con `work/store-gc-superados.txt` como lista.
+# El guardián es RECONTAR después del rm: «borré N» no es lo mismo que «hay N menos».
set -uo pipefail
ROOT="$(cd "$(dirname "$0")/../.." && pwd)"; cd "$ROOT"
BOX="${BOX:-hammer-respaldo}"