- 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\)
83 lines
2.4 KiB
Ruby
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
|