Резервное копирование mikrotik
Задача
Нужно организовать резервное копирование настроек роутера mikrotik на внешний сервер. Для этого будем использовать встроенный скриптовый язык микротика. Напишем скрипт, который будет создавать файл бэкапа и заливать его на ftp сервер. Будем запускать скрипт встроенным в mikrotik шедулером.
Фишка нижеприведенных скриптов в используемом формате имен файлов.
Дело в том, что в RouterOS дата представлена только в виде строки следующего формата: jul/08/2019
, что не удобно для именования файлов.
Имена файлов бэкапов у нас будут в следующем формате: System-Name_YYYY-MM-DD_HHMMSS
например: New-FW1_2019-08-07_044211.backup
.
При таком формате файла сортировка по имени файла будет совпадать с сортировкой по дате.
итак:
Решение
вспомогательный cкрипт для преобразования даты и времени в нужный нам формат getFormattedDate
:
:global mydatetime :local time [/system clock get time] :local date [/system clock get date] :local month [:tostr ([:find \ "janfebmaraprmayjunjulaugsepoctnovdec" [:pick $date 0 3] \ ]/3+1)] :if ([:tonum $month]<10) do={ :set month "0$month" } :set mydatetime ( \ [:pick $date 7 11]."-".$month."-".[:pick $date 4 6]."_". \ [:pick $time 0 2].[:pick $time 3 5].[:pick $time 6 8] \ ) # :put "Current date/time in YYYY-MM-DD_HHMMSS format is: $mydatetime"
скрипт резервного копирования backup_to_ftp
:
:local ftpuser "mikrotik" :local ftppassword "pass" :local ftphost "192.168.1.254" :global mydatetime :system script run getFormattedDate :local name value=[/system identity get name] :local filename value=($name."_".$mydatetime.".backup") system backup save name=$filename export file=$filename; tool fetch address=$ftphost user=$ftpuser password=$ftppassword mode=ftp src-path= ($filename) dst-path=($filename) upload=yes; tool fetch address=$ftphost user=$ftpuser password=$ftppassword mode=ftp src-path=($filename.".rsc") dst-path=($filename.".rsc") upload=yes; /file remove $filename /file remove ($filename.".rsc")
добавляем в scheduler на mikrotik:
/system scheduler add interval=1d name=Backup on-event="/system script run backup_to_ftp" \ policy=ftp,reboot,read,write,policy,test,password,sniff,sensitive,romon \ start-date=jul/01/2019 start-time=05:10:00
ENJOY!