0

Mikrotik: резервное копирование настроек (Backup)

Бэкап – наше все, дабы можно было восстановить настройки легким движением руки в случае экстренного случая (смерть железки, сброс настроек и т.д.)

Mikrotik имеет два вариант бэкапа – в бинарном виде и в виде текстового файла. Каждый способ имеет свои преимущества и недостатки.

Бинарный тип: совершенно непонятно что внутри, но зато сохраняются пользователи роутера.

Текстовый тип: легко читаем, но не выгружаются пользователи, можно бэкапить в любую CVS

Ну а если нет серебряной пули – можно комбинировать оба способа.

Для безопасности бэкап можно шифровать – например, для сохранности логинов/паролей.

Oxidized

Самый предпочтительный способ бэкапа – использовать специализированное ПО, например Oxidized: https://github.com/ytti/oxidized

Из плюсов: можно смотреть diff для понимания что именно и когда изменялось. Из минусов: это отдельное ПО, которое нужно где-то устанавливать и настраивать.

Бинарный бэкап

Files, нажать Backup, ввести имя, нажать Backup

> /system backup save name=backup.backup

Бинарное восстановление

Files, нажать Restore, выбрать из списка, нажать Restore

> /system backup load name=backup.backup

Текстовый бэкап

> export file=text-backup.cfg

Текстовое восстановление

> import file-name=text-backup.cfg

Автоматическое создание бэкапов

Взято с https://github.com/dntsk/mikrotik-backup и допилено (по-моему глупо подключаться по ssh а файлы бэкапа копировать wget’ом – гораздо правильнее использовать scp)

Скрипт делает бинарный и текстовый бэкапы.

Для использования нужно:

  • Зарегистрировать на mikrotik пользователя
  • Загрузить публичный ключ и назначить его пользователю
#!/bin/bash
routers=( 192.168.1.1 192.168.2.1 192.168.3.1 )
backupdir="/home/backup/mikrotik"
privatekey="/root/.ssh/id_dsa"
login="user"
# passwd="pa$Sw0rd"
fulldir="${backupdir}/`date +%Y`/`date +%m`/`date +%d`"
 
for r in ${routers[@]}; do
    cmd_backup="/system backup save name=${r}.backup"
    ssh ${login}@$r -i $privatekey "${cmd_backup}" > /dev/null
    cmd_backup="/export file=${r}"
    ssh ${login}@$r -i $privatekey "${cmd_backup}" > /dev/null
    sleep 5
    mkdir -p $fulldir
    scp -i $privatekey ${login}@${r}:/${r}.backup ${fulldir}
    scp -i $privatekey ${login}@${r}:/${r}.rsc ${fulldir}
    ssh ${login}@$r -i $privatekey "/file remove \"${r}.backup\""
    ssh ${login}@$r -i $privatekey "/file remove \"${r}.rsc\""
done