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 # scripts/farm/respaldo-subcuenta.sh verificar # 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}"