BackUP RouterOS и отправка его на почту

Приветствую Вас.

Недавно у моего товарища случилась беда с одним из устройств Mikrotik, в следствии чего я помогал ему произвести восстановление рабочего состояния с помощью NetInstall. Ситуация падения устройства банальна и очень обидна. Потому что, как правильный IT-шник он сделал генерирование бекапов на самом устройстве, но упустил одну очень важную вещь, то что при генерировании каждого бекапа, в него входит полностью конфигурация всего устройства, а также все файлы бекапа находящиеся в пункте меню Files. Соответственно, при каждом новом бекапе, в него попадали старые бекапы и объем занимаемого пространства на nand flash устройстве возрастала в геометрической прогрессии, что в конце заняло полностью все пространство на flash, и когда мой друг перезагрузил устройство, то оно не загрузилось, т.к. не было свободного пространства. При этом ни одного бекапа на компьютере не было, что еще было катастрофичней, ему пришлось настраивать устройство почти с нуля.

Поэтому опишу способ бекапа Mikrotik RouterOS с отправкой его на почту. Благо в настоящее время объемы почтовых ящиков позволяют хранить файлы, тем более бекап Mikrotik RouterOS занимает всего лишь порядка 150 Килобайт, и это согласитесь очень мало, даже имея на почте около 1000 бекапов, занятое пространство будет небольшим. Я делаю бекап своей системы 1 раз в неделю, в выходной день и отправляю его на почту.

В этой статье я и опишу как я это делаю.

Для начала идем System -> Scripts -> [+]

Вводим название нашего скрипта в поле: Name -> backup_to_email

В поле Source: 

:log info "==========================================================";

:log info "BACKUP SCRIPT:Starting Backup Script...";

:local SystemName [/system identity get name];

:local SystemVer [/system package get system version];

:log info "BACKUP SCRIPT: Flushing DNS cache...";

/ip dns cache flush;

:delay 2;

:log info "BACKUP SCRIPT: Deleting last Backups...";

:foreach i in=[/file find] do={:if ([:typeof [:find [/file get $i name] \

"$sysname-backup-"]]!="nil") do={/file remove $i}};

:delay 2;

:local smtpserv [:resolve "smtp.gmail.com"]; ### <<--В кавычках вписываем свой smtp сервер почтаря

:local EmAccount "Этот адрес электронной почты защищен от спам-ботов. У вас должен быть включен JavaScript для просмотра. "; ###<<-- В кавычках вписываем почтовый ящик от которого будет посылаться бекап

:local ToAccount "Этот адрес электронной почты защищен от спам-ботов. У вас должен быть включен JavaScript для просмотра. "; ###<<--- Выписываем почтовый ящик куда будет посылаться бекап.

:local Pass "your_password"; ### <<--- Вписываем пароль от почтового ящика Этот адрес электронной почты защищен от спам-ботов. У вас должен быть включен JavaScript для просмотра.

:local BackupFile ("$sysname-backup-" . \

[:pick [/system clock get date] 7 11] . [:pick [/system \

clock get date] 0 3] . [:pick [/system clock get date] 4 6] . ".backup");

:log info "BACKUP SCRIPT: Creating new Full Backup file...";

/system backup save name=$BackupFile;

:delay 2;

:log info "BACKUP SCRIPT: Sending Full Backup file via E-mail...";

/tool e-mail send from="" to=$ToAccount server=$smtpserv \

port=587 user=$EmAccount password=$Pass start-tls=yes file=$BackupFile \ ### <<--Вписываем порт который слушает smtp сервер, а также tls=yes/no

subject=("$sysname Full Backup (" . [/system clock get date] . ")") \

body=("$sysname full Backup file see in attachment.\nRouterOS version: \

$sysver\nTime and Date stamp: " . [/system clock get time] . " " . \

[/system clock get date]\n "by Fedorov Vitaly site: tranz-it.net");

:delay 5;

:local ExportFile ("$sysname-backup-" . \

[:pick [/system clock get date] 7 11] . [:pick [/system \

clock get date] 0 3] . [:pick [/system clock get date] 4 6] . ".rsc");

:log info "BACKUP SCRIPT: Creating new Setup Script file...";

/export file=$ExportFile;

:delay 2;

:log info "BACKUP SCRIPT: Sending Setup Script file via E-mail...";

/tool e-mail send from="" to=$ToAccount server=$smtpserv \

port=587 user=$EmAccount password=$Pass start-tls=yes file=$ExportFile \### <<--Вписываем порт который слушает smtp сервер, а также tls=yes/no

subject=("$sysname Setup Script Backup (" . [/system clock get date] . \

")") body=("$sysname Setup Script file see in attachment.\nRouterOS \

version: $sysver\nTime and Date stamp: " . [/system clock get time] . " \

" . [/system clock get date]\n "by Fedorov Vitaly site: tranz-it.net");

:delay 5;

:log info "All System Backups emailed successfully.";

:log info "Backuping completed.";

:log info "==========================================================";


Данный скрипт уже адаптирован по почтовый сервер gmail.com, но очень легко его подогнать под другие почтовые сервера, я его перенастраивал под yandex.ru, возможно подкорректировав параметры в скрипте использовать корпоративный почтовый сервер.

После вписывания своих данных в скрипт, а также отладки на отправку бекапа на мыло, добавляем его в scheduler Mikrotik

System -> Scheduler -> [+]

Пишем имя шедулера, а в On Event пишем: /system script run backup_to_email

В поле интервал выставляем интервал запуска бекапа и отправки на почту, я ставлю порядка 7 дней, т.е. 1 раз в неделю, этого достаточно, можно выставить и 14 дней, все зависит от количества сделанных изменений за это время.

Данный скрипт создает два вида бекапа, это файл .backup и файл .rsc  Оба файла имеют маленький размер, порядка 150-250 килобайт. Думаю многим пригодиться такой вид системного резервного копирования настроек маршрутизатора Mikrotik. Так же скрипт можно переработать и сделать, например, оповещение на почту о переключении интернет каналов или проблем в сети.

Пользуйтесь.