Резервное копирование Mikrotik
Содержание
Делюсь скриптами резервного копирования конфигурации Mikrotik, а также их выполнения и выгрузки по SSH.
Резервное копирование
Скрипт ручного копирования для RouterOS 7:
# Backup and export configuration
# Script needs in policies: read, write, test, ftp, policy, sensitive (opt).
# Get backup name
:local date [/system clock get date]
:local year [:pick $date 7 11]
:local month [:pick $date 0 3]
:set month [:tostr ([:find "janfebmaraprmayjunjulaugsepoctnovdec" $month]/3+1)]
:if ([:tonum $month]<10) do={
:set month "0$month"
}
:local day [:pick $date 4 6]
:local routerName [/system identity get name]
:local backupName "$routerName-$year-$month-$day"
# Backup and export
/system backup save dont-encrypt=yes name=$backupName
/export terse show-sensitive file=$backupName
Скрипт сохраняет бинарную и текстовую резервные копии в формате identity-yyyy-mm-dd.
Замечание
В RouterOS 6 логика экспорта чувствительных данных была обратная: по умолчанию экспортировалось всё, а для сокрытия чувствительных данных использовался флаг
hide-sensitive.Добавляем скрипт в ROS:
/system script add name=backup dont-require-permissions=no \
policy=ftp,read,write,policy,test,sensitive \
source="# Backup and export configuration\r\
\n:local backupName \"backup\"\r\
\n/system backup save dont-encrypt=yes name=\$backupName\r\
\n/export terse show-sensitive file=\$backupName"
Удалённое подключение
Подготовка
Создаём группу:
/user/group add name=backup \
policy=ssh,ftp,read,write,policy,test,sensitive,!local,!telnet,!reboot,!winbox,!password,!web,!sniff,!api,!romon,!rest-api
Добавляем пользователя:
/user add name=bu group=backup password=pwd
Предварительно загружаем файл публичного RSA-ключа и добавляем его пользователю:
/user/ssh-keys import user=bu public-key-file=id_rsa.pub
Замечание
RouterOS 6 не позволяет работать с меню, как с каталогами ФС, поэтому пишем по-старому:
/user group add
/user ssh-keys import
Подключение и загрузка
Удалённое выполнение скрипта резервного копирования и загрузка резервных копий в текущий каталог:
ssh "r1.example.com" "/system/script run" "backup"
scp "r1.example.com:backup*" "./"
Замечание
Для подключения к RouterOS 6 требуется указать флаг
-o PubkeyAcceptedKeyTypes=+ssh-rsa.