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

83 lines
2.4 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'
# Leer ruta del backup desde el output del dron de export
EXPORT_OUTPUT_FILE = '/tmp/dron_export_output.json'
backup_ns8_unix = nil
backup_name = nil
if File.exist?(EXPORT_OUTPUT_FILE)
output = JSON.parse(File.read(EXPORT_OUTPUT_FILE))
backup_ns8_unix = output['backup_ruta_unix'] || output['backup_ruta_ns8']
backup_name = File.basename(backup_ns8_unix)
backup_tipo = output['backup_tipo'] || 'full'
puts "[*] Dron: Preparar backup #{backup_tipo.upcase} para upload"
end
unless backup_ns8_unix
puts "[!] Error: No se encontró ruta de backup en output de export"
exit 1
end
BACKUP_LOCAL = "/var/tmp/#{backup_name}"
puts " Origen: #{backup_ns8_unix}"
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_origen: 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