|

Cómo automatizar Backups de MikroTik a un FTP externo (Scripts para ROS v6 y v7)

    Automatización de Backups MikroTik a Servidor FTP Externo

    Resguardar la configuración de los routers es una tarea crítica en cualquier infraestructura de red. Guardar las copias únicamente dentro de la memoria del MikroTik implica un riesgo elevado ante fallos físicos de hardware o sobreescritura.

    📌 ¿Cómo funcionan estos scripts?
    1. Formateo de Fecha/Hora: Obtienen la fecha y hora actual limpiando caracteres de puntuación para evitar errores de sintaxis en la creación del archivo.
    2. Generación Doble: Crean tanto el archivo binario .backup (para restauración completa) como la exportación .rsc (para auditoría de configuración o migración a otro modelo).
    3. Transferencia FTP: Utilizan la herramienta nativa /tool fetch para enviar los archivos a un repositorio FTP remoto.
    4. Limpieza Local: Una vez finalizado el envío, borran los archivos locales para no saturar la memoria NAND del router.

    RouterOS v6 Script de Backup FTP

    Utilizá este script si tus equipos ejecutan versiones estables de la rama 6.x. Ajustá la exportación mediante compact.

    MikroTik RouterOS v6 – Script
    :local server "IP_PUBLICA"
    :local ftpUser "mikrotik"
    :local ftpPass "Password_Seguro"
    :local carpeta "Nombre_directorio_FTP"
    
    # Obtener fecha y hora actual
    :local sysDate [/system clock get date]
    :local sysTime [/system clock get time]
    
    # Formatear la hora eliminando dos puntos (hhmmss)
    :local horaClean ""
    :for i from=0 to=([:len $sysTime] - 1) do={
        :local char [:pick $sysTime $i ($i + 1)]
        :if ($char != ":") do={ :set horaClean ($horaClean . $char) }
    }
    
    # Generar prefijo con fecha y hora
    :local prefix ("Nombre_Del_Router_" . $sysDate . "_" . $horaClean)
    
    :local localRsc ($prefix . ".rsc")
    :local localBkp ($prefix . ".backup")
    
    :local dstRsc ("Directorio_Principal_FTP/" . $carpeta . "/" . $localRsc)
    :local dstBkp ("Directorio_Principal_FTP/" . $carpeta . "/" . $localBkp)
    
    :log info ("PRUEBA EXEC: Iniciando Backup " . $prefix . "...")
    
    # 1. Generar archivos locales con timestamp
    /system backup save name=$localBkp dont-encrypt=yes
    /export compact file=$prefix
    
    :delay 10s
    
    :log info "PRUEBA EXEC: Enviando por FTP..."
    
    # 2. Subir por FTP
    /tool fetch address=$server src-path=$localRsc user=$ftpUser password=$ftpPass dst-path=$dstRsc mode=ftp upload=yes
    /tool fetch address=$server src-path=$localBkp user=$ftpUser password=$ftpPass dst-path=$dstBkp mode=ftp upload=yes
    
    :delay 5s
    
    :log info "PRUEBA EXEC: Limpiando archivos locales..."
    
    # 3. Limpieza de archivos temporales locales
    /file remove [find name=$localRsc]
    /file remove [find name=$localBkp]
    
    :log info "PRUEBA EXEC: Finalizado y limpiado con exito."

    RouterOS v7 Script de Backup FTP

    Ajustado específicamente para RouterOS v7. Incorpora el parámetro show-sensitive para garantizar que se exporten las configuraciones completas y claves.

    MikroTik RouterOS v7 – Script
    :local server "IP_PUBLICA"
    :local ftpUser "mikrotik"
    :local ftpPass "Password_Seguro"
    :local carpeta "Directorio_FTP"
    
    # Obtener fecha y hora actual
    :local sysDate [/system clock get date]
    :local sysTime [/system clock get time]
    
    # Formatear la hora eliminando dos puntos (hhmmss)
    :local horaClean ""
    :for i from=0 to=([:len $sysTime] - 1) do={
        :local char [:pick $sysTime $i ($i + 1)]
        :if ($char != ":") do={ :set horaClean ($horaClean . $char) }
    }
    
    # Generar prefijo con fecha y hora
    :local prefix ("Argentina_Cordoba_IP_" . $sysDate . "_" . $horaClean)
    
    :local localRsc ($prefix . ".rsc")
    :local localBkp ($prefix . ".backup")
    
    :local dstRsc ("Directorio_principal_FTP/" . $carpeta . "/" . $localRsc)
    :local dstBkp ("Directorio_principal_FTP/" . $carpeta . "/" . $localBkp)
    
    :log info ("PRUEBA EXEC: Iniciando Backup " . $prefix . "...")
    
    # 1. Generar archivos locales con timestamp
    /system backup save name=$localBkp dont-encrypt=yes
    /export show-sensitive file=$prefix
    
    :delay 10s
    
    :log info "PRUEBA EXEC: Enviando por FTP..."
    
    # 2. Subir por FTP
    /tool fetch address=$server src-path=$localRsc user=$ftpUser password=$ftpPass dst-path=$dstRsc mode=ftp upload=yes
    /tool fetch address=$server src-path=$localBkp user=$ftpUser password=$ftpPass dst-path=$dstBkp mode=ftp upload=yes
    
    :delay 5s
    
    :log info "PRUEBA EXEC: Limpiando archivos locales..."
    
    # 3. Limpieza de archivos temporales locales
    /file remove [find name=$localRsc]
    /file remove [find name=$localBkp]
    
    :log info "PRUEBA EXEC: Finalizado y limpiado con exito."

    ⚙️ Programación Automática (Scheduler)

    Una vez guardado el código en System > Scripts con el nombre Backup-FTP, podés programarlo desde la terminal para que se ejecute automáticamente todos los días a las 02:00 AM:

    Comando Terminal para el Scheduler
    /system scheduler
    add name="Auto-Backup-FTP-Diario" start-time=02:00:00 interval=1d on-event="Backup-FTP" comment="Backup diario automatico a FTP externo"

    ¿Preferís no renegar con la infraestructura de tu FTP remoto?

    Asegurá las configuraciones de tu red sin necesidad de administrar o mantener tu propio servidor externo.

    🔒 Alta Disponibilidad Servidores cloud redundantes diseñados para almacenar backups críticos.
    ⚡ Despliegue Inmediato Credenciales listas y scripts preconfigurados para tus routers en 5 minutos.
    🤝 Soporte Especializado Respaldo técnico profesional especializado en gestión de redes y MikroTik.
    Contratar Servicio de Backup Cloud

    Deja una respuesta

    Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *