# frozen_string_literal: true # ========================================================== # adn/tools/bkps/lib/sync_rclone.rb — Sincronización rclone # Migrado desde dtic-BKPs v6.0 → ADN::BKPs # ========================================================== require 'shellwords' module ADN module BKPs module Procesador class Rclone RCLONE_OPTS = %w[ --delete-before --retries 5 --retries-sleep 10s --timeout 30m --contimeout 10m --tpslimit 10 --progress -v ].join(' ').freeze def initialize(log) @log = log end def ejecutar(tarea) @log.info("--- #{tarea[:texto]} ---") origen = tarea[:origen] destino = tarea[:destino] @log.info("Origen: #{origen}") @log.info("Destino: #{destino}") cmd = "rclone sync #{Shellwords.escape(origen)} #{Shellwords.escape(destino)} #{RCLONE_OPTS}" @log.info("#{tarea[:id]}: Ejecutando → #{cmd}") exito = system(cmd) codigo = $?.exitstatus if exito @log.info("✔ Sincronización rclone completada.") else @log.error("#{tarea[:id]}: Fallo en sincronización (código: #{codigo}).") end exito end end end end end