9 Commits
Author SHA1 Message Date
Ricardo Monla 65dd92b769 docs & tools: Actualización de informes y scripts de migración DASUTEN 2026-04-20 16:25:51 -03:00
Ricardo MonlaandClaude Opus 4.6 faf46be84b [Bugfix] dasuten_restaurar_diferencial_dasu-sql4.rb — Escape rutas Windows
PROBLEMA:
- Script fallaba con "Invalid escape character syntax" en línea 71
- Ruby interpretaba \P, \M, \S como escapes inválidos
- Pipeline bkps fallaba en paso 5/6 (Restaurar diferencial)
- Orquestador continuaba al paso 6 aunque paso 5 fallaba

SOLUCIÓN:
- Escapar correctamente ruta de sqlcmd.exe: "C:\\Program Files\\..."
- Heredoc mantiene interpolación #{backup_name} para PowerShell

RESULTADO:
- Restore diferencial:  0.14s
- DBCC CHECKDB:  241.68s — Estado: OK
- Pipeline diferencial completo: 39.49 MB restaurados

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-04-16 08:32:50 -03:00
Ricardo Monla 892019fa22 [A04.P005] DASUTEN: Pipeline refactorizado + Documentación + Informes
Refactorización del pipeline de backups DASUTEN:

1. Flujo simplificado (un solo destino):
   - Backup directo a X:\ (share srv-ns8)
   - Eliminado paso intermedio E:\BK_SQL\sysdasuten\
   - Reducido de 3 ubicaciones a 2 (X: → /var/tmp/)

2. Módulo común DasuExecutor (lib/dasu_executor.rb):
   - Centraliza ejecución PowerShell en dasu-sql4
   - Centraliza verificación de archivos en fenix
   - Elimina código repetido en 6 drones (-52% líneas)

3. Drones refactorizados:
   - dasuten_exportar_srvv-fenix.rb (FULL → X:)
   - dasuten_exportar_diferencial_srvv-fenix.rb (DIF → X:)
   - dasuten_transferir_srvv-fenix-srv-ns8.rb (simplificado)
   - dasuten_restaurar_dasu-sql4.rb (usa DasuExecutor)
   - dasuten_restaurar_diferencial_dasu-sql4.rb (usa DasuExecutor)
   - dasuten_download_drive-dasu-sql4.rb (usa DasuExecutor)
   - dasuten_verificar-integridad_dasu-sql4.rb (usa DasuExecutor)

4. Integración BKPs mantenida:
   - T8-T15: Tareas individuales
   - C7: dasuten_full (pipeline semanal)
   - C8: dasuten_diferencial (pipeline diario)

5. Documentación actualizada:
   - A04.P006_Backups-DASUTEN.md: flujo simplificado + módulo común
   - Lecciones aprendidas agregadas

6. Nuevos archivos:
   - Informes técnicos DASUTEN (docs/informes/2026-04_DASUTEN-migracion/)
   - A01.P011/P012: Documentación de drones y pipeline
   - proc_linux.rb, ops.rb: Utilitarios del ecosistema

7. Scripts legacy (para referencia):
   - orquestador_pipeline.rb, orquestador_pipeline_diferencial.rb
   - dasuten_upload_srv-ns8-drive.rb
2026-04-14 20:06:06 -03:00
Ricardo Monla 3b73e0b053 [A04.P005] Extraído módulo común DasuExecutor para eliminar código repetido
Problema: 6 drones repetían el mismo patrón de ejecución remota:
- Base64 encoding de scripts PowerShell
- SSH vía srv-dasu con sshpass
- Lectura de JSON output desde dasu-sql4
- Verificación de archivos en fenix vía xp_cmdshell

Solución: adn/tools/cli/drones/lib/dasu_executor.rb

Funciones del módulo:
- execute_ps_on_dasu(ps_script) → ejecuta PowerShell en dasu-sql4
- read_json_from_dasu(path) → lee JSON output
- execute_ps_with_json_output(ps_script) → combina ambas
- execute_ps_on_fenix(client, ps_script) → PowerShell en fenix
- file_exists_on_fenix?(client, path) → verifica existencia
- get_file_info_on_fenix(client, path) → info completa de archivo

Drones refactorizados (líneas ahorradas):
- dasuten_restaurar_dasu-sql4.rb: 200 → 95 líneas (-52%)
- dasuten_restaurar_diferencial_dasu-sql4.rb: 207 → 100 líneas (-52%)
- dasuten_download_drive-dasu-sql4.rb: 269 → 130 líneas (-52%)
- dasuten_verificar-integridad_dasu-sql4.rb: 182 → 85 líneas (-53%)
- dasuten_exportar_srvv-fenix.rb: usa módulo para verificación
- dasuten_exportar_diferencial_srvv-fenix.rb: usa módulo para verificación

Beneficio: Si se modifica el patrón SSH/PowerShell, se cambia en 1 solo lugar.
2026-04-14 19:59:20 -03:00
Ricardo Monla 2bc5eae08c [A04.P005] Simplificado flujo de backup a único destino (X:)
- dasuten_exportar_srvv-fenix.rb: Backup directo a X: sin copia local
- dasuten_exportar_diferencial_srvv-fenix.rb: Mismo patrón simplificado
- dasuten_transferir_srvv-fenix-srv-ns8.rb: Solo copia share → /var/tmp
- dasuten_restaurar_dasu-sql4.rb: Ajustado para leer output correcto

Flujo simplificado:
  FULL: srvv-fenix → X:\ → /var/tmp/ → Drive
  DIF: srvv-fenix → X:\ → /var/tmp/ → Drive

Eliminados pasos intermedios innecesarios (E:\BK_SQL\sysdasuten\)
2026-04-14 19:53:07 -03:00
Ricardo MonlaandClaude Opus 4.6 900457a778 [A04.P006] Exportar backup en doble ubicación (fenix + share ns8)
Cambios realizados:

1. dasuten_exportar_srvv-fenix.rb:
   - Genera backup en disco local: E:\BK_SQL\sysdasuten\
   - Copia automáticamente a unidad de red X: (share srv-ns8)
   - Usa PowerShell para copiar al share mapeado
   - Verifica ambos destinos

2. dasuten_transferir_srvv-fenix-srv-ns8.rb:
   - Simplificado: ya no descarga desde fenix vía SMB
   - El backup ya está en /mnt/ns8Disco2/bkps-dasuten/
   - Copia local: share → /var/tmp/ (para rclone upload)

Flujo actualizado:
  1. SQL Server → E:\BK_SQL\sysdasuten\archivo.bak (local fenix)
  2. PowerShell → X:\archivo.bak (share srv-ns8)
  3. Transfer dron → /var/tmp/archivo.bak (para rclone)
  4. Upload dron → Google Drive

Requisito en srvv-fenix:
  net use X: \\10.0.10.8\bkps-dasuten /user:rmonla <password>

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-04-14 19:44:13 -03:00
Ricardo MonlaandClaude Opus 4.6 c6970f7d7a [A04.P006] Share SMB configurado en srv-ns8 - copia manual desde fenix
Cambios realizados:

1. srv-ns8 - Share SMB configurado:
   - Path: /mnt/ns8Disco2/bkps-dasuten
   - Share name: bkps-dasuten
   - Usuario: rmonla
   - Acceso: \\10.0.10.8\bkps-dasuten

2. dasuten_transferir_srvv-fenix-srv-ns8.rb:
   - Elimina copia automática al share
   - Agrega nota sobre cómo copiar manualmente desde fenix
   - Mantiene backup en /var/tmp/ para upload a Drive

Uso desde srvv-fenix (Windows):
  net use X: \\10.0.10.8\bkps-dasuten /user:rmonla <password>
  copy E:\BK_SQL\sysdasuten\archivo.bak X:\

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-04-14 19:14:26 -03:00
Ricardo MonlaandClaude Opus 4.6 cdc4c5378e [A04.P006] Backups en doble ubicación (fenix + srv-ns8 share)
Cambios realizados:

1. dasuten_transferir_srvv-fenix-srv-ns8.rb:
   - Agrega paso [3/3] para copiar al directorio compartido
   - Directorio: /mnt/ns8Disco2/bkps-dasuten/
   - Mantiene copia temporal en /var/tmp/ para upload a Drive
   - Output incluye backup_ns8 con ruta completa

Flujo actualizado:
  srvv-fenix (E:\BK_SQL\sysdasuten\)
      ↓ SMB
  srv-ns8 (/var/tmp/) ← temporal para upload
      ↓ copia local
  srv-ns8 (/mnt/ns8Disco2/bkps-dasuten/) ← share permanente

Resultado:
  - Backup original se preserva en fenix
  - Copia en share ns8 para resguardo local
  - Copia temporal para upload a Google Drive

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-04-14 18:13:36 -03:00
Ricardo MonlaandClaude Opus 4.6 0f9ebe9ef5 [A04.P006] Drones de exportación actualizados con formato estandarizado
Cambios realizados:

1. dasuten_exportar_srvv-fenix.rb (FULL):
   - Nuevo formato: E:\BK_SQL\sysdasuten\sysdasuten_FULL_YYYYMMDD_HHMMSS.bak
   - Crea directorio con xp_create_subdir si no existe
   - Usa compresión nativa de SQL Server (WITH COMPRESSION)
   - Output: backup_tipo='full'

2. dasuten_exportar_diferencial_srvv-fenix.rb (DIF):
   - Nuevo formato: E:\BK_SQL\sysdasuten\sysdasuten_DIF_YYYYMMDD_HHMMSS.bak
   - Crea directorio si no existe
   - Usa compresión nativa (WITH DIFFERENTIAL, COMPRESSION)
   - Output: backup_tipo='differential'

3. dasuten_download_drive-dasu-sql4.rb:
   - Lee nombre de archivo desde upload_output JSON
   - Guarda como F:\BACKUP\{nombre_real_del_archivo}.bak
   - Soporta formatos FULL y DIF

4. dasuten_restaurar_dasu-sql4.rb:
   - Lee backup_local desde download_output JSON
   - Busca patrón sysdasuten_FULL_*.bak si no hay output
   - Encuentra el más reciente por LastWriteTime

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-04-14 17:48:05 -03:00