Резервная копия Mikrotik на USB флешку

Всем привет!!!

Давайте я расскажу как делать резервную копию конфигурации Mikrotik на USB флешку и как сделать автоматическое удаление старых версий, что бы флешка не пере заполнилась со временем.

В интернете есть много способов как делать резервную копию конфигурации Mikrotik. Кто-то делает ее на почту, кто-то в телеграм. Я же пошел другим путем – своим: делать резервную копию на usb флешку. Для начала думал задача простая и я легко найду подходящий скрипт для резервной копии и удаления старых файлов, но оказалось нет. Перерыв кучу материалов я так и не нашел рабочего способа. Вот почему выходит данная статья.

Делал скрипты я не сам. Мне помогал ИИ, но его скрипты не работали. Оказывается ChatGPT не умеет делать рабочие скрипты для Mikrotik. В результате мне помогал один очень хороший человек, который на этих микротиках “собаку съел”. За что ему огромное спасибо. Дальше без воды, все по делу.

Исходные данные:

  • Mikrotik RB5009
  • MikrotikOS 7.16.1
  • USB флешка на 16ГБ

Вставляем USB флешку в Mikrotik и форматируем ее в ext4. Почему в ext4? Все просто. Во-первых, эта файловая система не подвержена фрагментации. Во вторых, флешка может пригодиться для других нужд, например для docker контейнеров, а им нужна именно ext4 файловая система. Так написано в руководстве Mikrotik.

Теперь открываем File и в usb1-part1 создаем директорию backup. Тут и будут лежать наши резервные копии конфигурации Mikrotik

Затем открываем System > Script и создаем новый с таким содержимым:

:local currentTime [/system clock get time]
:local currentDate [/system clock get date]
:local backupFile "usb1-part1/backup/backup-$currentDate-$currentTime.backup"
:local backupTXT "usb1-part1/backup/backup-$currentDate-$currentTime.txt"

 /system backup save name=$backupFile
 /export show-sensitive file=$backupTXT

Немного поясню что к чему. Первые две команды нужны для вычисления даты и времени, которые потом будут в имени файла фигурировать. Затем две команды указывают куда сохранять резервные копии и с каким именем. А вот сами резервные копии две. Та что Backup это встроенный механизм в mikrotik для резервной копии конфигурации. Из этой резервной копии можно восстановить конфигурацию, но только на этом же устройстве. А я хочу что бы резервная копии была на случай выхода из строя самого устройства. Ну типа переставил флешку в новый роутер и восстановил. С родным backup так не получится.

Поэтому я дополнительно в скрипте делаю резервную копию в текстовый файл rsc. Опция show-sensitive заставляет заносить в файл все пароли и секретные ключи в открытом виде. Это поможет в будущем восстановиться из этой резервной копии полностью, не заставляя ваших клиентов вносить изменения в их клиентское ПО. Но как вы понимаете, в этом случаи резервная копия менее конфиденциальная. Не давайте ее кому попало.

Затем нужно запланировать выполнение скрипта по расписанию. Для этого откройте System>Schedule и создайте новую задачу. На начальном этапе я делаю резервную копию каждый день в 3 часа ночи. Возможно в будущем я буду делать это реже.

Теперь нужно как-то позаботиться что бы флешка не перезаполнилась. Для этого делаем еще один скрипт:

Напомню, что моя версия MikrotikOS 7.16.1 В других версиях этот скрипт может работать не корректно.

{
   :local daysAgo 30;
   :local filter "usb1-part1/backup/";

   :local curDate [ /system clock get date ];
   :local curMonth [ :pick $curDate 5 7 ];
   :local curDay [ :pick $curDate 8 10 ];
   :local curYear [ :pick $curDate 0 4 ];
   :foreach i in=[/file find type=backup] do={
      :local fileDate [/file get number="$i" last-modified]
      :set fileDate [ :pick $fileDate 0 11 ];
      :local fileMonth [ :pick $fileDate 5 7 ];
      :local fileDay [ :pick $fileDate 8 10 ];
      :local fileYear [ :pick $fileDate 0 4 ];
      :local sum 0;
      :set sum ($sum + (($curYear - $fileYear)*365));
      :set sum ($sum + (($curMonth - $fileMonth) * 30));
      :set sum ($sum + ($curDay - $fileDay));
      :if ($sum >= $daysAgo && [/file get number="$i" name]~"$filter") do={
         /file remove $i;
      }
   }
   :foreach i in=[/file find type=script] do={
      :local fileDate [/file get number="$i" last-modified]
      :set fileDate [ :pick $fileDate 0 11 ];
      :local fileMonth [ :pick $fileDate 5 7 ];
      :local fileDay [ :pick $fileDate 8 10 ];
      :local fileYear [ :pick $fileDate 0 4 ];
      :local sum 0;
      :set sum ($sum + (($curYear - $fileYear)*365));
      :set sum ($sum + (($curMonth - $fileMonth) * 30));
      :set sum ($sum + ($curDay - $fileDay));
      :if ($sum >= $daysAgo && [/file get number="$i" name]~"$filter") do={
         :log info $i;
         /file remove $i;
      }
   }
}

Поясню за этот скрипт. В самой первой переменной устанавливаются дни для хранения резервной копии. Все что старше будет удаляться этим скриптом в папке с резервной копией backup. Вы можете изменить количество дней по своему усмотрению. А дальше добавьте этот скрипт в планировщик, ну например раз в неделю или раз в месяц, что бы он чистил старые резервные копии.

Ну вот и все. Как итог у вас на флешке всегда лежат резервные копии. Флешку можно переставить из неисправного Mikrotik в исправный и восстановить конфигурацию. Либо просто скачать резервную копию себе на ПК.

Теперь вы знаете как я делаю Резервная копия Mikrotik на USB флешку. А как вы делаете?

Подписаться
Уведомить о
guest
12 Комментарий
Старые
Новые
Межтекстовые Отзывы
Посмотреть все комментарии