[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
This commit is contained in:
Ricardo Monla
2026-04-14 20:06:06 -03:00
parent bc1f42db1f
commit 892019fa22
59 changed files with 5438 additions and 42 deletions
+60
View File
@@ -0,0 +1,60 @@
#!/usr/bin/env ruby
# frozen_string_literal: true
# ==========================================================
# adn/tools/cli/dasuten_backup_upload.rb — Upload a Google Drive
# ==========================================================
# Flujo: srv-ns8 (backup local) → Google Drive
# Uso: ruby adn/tools/cli/dasuten_backup_upload.rb
# ==========================================================
require 'time'
REMOTE_DRIVE = "rmonla-GDrive:drive_bkps-dasu"
BACKUP_LOCAL = "/var/tmp/sysdasuten_compressed_ADN.bak"
BACKUP_NAME = "sysdasuten_compressed_ADN_#{Time.now.strftime('%Y%m%d_%H%M%S')}.bak"
puts "[*] Iniciando upload de backup a Google Drive..."
# Verificar archivo local
unless File.exist?(BACKUP_LOCAL)
puts "[!] Backup no encontrado en #{BACKUP_LOCAL}"
puts " Primero generar backup en srvv-fenix y descargar a srv-ns8"
exit 1
end
tamaño_mb = (File.size(BACKUP_LOCAL) / 1024.0 / 1024.0).round(2)
puts " Archivo local: #{BACKUP_LOCAL}"
puts " Tamaño: #{tamaño_mb} MB"
puts " Destino: #{REMOTE_DRIVE}/#{BACKUP_NAME}"
begin
# Upload a Google Drive
puts "\n[1/2] Subiendo a Google Drive..."
puts " (Esto puede tomar 3-10 minutos dependiendo del ancho de banda)"
cmd_upload = "rclone copy '#{BACKUP_LOCAL}' '#{REMOTE_DRIVE}/#{BACKUP_NAME}' --progress -v"
start_upload = Time.now
system(cmd_upload)
if $?.success?
duracion = (Time.now - start_upload).round(2)
puts "[+] Upload completado en #{duracion} segundos."
else
puts "[!] Error en upload (código: #{$?.exitstatus})"
exit 1
end
# Verificar archivo en Drive
puts "\n[2/2] Verificando archivo en Drive..."
cmd_verify = "rclone size '#{REMOTE_DRIVE}/#{BACKUP_NAME}' 2>/dev/null"
output = `#{cmd_verify}`.strip
puts " Tamaño en Drive: #{output}"
puts "\n✅ Backup subido exitosamente a Google Drive:"
puts " #{REMOTE_DRIVE}/#{BACKUP_NAME}"
rescue => e
puts "[!] Error fatal: #{e.message}"
exit 1
end