refactor(ambitos): Migración completa dtic-DASUTEN (A04) y dtic-BKPs (A03) + herramientas ADN
Migración dtic-DASUTEN a estándar A04: - A04_dtic-DASUTEN.md: Manifiesto creado - A04.P001 a A04.P005: Planes renombrados de P2601.* - _hist/_hist_P2601_dasuten.md: Legacy archivado Migración dtic-BKPs a estándar A03: - A03_dtic-BKPs.md: Manifiesto creado - A03.P001, A03.P002: Planes migrados - docs/ambito/dtic-BKPs/: Nueva estructura Herramientas ADN nuevas: - adn/tools/bkps/: BKPs migrado a tools ADN - adn/tools/cli/dron.rb: Vigía de tareas largas - adn/tools/cli/copiloto.rb: Asistente CLI - adn/tools/cli/novato.rb: CLI de aprendizaje Limpieza: - dtic-BKPs/ → _hist/dtic-BKPs/ (legacy archivado) - adn/tools/cli/backup.rb → _hist/ (migrado a bkps.rb) Otros: - nodos/pcv-dasu1.md, srvv-data.md, srvv-nginx-rm.md: Actualizados - adn/tools/core/conciliador.rb: Mejoras - adn/tools/w-zombi/data/cmd.json: Actualizado Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
This commit is contained in:
co-authored by
Claude Opus 4.6
parent
018e45e046
commit
1802c25194
Executable
+87
@@ -0,0 +1,87 @@
|
||||
#!/bin/bash
|
||||
# ==========================================================
|
||||
# adn/tools/bkps/cron-bkps.sh — Wrapper cron para backups
|
||||
# ----------------------------------------------------------
|
||||
# Ejecuta un comando bkps con:
|
||||
# - Lockfile (evita ejecuciones simultáneas)
|
||||
# - Bitácora automática vía dron
|
||||
# - Logging de salida
|
||||
#
|
||||
# Uso en crontab:
|
||||
# 0 2 * * * /ruta/adn/tools/bkps/cron-bkps.sh C4
|
||||
# 0 3 * * * /ruta/adn/tools/bkps/cron-bkps.sh T3
|
||||
#
|
||||
# Ejemplo manual:
|
||||
# ./adn/tools/bkps/cron-bkps.sh C4 "Pipeline nocturno C4"
|
||||
# ==========================================================
|
||||
|
||||
set -euo pipefail
|
||||
|
||||
# ─── Configuración ─────────────────────────────────────────
|
||||
SCRIPT_DIR="$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)"
|
||||
PROJECT_ROOT="$(cd "$SCRIPT_DIR/../../.." && pwd)"
|
||||
ADN_RUN="$PROJECT_ROOT/adn/tools/run"
|
||||
LOCK_DIR="$PROJECT_ROOT/tmp/locks"
|
||||
LOG_DIR="$PROJECT_ROOT/tmp/logs/bkps"
|
||||
|
||||
mkdir -p "$LOCK_DIR" "$LOG_DIR"
|
||||
|
||||
# ─── Argumentos ────────────────────────────────────────────
|
||||
REF="${1:-}"
|
||||
NOTA="${2:-Cron: bkps run $REF --batch}"
|
||||
AMBITO="dtic-BKPs"
|
||||
NODO="srv-ns8"
|
||||
|
||||
if [ -z "$REF" ]; then
|
||||
echo "✗ Uso: cron-bkps.sh <T1|C1|ID> [nota]"
|
||||
exit 1
|
||||
fi
|
||||
|
||||
# ─── Lockfile ──────────────────────────────────────────────
|
||||
LOCKFILE="$LOCK_DIR/bkps_${REF}.lock"
|
||||
|
||||
if [ -f "$LOCKFILE" ]; then
|
||||
PID_LOCK=$(cat "$LOCKFILE")
|
||||
if kill -0 "$PID_LOCK" 2>/dev/null; then
|
||||
echo "⚠ bkps $REF ya está corriendo (PID: $PID_LOCK, lock: $LOCKFILE)"
|
||||
exit 0 # No es error, simplemente ya está corriendo
|
||||
else
|
||||
echo "ℹ Lock stale removido (PID $PID_LOCK ya no existe)"
|
||||
rm -f "$LOCKFILE"
|
||||
fi
|
||||
fi
|
||||
|
||||
echo $$ > "$LOCKFILE"
|
||||
trap 'rm -f "$LOCKFILE"' EXIT
|
||||
|
||||
# ─── Log ───────────────────────────────────────────────────
|
||||
FECHA=$(date +%Y-%m-%d)
|
||||
HORA=$(date +%H:%M)
|
||||
LOGFILE="$LOG_DIR/bkps_${REF}_${FECHA}_${HORA//:/}.log"
|
||||
|
||||
echo "[$(date)] cron-bkps: Iniciando $REF" >> "$LOGFILE"
|
||||
|
||||
# ─── Bitácora + Ejecución via Dron ──────────────────────
|
||||
# Crear evento
|
||||
EVENTO_ID=$("$ADN_RUN" db evento:crear \
|
||||
--ambito "$AMBITO" \
|
||||
--nodo "$NODO" \
|
||||
--descripcion "$NOTA" \
|
||||
--inicio "$HORA" \
|
||||
--modo R --ia 2>&1 | grep -oP 'ID \K\d+' | tail -1)
|
||||
|
||||
if [ -z "$EVENTO_ID" ]; then
|
||||
echo "[$(date)] cron-bkps: ⚠ No se pudo crear evento, ejecutando sin bitácora" >> "$LOGFILE"
|
||||
"$ADN_RUN" bkps run "$REF" --batch >> "$LOGFILE" 2>&1
|
||||
EXIT_CODE=$?
|
||||
else
|
||||
echo "[$(date)] cron-bkps: Evento #$EVENTO_ID creado, delegando al dron" >> "$LOGFILE"
|
||||
"$ADN_RUN" dron lanzar \
|
||||
--evento "$EVENTO_ID" \
|
||||
--nota "$NOTA" \
|
||||
-- "$ADN_RUN" bkps run "$REF" --batch >> "$LOGFILE" 2>&1
|
||||
EXIT_CODE=$?
|
||||
fi
|
||||
|
||||
echo "[$(date)] cron-bkps: Finalizado con código $EXIT_CODE" >> "$LOGFILE"
|
||||
exit $EXIT_CODE
|
||||
Reference in New Issue
Block a user