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>
This commit is contained in:
2026-08-09 11:02:48 -04:00
co-authored by Claude Opus 5
parent 17c4194f5d
commit 2d6a3c774b
+13
View File
@@ -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}"