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…
takana etapa 5c: comentarios de scripts, MOTD, y un BUG que introdujo la etapa 4
1#!/bin/sh
2# mirror-poblar.sh — sube la caché local de tarballs al mirror de fuentes (ADR 0013).
3#
4# El mirror está direccionado por CONTENIDO: `takana/fuentes/{sha256}.tar`, exactamente el mismo
5# nombre que usa `work/tarballs/`. Por eso subir es un rsync plano y no hace falta índice ninguno:
6# el nombre del fichero ES su verificación.
7#
8# Es INCREMENTAL e interrumpible, como el respaldo: los ficheros nunca cambian (un sha256 identifica
9# un contenido y sólo uno), así que la comparación por tamaño+fecha de rsync es exacta y baratísima.
10#
11# Uso: scripts/fuentes/mirror-poblar.sh # sube lo que falte
12# SECO=1 scripts/fuentes/mirror-poblar.sh # dice qué subiría
13set -eu
14ROOT="$(cd "$(dirname "$0")/../.." && pwd)"; cd "$ROOT"
15
16SB_USER="${SB_USER:-u647150}"
17SB_HOST="${SB_HOST:-u647150.your-storagebox.de}"
18SB_PORT="${SB_PORT:-23}"
19KEY="${KEY:-$HOME/.ssh/github5}"
20SRC="${SRC:-work/tarballs}"
21SECO=""; [ "${SECO:-}" = "1" ] && SECO="--dry-run"
22
23[ -d "$SRC" ] || { echo "no hay caché local en $SRC" >&2; exit 1; }
24SSH_CMD="ssh -4 -p $SB_PORT -i $KEY -o StrictHostKeyChecking=accept-new -o ServerAliveInterval=30"
25
26n=$(ls "$SRC" | wc -l); tam=$(du -sh "$SRC" | cut -f1)
27echo "==> caché local: $n tarballs, $tam"
28echo "==> destino: $SB_USER@$SB_HOST:hammer/fuentes/ ${SECO:+(SECO)}"
29
30$SSH_CMD "$SB_USER@$SB_HOST" 'mkdir hammer hammer/fuentes' >/dev/null 2>&1 || true
31
32# --partial-dir: un tarball cortado a la mitad conserva el trozo y la próxima corrida lo TERMINA.
33rsync -a --info=progress2 --partial-dir=.rsync-partial $SECO \
34 -e "$SSH_CMD" "$SRC"/ "$SB_USER@$SB_HOST:hammer/fuentes/"
35
36echo "==> en el mirror: $($SSH_CMD "$SB_USER@$SB_HOST" 'ls hammer/fuentes | wc -l' 2>/dev/null) objetos"