#!/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