Резервное копирование MikroTik

Как гласит народная мудрость: существует два типа системных администраторов, те, которые еще не делают backup и те, кто уже его делает. Для устройств MikroTik иметь резервную копию с последними настройками тоже актуально т.к. устройство может выйти из строя или самый распространенный случай, когда хочешь сделать какие-то настройки по-быстрому, но что-то пошло не так.
Резервные копии в MikroTik бывают двух видов:
- Backup самого устройства, хранит в себе все настройки устройства, пользователей, пароли, сертификаты. Восстановление возможно только на том устройстве, на котором оно было создано. Восстановление на другом устройстве такой же модели возможно, но не желательно, надо понимать, что восстановятся абсолютно все настройки, такие как MAC адреса интерфейсов, это может привести к тому, что в сети появится два одинаковых устройства со всеми вытекающими. Восстановление на другом устройстве не гарантируется и нежелательно, ввиду разных конфигураций устройств и разном железе.
- Экспорт конфигурации. Экспортируются все настройки устройства кроме паролей пользователей, информации о железе (например, MAC адресов), установленных и выпущенных сертификатов. Файл формируется в виде скрипта, который можно выполнить на другом устройстве MikroTik. При запуске на другом устройстве не схожей конфигурации возможны появления ошибок, таких как некоторые интерфейсы не будут найдены.
Первый вариант подходит для полного восстановления состояния устройства на момент создания резервной копии. Отлично подходит для создания точки отката при настройке устройства. При создании есть возможность зашифровать backup с помощью пароля.
Второй вариант подходит если необходимо перенести конфигурацию на другое устройство, не обязательно такой же конфигурации. Отлично подходит для настройки устройств с типовой конфигурацией или замене одного устройства на другое.
В идеале создавать резервные копии лучше перед началом настройки устройства и при окончании настройки, но это мало кто делает и может привести к тому, что после внесения очередных изменений в устройство необходимо будет его восстановить.
Создание резервных копий вручную
#1. Здесь все просто, в программе WinBox
переходим в меню Files
и нажимаем кнопку Backup
, в открывшемся окне в поле Name
вводим название для файла резервной копии, по необходимости в поле Password
вводим пароль, которым будет зашифрован файл, в поле Encryption
выбираем тип шифрования. Что бы файл не шифровался необходимо выбрать опцию Don't Encrypt
, если данная настройка не будет выбрана и не введен пароль для шифрования, то файл будет зашифрован паролем текущего пользователя.

Команда для создания резервной копии:
/system backup save name=backup_RBD52G password=1234567890
Файл резервной копии создается в корне файловой системы с расширением .backup.
На устройствах с малым количеством flash памяти все файлы, находящиеся в корне при перезагрузке устройства, удаляются, в том числе и файлы backup, во избежание утери файла его необходимо перенести в любую папку.

Для создания файла резервной копии сразу в папке необходимо указать полный путь:
/system backup save name=flash/backup_RBD52G password=1234567890
ВНИМАНИЕ! Если указанный файл резервной копии уже существует, то он будет перезаписан без предупреждения.
#2. Для сохранения текущей конфигурации в файл используется команда export
вводимая в терминале:
export file=config_RBD52G
Выгруженная конфигурация сохраняется в файл с расширением .rsc
.

Сохраненный файл конфигурации в корне файловой системы, так же, как и остальные файлы, на устройствах с малой flash памятью удается при перезагрузке, поэтому его необходимо перенести или сразу создавать в папке.
Для надежности сохранения важных резервных копий сохраняем их на компьютере или другом надежном месте, выделив файл в WinBox и перетащив его в нужную папку компьютера или другого хранилища.
Создание резервных копий по расписанию
Создаем скрипт выполняющий резервную копию устройства и файл с выгруженной конфигурацией. Т.к. резервных копий много не бывает, то, если файлы уже существуют, они будут переименованы. Что бы не плодить много файлов резервных копий на устройстве, особенно это актуально для устройств с небольшой flash памятью, файлы, которые уже были переименованы во время предыдущего выполнения скрипта будут удалены.
К сожалению, в предлагаемом устройством наборе команд нет команды копирования или переименования файлов, но файлы можно копировать под новым именем через FTP и последующим удалением оригинала.
Включаем сервис FTP, если он отключен, в меню IP -> Services.
Для безопасности сервиса в поле Available From
или в Firewall указываем с каких адресов можно заходить на FTP, обязательно указываем loopback адрес 127.0.0.1, для доступа backup скрипта и возможности копирования. Способ ограничения доступа (средствами сервиса FTP или Firewall) каждый выбирает сам лучший вариант для себя.

В меню System -> Users
на вкладке Groups
создаем группу доступа к FTP сервису, в параметрах Policies
указываем только ftp
, read
и sensitive
.

В том же меню на вкладке Users
создаем пользователя для доступа к FTP, группу доступа Group
выбираем созданную ранее.

Файлы резервных копий будут храниться в папке backup
, создать папку средствами MikroTik невозможно, поэтому открываем проводник на компьютере, создаем папку и перетаскиваем ее в раздел Files
при помощи Drag and Drop.
В меню System -> Scripts
создаем новый скрипт. В поле Name
вводим наименование скрипта, в поле Source
сам скрипт:
:local FILENAMEBACKUP; :local FILENAMEBACKUPRSC; :local FILENAMEBACKUPprev; :local FILENAMEBACKUPRSCprev; :local FTPUSERNAME; :local FTPPASSWD; :set FILENAMEBACKUP "flash/backup/backup_RBD52G.backup"; :set FILENAMEBACKUPRSC "flash/backup/backup_RBD52G.rsc"; :set FILENAMEBACKUPprev "$FILENAMEBACKUP.0"; :set FILENAMEBACKUPRSCprev "$FILENAMEBACKUPRSC.0"; :set FTPUSERNAME "ftpuser"; :set FTPPASSWD "ftppasswd"; :if ([:len [/file find name=$FILENAMEBACKUPprev]] > 0) do={ /file remove $FILENAMEBACKUPprev; } :if ([:len [/file find name=$FILENAMEBACKUP]] > 0) do={ /tool fetch address=127.0.0.1 mode=ftp user=$FTPUSERNAME password=$FTPPASSWD src-path=$FILENAMEBACKUP dst-path=$FILENAMEBACKUPprev; /file remove $FILENAMEBACKUP; } :if ([:len [/file find name=$FILENAMEBACKUPRSCprev]] > 0) do={ /file remove $FILENAMEBACKUPRSCprev; } :if ([:len [/file find name=$FILENAMEBACKUPRSC]] > 0) do={ /tool fetch address=127.0.0.1 mode=ftp user=$FTPUSERNAME password=$FTPPASSWD src-path=$FILENAMEBACKUPRSC dst-path=$FILENAMEBACKUPRSCprev; /file remove $FILENAMEBACKUPRSC; } /system backup save name=$FILENAMEBACKUP; /export file=$FILENAMEBACKUPRSC;
Первая часть скрипта, начинающаяся с :local
- объявление переменных.
Вторая часть, начинающаяся с :set
- присваивание значений объявленным переменным, где:
- FILENAMEBACKUP - полный путь к файлу резервной копии устройства.
- FILENAMEBACKUPRSC - полный путь к файлу выгружаемой конфигурации.
- FILENAMEBACKUPprev - полный путь к файлу резервной копии устройства выполненной ранее.
- FILENAMEBACKUPRSCprev - полный путь к файлу выгружаемой конфигурации выполненной ранее.
- FTPUSERNAME - пользователь с доступом к FTP серверу.
- FTPPASSWD - пароль пользователя FTP.
Далее ищется файл с расширением .0
сделанный две резервные копии назад и удаляется если найден, затем ищется файл резервной копии и через FTP сервер создается его копия с другим именем, а оригинал удаляется. Аналогичные действия делаются с файлами конфигурации. В конце выполняется резервное копирование.

Нажимаем кнопку Apply
для сохранения скрипта и кнопку Run Script
для запуска и проверки выполнения. После выполнения в меню Files
должно появиться два свежих файла резервной копии. Нажимаем кнопку Run Script
еще раз и предыдущие файлы должны переименоваться в файлы с расширением .0
и создаться два свежих файла резервной копии.

В меню System -> Scheduler
создаем расписание для запуска скрипта. В поле Name
пишем название задания, в поле Start Tim
e время выполнения, в поле Interval
периодичность запуска расписания, например, резервная копия будет создаваться каждые 7 дней. В поле On Event
прописываем запуск созданного ранее скрипта.
/system script run scr.backup_RBD52G

Нажимаем кнопку OK
, проверяем что расписание работает правильно.
Для повышения надежности хранения резервных копий созданные файлы рекомендуется скопировать в еще одно место хранения. Так как на MikroTik ранее был активирован сервис FTP, то для доступа к файлам backup можно использовать его. Пример скрипта для Unix систем, создадим файл /usr/local/scripts/copy_mikrotik_backups
:
$ sudo touch /usr/local/scripts/copy_mikrotik_backups $ sudo chmod 774 /usr/local/scripts/copy_mikrotik_backups
Заполним его скриптом:
#!/bin/sh # Папка для хранения backup'ов backup_storage_dir="/var/backups/userbackups" # Пользователь и пароль для доступа к устройству mikrotik_ftp_user="ftpuser" mikrotik_ftp_pass="ftppasswd" # Адрес устройства device_addr="192.168.22.1" # ========> # Если временная папка существует, то удаляем if [ -d $backup_storage_dir/$device_addr ] then rm -rf $backup_storage_dir/$device_addr fi # Копирование данных wget -P $backup_storage_dir -r "ftp://"$mikrotik_ftp_user:$mikrotik_ftp_pass@$device_addr/"flash/backup" # Архивирование backup_arch_filename=$device_addr"-"`date +%Y-%m-%d`.tar.gz tar -cvzpf $backup_storage_dir/$backup_arch_filename $backup_storage_dir/$device_addr # Установка прав chown nobody:nobody $backup_storage_dir/$backup_arch_filename chmod 664 $backup_storage_dir/$backup_arch_filename # Удаляем временную папку rm -rf $backup_storage_dir/$device_addr exit 0
В файл cron
добавляем расписание выполнения созданного скрипта:
00 01 * * 5 /usr/local/scripts/copy_mikrotik_backups >> /dev/null
Восстановление устройства из резервной копии
Для восстановления MikroTik из резервной копии устройства копируем файл в раздел Files, выделяем его и нажимаем кнопку Restore. Помним, что backup предназначен только для того устройства, на котором оно создавалось, восстановление на другом устройстве не желательно и не гарантировано.

Для восстановления устройства из файла конфигурации предварительно необходимо сбросить настройки в меню System -> Reset Configuration. По необходимости не забываем сохранить список пользователей. Импорт файла конфигурации:
import file-name=flash/backup/backup_RBD52G.rsc
Сброс настроек с сохранением списка пользователей и последующим импортом конфигурации из файла одной командой:
system reset-configuration keep-users=yes no-defaults=yes skip-backup=yes run-after-reset=flas h/backup/backup_RBD52G.rsc
Если необходимо восстановить конфигурацию на другом устройстве с отличной конфигурацией железа, то восстановление лучше делать частями, копируя необходимые команды из файла и вставляя их в терминале.