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.
- 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.
- 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). - Transferencia FTP: Utilizan la herramienta nativa
/tool fetchpara enviar los archivos a un repositorio FTP remoto. - 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.
: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.
: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:
/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.
