вторник, 30 декабря 2025 г.

Собираем бекапы микротика

Ранее была заметка про бекапы на почту. Наверно с тех же пор я и забил их собирать, потому что 

- письма фильтруешь и складываешь в отдельную папку автоматом помечая прочитанными 

- если что то поломалось в скрипте  - ты все равно  узнаешь об этом довольно поздно 

Как идея складывать конфиги или бекапы или и то и то локально ( просто иметь последний за вчера ) а при необходимости собирать и ротировать их на каком нибудь сервачке или где нибудь в облаке 

для бекапа достаточно использовать простой скрипт в планировщике 

   /file remove asd.backup
   /system backup save dont-encrypt=yes name=asd; 

для экспортта конфига аналогично

    /file remove asd.rsc;
    /export compact file=asd.rsc;

надо учесть что в случае бекапа - погуглить параметры dont-encrypt,  encryption и password, а в случае выгрузки конфига - на hide-sensitive - это может быть полезно для скрытия данных в конфиге или шифрования самого фала ( ну либо не использовать если не боитесь утечки / действуете в закрытом контуре или шифруете  на следующем шаге) 

но если файла по какому то случаю нет - то получим ошибку no such item  - лучше проверить - тут немного модернизируем (логика простая - если файл есть -удалить и сделать бекап если файла нет - просто создать  как вариант при первом проходе планировщика )

:local fileName1 "asd.backup";
:if ([:len [/file find name=$fileName1]] > 0) do={
    /file remove $fileName1;
    /system backup save dont-encrypt=yes name=asd; 
    :log info ($fileName1 . " removed successfully.");
} else={
    :log info ($fileName1 . " not found, create new file.");
    /system backup save dont-encrypt=yes name=asd; 
}
:local fileName2 "asd.rsc";
:if ([:len [/file find name=$fileName]] > 0) do={
    /file remove $fileName2;
    /export compact file=asd.rsc;
    :log info ($fileName2 . " removed successfully.");
} else={
    :log info ($fileName2 . " not found, create new file.");
    /export compact file=asd.rsc;
}

в я забираю с самого сервачка обычным wget вот таким скрикптом (думаю не стоит объяснять что логин и пароль надо поменять на свои и пользователь такой должен быть - как вариант можно создать определенного пользователя и ограничить его только с определенного адреса самого сервера на случай утечки данных) 

#!/bin/bash
cd /mnt/1/mikrotik_bac
my_array=("192.168.89.1" "192.168.89.11" "192.168.89.12" "192.168.89.166")
user="USERMANE"
pass="PASSWORD"
for i in "${my_array[@]}"; do
 wget -O $i.backup ftp://$user:$pass@$i/asd.backup
 wget -O $i.rsc ftp://$user:$pass@$i/asd.rsc
done

тут будет не плохо добавить проверку доступности самого микрота - это делается доп циклом и следующим скриптом как тут

ping -c 1 -w 5 37.235.***.*** &>/dev/null
if [ $? -ne 0 ] ; then
echo "inet down Oo exit"
else

итоговый скрипт 

#!/bin/bash
cd /mnt/1/mikrotik_bac
date=`date "+%Y-%m-%d"`
my_array=("192.168.89.1" 
"192.168.89.11" "192.168.89.12" "192.168.89.166")
user="teminalk0"
pass="Oorah7oo"
for i in "${my_array[@]}"; do
ping -c 1 -w 5 $i &>/dev/null
 if [ $? -ne 0 ] ; then
 echo "mikbac2.sh:  $date host $i is  down Oo exit" &&  logger "mikbac2.sh:  $date host $i down Oo exit"
 else
 wget -O $i.backup ftp://$user:$pass@$i/asd.backup
 wget -O $i.rsc ftp://$user:$pass@$i/asd.rsc
 fi
done

далее папку можно либо запихать в системный логротейт ниже пример конфигурации ( положить в  /etc/logrotate.d/mikrotik и поднастроить под свои нуждики )  в примере дл файлов бекапа и конфигов если нужны только одни - оставить нужное 

/mnt/1/mikrotik_bac/*.backup {
    su filalex filalex
    daily
    rotate 70
    maxage 150
    delaycompress
    compress
}
/mnt/1/mikrotik_bac/*.rsc {
    su filalex filalex
    daily
    rotate 70
    maxage 150
    delaycompress
    compress
}

либо выполнить внутри скрипта ротацию принудительно командой 

logrotate -f /etc/logrotate.d/mikrotik 

на этом все =) при появлении нового роутера в сетке
- добавить пользователя с паролем 
- сделать задачу в планировщике (не забыв поставить период 1 день конечно)
- как вариант скопировать код в скрипты и разово запустить для проверки 
- на серер добавить в массив новый адрес 



Комментариев нет:

Отправить комментарий