[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:
Executable
+60
@@ -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
|
||||
Reference in New Issue
Block a user