0

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

07.02.2024

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

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

Свежие комментарии

Подписка

Лучшие статьи


Fatal error: Uncaught Error: Call to a member function have_posts() on null in /home/host1867038/the-devops.ru/htdocs/www/wp-content/themes/fox/inc/blog.php:411 Stack trace: #0 /home/host1867038/the-devops.ru/htdocs/www/wp-content/themes/fox/widgets/latest-posts/widget.php(257): fox56_blog_grid(NULL, Array) #1 /home/host1867038/the-devops.ru/htdocs/www/wp-content/themes/fox/widgets/latest-posts/register.php(33): include('/home/host18670...') #2 /home/host1867038/the-devops.ru/htdocs/www/wp-includes/class-wp-widget.php(394): Wi_Widget_Latest_Posts->widget(Array, Array) #3 /home/host1867038/the-devops.ru/htdocs/www/wp-includes/widgets.php(845): WP_Widget->display_callback(Array, Array) #4 /home/host1867038/the-devops.ru/htdocs/www/wp-content/themes/fox/inc/single.php(417): dynamic_sidebar('sidebar') #5 /home/host1867038/the-devops.ru/htdocs/www/wp-content/themes/fox/inc/single.php(136): fox56_single_sidebar() #6 /home/host1867038/the-devops.ru/htdocs/www/wp-content/themes/fox/inc/single.php(7): fox56_single_inner() #7 /home/host1867038/the-devops.ru/htdocs/www/wp-content/themes/fox/single.php(23): fox56_single() #8 /home/host1867038/the-devops.ru/htdocs/www/wp-includes/template-loader.php(106): include('/home/host18670...') #9 /home/host1867038/the-devops.ru/htdocs/www/wp-blog-header.php(19): require_once('/home/host18670...') #10 /home/host1867038/the-devops.ru/htdocs/www/index.php(17): require('/home/host18670...') #11 {main} thrown in /home/host1867038/the-devops.ru/htdocs/www/wp-content/themes/fox/inc/blog.php on line 411