Files
dtic-DIIAA/adn/tools/cli/drones/dasuten_transferir_srvv-fenix-srv-ns8.rb
T
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

93 lines
2.9 KiB
Ruby

#!/usr/bin/env ruby
# frozen_string_literal: true
# ==========================================================
# adn/tools/cli/drones/dasuten_transferir_srvv-fenix-srv-ns8.rb
# ==========================================================
# Dron: Preparar backup desde share de srv-ns8 para upload
# Flujo: /mnt/ns8Disco2/bkps-dasuten/ → /var/tmp/ (para rclone)
# Nota: El backup ya está en el share gracias al dron de export
# ==========================================================
require 'time'
require 'json'
require 'fileutils'
# Si existe output del dron anterior (export o export_dif), leer la ruta
EXPORT_OUTPUT_FILE = '/tmp/dron_export_output.json'
EXPORT_DIF_OUTPUT_FILE = '/tmp/dron_export_dif_output.json'
backup_ns8_unix = nil
backup_name = nil
if File.exist?(EXPORT_DIF_OUTPUT_FILE)
output = JSON.parse(File.read(EXPORT_DIF_OUTPUT_FILE))
if output['backup_ruta_ns8'] || output['backup_ruta_ns8_unix']
backup_ns8_unix = output['backup_ruta_ns8_unix'] || output['backup_ruta_ns8']
backup_name = File.basename(backup_ns8_unix)
puts "[*] Dron: Preparar backup DIFERENCIAL para upload"
end
elsif File.exist?(EXPORT_OUTPUT_FILE)
output = JSON.parse(File.read(EXPORT_OUTPUT_FILE))
if output['backup_ruta_ns8'] || output['backup_ruta_ns8_unix']
backup_ns8_unix = output['backup_ruta_ns8_unix'] || output['backup_ruta_ns8']
backup_name = File.basename(backup_ns8_unix)
puts "[*] Dron: Preparar backup COMPLETO para upload"
end
end
unless backup_ns8_unix
puts "[!] Error: No se encontró ruta de backup en output de export"
exit 1
end
BACKUP_NS8_DIR = "/mnt/ns8Disco2/bkps-dasuten"
BACKUP_LOCAL = "/var/tmp/#{backup_name}"
puts " Share: #{BACKUP_NS8_DIR}"
puts " Archivo: #{backup_name}"
puts " Destino: #{BACKUP_LOCAL}"
begin
puts "\n[1/2] Copiando desde share a /var/tmp..."
start = Time.now
# Copiar archivo del share al directorio temporal para rclone
FileUtils.cp(backup_ns8_unix, BACKUP_LOCAL)
duracion = (Time.now - start).round(2)
puts "[+] Copia completada en #{duracion} segundos"
# Verificar archivo local
puts "\n[2/2] Verificando archivo..."
if File.exist?(BACKUP_LOCAL)
tamaño_mb = (File.size(BACKUP_LOCAL) / 1024.0 / 1024.0).round(2)
puts "[+] Archivo verificado: #{tamaño_mb} MB"
puts " Ruta: #{BACKUP_LOCAL}"
else
puts "[!] Archivo no encontrado en destino"
exit 1
end
# Output para orquestador
resultado = {
paso: 'transfer_complete',
backup_local: BACKUP_LOCAL,
backup_ns8_share: backup_ns8_unix,
nodo: 'srv-ns8',
duracion: duracion,
timestamp: Time.now.iso8601,
siguiente_paso: 'upload_drive'
}
puts "\n✅ Backup listo para upload"
puts " Output: #{resultado.to_json}"
File.write('/tmp/dron_transfer_output.json', resultado.to_json)
rescue => e
puts "[!] Error fatal: #{e.message}"
puts e.backtrace.first(5).join("\n")
exit 1
end