Я написал свой скрипт для создания бинарной и текстовой резервной копии с hostname, версией rOS, отметкой времени и прочим. Скрипт сохраняет бэкап в указанном пути на «disk1», который у меня — 32 ГБ USB-флешка, отформатированная в ext через RouterOS. Файлы создаются, если хватает места на системном FLASH-диске (SYS-DISK). Иначе можно «поженить» маршрутизатор, даже если назначена внешняя флешка или другой диск, отличный от внутренней флеш-памяти! По умолчанию свободного места должно быть не меньше 1 МБ (настройка в «:local freeStoreThresh 1024;»). Скрипт выводит лог-сообщения для контроля, его можно запускать минимум раз в сутки с возможностью увеличить частоту по желанию.
Надеюсь, кому-то пригодится.
«Документация» в комментариях:
:log info "primulus_CONFBKB::dailyConfigBackupD START";
# Получаем отметку времени
:local dSysDateTime [/system clock get date]
:local dDay [:pick $dSysDateTime 4 6]
:local dMon [:pick $dSysDateTime 0 3]
:local dYear [:pick $dSysDateTime 7 11]
# Получаем версию rOS
:local rosversionFull [/system resource get version]
:local rosversion [:pick [/sys reso get version] 0 [[:find [/sys reso get version] " "]]]
# Получаем свободное место в КБ
:local freeStoreK [:tonum [([/sys reso get free-hdd-space]/1024)]]
# Задаём порог свободного места в КБ
:local freeStoreThresh 1024;
# Формируем путь и имя файла для бэкапа
:local sBakPath "disk1/backups/configs/automated/";
:local sStamp "$dYear-$dMon-$dDay";
:local sHostname [/system identity get name];
:local sBakFileName "$sBakPath$sHostname_v$rosversion_$sStamp.backup";
:local sBakScrName "$sBakPath$sHostname_v$rosversion_$sStamp.scr";
:log warning "primulus_CONFBKB::Free Disk is --- $freeStoreK KB / routerOS $rosversionFull";
# Проверяем, достаточно ли места на FLASH SYSTEM DISK
# FLASH SYS-DISK используется для предварительного кэширования/создания файлов, которые потом перемещаются в папку бэкапов после создания
:if ( $freeStoreK >= $freeStoreThresh ) do={
:log info "primulus_CONFBKB::SYSTEM Config BACKUP --> $sBakFileName";
/system backup save name=$sBakFileName;
/export verbose show-sensitive file=$sBakScrName;
:log info "primulus_CONFBKB::dailyConfigBackupD DONE";
} else={
# Резервная копия НЕ создана, в лог выведена ошибка! Ну да, так и надо.
:log error "primulus_CONFBKB::dailyConfigBackupD NOT DONE! Free Storage LOW!";
}