From 2d6a3c774b55880d12c79b4bb76acf1c695492e4 Mon Sep 17 00:00:00 2001 From: sergio Date: Sun, 9 Aug 2026 11:02:48 -0400 Subject: [PATCH] =?UTF-8?q?respaldo=E2=86=92volumen:=20la=20`-H`=20de=20rs?= =?UTF-8?q?ync=20no=20es=20opcional,=20y=20al=20llegar=20hay=20que=20podar?= =?UTF-8?q?=20los=20superados?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit 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) --- scripts/farm/respaldo-subcuenta.sh | 13 +++++++++++++ 1 file changed, 13 insertions(+) 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}"