Automatizar backup en MikroTik a un FTP

Cuando ya configuramos nuestro MikroTik, como cualquier dispositivo bajo nuestra gestión, hay que incluirlo en nuestro plan de copias de seguridad.

Al final «da igual» si le hemos dedicado 10, 30 o 60 minutos en configurarlo, lo que debemos tener claro es que en caso de fallo, podamos recurrir a nuestros backups y tenerlo operativo muy rápidamente.

Ya os hablé de MikroTik en mi entrada anterior de como realizar una primera configuración. Así que directamente entramos a nuestro MikroTik con el Winbox y en el menú System – Script y le damos a nuevo

En el cuadro de «Source» pegaremos el codigo del script (que tenéis un poco más abajo) pero tener en cuenta que hay que ajustar 4 parametros. En las líneas 11 a 14 hay que indicar los siguientes datos:

  • direccion1: indicaremos la ip de nuestro ftp dejando las «»
  • user1: usuario de acceso al ftp
  • pass1: password de acceso al ftp
  • ParamRuta: ruta donde se guardará el backup dentro del ftp remoto

Llamaremos a nuestro script «BackupScript»

# La Culpa de Sistemas
# laculpadesistemas.com
# Copias de seguridad a FTP externo de backup y de export 
# version de 01/04/2019
#
# Realiza una copia en local a la hora programada al script
# ejecuta las 3 opciones: Backup, export y export compact
# sube la copia a un FTP externo
# borra ficheros locales
# especificar dirección del servidor, usuario, contraseña y ruta dentro del ftp
:local direccion1 ("xxx.xxx.xxx.xxx")
:local user1 ("usuarioftp")
:local pass1 ("contraseñaFTP")
:local ParamRuta ("/directorioftp")
# Cogemos la hora y formateamos
:local ts [/system clock get time]
:set ts ([:pick $ts 0 2].[:pick $ts 3 5].[:pick $ts 6 8])
# Cogemos la fecha  y formateamos
:local ds [/system clock get date]
:set ds ([:pick $ds 7 11].[:pick $ds 0 3].[:pick $ds 4 6])
# Generamos el nombre de los ficheros añadiendo FTP delante para su borrado posterior. 
:local FBackup ("/FTP-".[/system identity get name]."-".$ds."-".$ts.".backup")
:local FExport ("/FTP-".[/system identity get name]."-".$ds."-".$ts.".export.rsc")
:local FExportCompact ("/FTP-".[/system identity get name]."-".$ds."-".$ts.".exportcomp.rsc")
# Generamos el nombre de los ficheros añadiendo la ruta destino para subirlos
:local DestinoFBackup ($ParamRuta.$FBackup)
:local DestinoFExportTXT ($ParamRuta.$FExport.".txt")
:local DestinoFExportCompactTXT ($ParamRuta.$FExportCompact.".txt")
# realizamos las copias locales
/system backup save name=$FBackup
/export file=$FExport
/export compact file=$FExportCompact
# Logueamos en el system Log que el backup local se ha realizado correctamente
:log info message="Copia local del sistema realizada correctamente";
# Subimos al FTP la copia del backup local
/tool fetch address=$direccion1 src-path=$FBackup user=$user1 mode=ftp password=$pass1 dst-path=$DestinoFBackup upload=yes
:log info message="$FBackup FTP Upload ok";
# Subimos al FTP la copia del export local
/tool fetch address=$direccion1 src-path=$FExport user=$user1 mode=ftp password=$pass1 dst-path=$DestinoFExportTXT upload=yes
:log info message="$DestinoFExportTXT FTP Upload ok";
# Subimos al FTP la copia del export local compact
/tool fetch address=$direccion1 src-path=$FExportCompact user=$user1 mode=ftp password=$pass1 dst-path=$DestinoFExportCompactTXT upload=yes
:log info message="$DestinoFExportCompactTXT FTP Upload ok";
# Por seguridad para borrar los ficheros esperamos unos segundos
:delay 20s;
# Encuentra todo lo que empiece por FTP- y lo borra del directorio local
:foreach i in=[/file find] do={:if ([:typeof [:find [/file get $i name] "FTP-"]]!="nil") do={/file remove $i}}
# Log que todo ha finalizado
:log info message="Copia finalizada OK";

Aceptamos y directamente podemos ejecutar manualmente el script haciendo pinchando en «Run Script»

Si vamos al menu Log nos mostrará los log del sistema y entre ellos los mensajes del Script. Este va dejando una pequeña traza para indicar por donde ha ido pasando. Si no llegamos a ver «Copia finalizada OK» podemos ver los distintos mensajes de :log para saber donde tenemos el problema y ajustarlo.

Ahora para que se ejecute automáticamente, debemos ir a System -> Scheduler y añadir una automatización

  • Name: Nombre para la programación
  • Start Date: desde cuando está operativo
  • Start Time: Hora a la que se debe ejecutar
  • interval: Cada cuanto tiempo se debe ejecutar
  • On Event: El nombre del script que queremos ejecutar

Con todo esto, todo los días a las 20:00:12 nuestro MikroTik hará una copia de seguridad y lo subirá al FTP. Cada copia será una nueva ya que guarda los ficheros con «nombredelequipo+fecha+hora» de forma que deberemos gestionar o automatizar como más nos convenga el almacenamiento del FTP (borrar por fecha, por volumen de ficheros, por diferencias entre archivos, etc…)

Espero que os sea útil, suscribiros para que os lleguen avisos de la próxima entrada y no dudéis en comentar o mandar un mensaje con cualquier consulta, aportación o inquietud que tengáis…

… y si algo sale mal… La Culpa de Sistemas 😉

Deja un comentario

Este sitio utiliza Akismet para reducir el spam. Conoce cómo se procesan los datos de tus comentarios.