Централизованный сбор бекапов с Mikrotik

Posted by

Как обычно бывает, думаешь что у тебя есть резервная копия конфигурации, ведь совсем недавно доработал свой материал по осуществлению бекапирования конфигурации с уведомление о завершении на E-mail. Да, отчеты о завершении приходят, бекапы конфигов при заходе по адресу месторасположения присутствует, вроде как все хорошо. Но вот в чем загвоздка, у меня в напарниках новый человек и как я уже понял, что он даже на минимальном уровне не разбирается в них, коллега которого я попросил выйти ему помочь в свой выходной столкнулся с тем, что под Windows 7 при обращении к файловому ресурсу на котором лежат бекапы не читаемы в привычном исполнении. В виде файлов в имени которых почему-то смесь букв (т. е. Абракадабра), т.е нечитаемы, лишь по расширению и дате изменения видно, что бекапы все же успешно создаются.

Файлы под Windows 7 ничитаемы, присутствует символ двоеточия

При более внимательном осмотре (пока помощь Google не нужна, лучше попытаться собрать самим всю имеющуюся информацию) файла под рабочем системой (Ubuntu 12.04.5 Desktop amd64 Gnome Classic) имя файла в правильном виде и из него понятно откуда он и на какую дату и время, а также присылаемый файл вложением такой же.

Пример файла из вложения: Router_Balashiha_jul-20-2016_11:12:35.backup 180КБ

А если подключиться к файловому хранилищу, у меня оно построено (контора денег не дает на что-то более серьезное) на Synology DS414 по SSH, то:

aollo@system:~$ ssh -l admin 10.9.9.162

admin@10.9.9.162’s password:

BusyBox v1.16.1 (2015-11-12 17:57:27 CST) built-in shell (ash)

а вот через Bash имена файлов видно в нормальном формате:

fileserverbal> ls /volume1/MikrotikBackup/*_jul*.backup -t | head -n 10

/volume1/MikrotikBackup/Router_Balashiha_jul-20-2016_11:12:36.backup

/volume1/MikrotikBackup/SXT-Priemka_jul-20-2016_06:55:24.backup

/volume1/MikrotikBackup/Spartak-POE_jul-20-2016_01:00:00.backup

/volume1/MikrotikBackup/Router_Balashiha_jul-19-2016_18:44:20.backup

/volume1/MikrotikBackup/Router_Balashiha_jul-19-2016_1w.backup

/volume1/MikrotikBackup/switchsparta3_jul-19-2016_1w.backup

/volume1/MikrotikBackup/switchsparta4_jul-19-2016_1w.backup

/volume1/MikrotikBackup/switchsparta2_jul-19-2016_1w.backup

/volume1/MikrotikBackup/Switchsparta1_jul-19-2016_1w.backup

/volume1/MikrotikBackup/switchbal4_jul-19-2016_12:43:01.backup

Такое ощущение, что Windows не понимает в имени файла символ двоеточия, в общем по этой заметке:  где я добавил возможность сохранять бекап и на почту хорошо отрабатывает только второе, а первое складирование на FTP работает только под Ubuntu корректно при чтении имен файлов.

Странно если обратиться из Windows к FTP ресурсу, то все имена файлов корректны:

  • ftp://10.9.9.162
  • Login: ekzorchik
  • Pass: 712mbddr@

При просмотре через FTP файлы читаемы

, а вот через SMB: \\10.9.9.162\MikrotikBackup в именовании файлов кракозяблы.

Значит нужно переработать создание резервных копий с Mikrotik, еще раз поручать им это дело я уже не могу ручаться, а потому я беру станцию на которой у меня крутится DokuWiki (в Вашем случае это может быть любая Ubuntu система) и вот с нее уже буду запускать скрипт который пробежится по каждому Mikrotik‘у, сделает бекап и положит его на файловое хранилище Synology DS414:

aollo@srv-dokuwiki:~$ sudo apt-get install cifs tree -y

aollo@srv-dokuwiki:~$ sudo mkdir /media/file

aollo@srv-dokuwiki:~$ sudo nano /etc/fstab

//10.9.9.162/MikrotikBackup /media/file cifs iocharset=utf8,uid=1000,gid=1000,username=aollo,domain=polygon.local,password=712mbddr@ 0 0

, где

uid=1000

gid=1000 — это из текущей системы srv-dokuwiki полученные путем ввода команды:

aollo@srv-dokuwiki:~$ id

uid=1000(aollo) gid=1000(aollo) groups=1000(aollo),4(adm),24(cdrom),27(sudo),30(dip),46(plugdev),110(lpadmin),111(sambashare)

aollo@srv-dokuwiki:~$ sudo mount -a

aollo@srv-dokuwiki:~$ df -h | grep file

//10.9.9.162/MikrotikBackup 11T 4.6T 6.4T 42% /media/file

Теперь нужно для каждого микротика настроить авторизацию по публичному ключу с данного сервера (.4 Server amd64), чтобы этот пункт сделать следует вооружиться вот этой вот заметкой.

После того, как шаги авторизации с данной Ubuntu системы проделаны и проверены, уже можно переходить к составлению вот такого вот скрипта.

Вношу в файл IP адреса всех Микротиков бекап которых мне нужно делать:

aollo@srv-dokuwiki:~$ nano mlist

10.9.9.104

10.9.9.72

10.9.9.63

и т.д

aollo@srv-dokuwiki:~$ mkdir /media/file/BALASHIHA

aollo@srv-dokuwiki:~$ mkdir /media/file/SPARTA

aollo@srv-dokuwiki:~$ sudo nano /etc/script/bbackup

#!/bin/bash

mtlist=/home/aollo/blist

MTBACKUPDIR=/media/file

MTBACKUPUSER=admin

MTPATH=BALASHIHA

for device in `cat $mtlist`

do

# Create subdirectory for device if needed

if [ ! -d "$MTBACKUPDIR/$MTPATH/$device" ]; then

# Create the directory first

mkdir $MTBACKUPDIR/$MTPATH/$device

fi

# Execute backup via SSH

rscbackupfile=$device.`date +%d%m%y_%H_%M_%S`

ssh $MTBACKUPUSER@$device export file=$rscbackupfile

# Fetch the backup file

sleep 5

scp $MTBACKUPUSER@$device:/$rscbackupfile.rsc $MTBACKUPDIR/$MTPATH/$device/

# Delete the backup file from the MT

sleep 5

ssh $MTBACKUPUSER@$device rm $rscbackupfile.rsc

sleep 5

#backup mikrotik full

backupfile=$device.`date +%d%m%y_%H_%M_%S`

ssh $MTBACKUPUSER@$device system backup save name=$backupfile

# Fetch the backup file

sleep 5

scp $MTBACKUPUSER@$device:/$backupfile.backup $MTBACKUPDIR/$MTPATH/$device/

# Delete the backup file from the MT

sleep 5

ssh $MTBACKUPUSER@$device rm $backupfile.backup

done

aollo@srv-dokuwiki:~$ sudo chown aollo:aollo /etc/script/bbackup

aollo@srv-dokuwiki:~$ sudo chmod +x /etc/script/bbackup

Запускаю полученный скрипт:

aollo@srv-dokuwiki:~$ /etc/script/bbackup

10.9.9.1.200716_15_55_44.rsc 100% 45KB 45.3KB/s 00:00

Configuration backup saved

10.9.9.1.200716_15_56_01.backup 100% 187KB 187.2KB/s 00:00

10.9.9.249.200716_15_56_12.rsc 100% 7920 7.7KB/s 00:00

Configuration backup saved

10.9.9.249.200716_15_56_39.backup 100% 60KB 59.7KB/s 00:00

10.9.9.79.200716_15_56_55.rsc 100% 6539 6.4KB/s 00:00

Configuration backup saved

10.9.9.79.200716_15_57_23.backup 100% 52KB 51.7KB/s 00:00

10.9.9.99.200716_15_57_37.rsc 100% 6460 6.3KB/s 00:00

и т. д.

А вот как выглядит структура каталога:

aollo@srv-dokuwiki:~$ tree /media/file/BALASHIHA/

/media/file/BALASHIHA/

├── 10.9.9.1

│   ├── 10.9.9.1.200716_15_55_44.rsc

│   └── 10.9.9.1.200716_15_56_01.backup

├── 10.9.9.249

│   ├── 10.9.9.249.200716_15_56_12.rsc

│   └── 10.9.9.249.200716_15_56_39.backup

├── 10.9.9.251

│   ├── 10.9.9.251.200716_15_58_18.rsc

│   └── 10.9.9.251.200716_15_58_40.backup

├── 10.9.9.41

│   ├── 10.9.9.41.200716_15_58_53.rsc

│   └── 10.9.9.41.200716_15_59_18.backup

├── 10.9.9.63

│   ├── 10.9.9.63.200716_16_00_08.rsc

│   └── 10.9.9.63.200716_16_00_27.backup

├── 10.9.9.64

│   ├── 10.9.9.64.200716_15_59_31.rsc

│   └── 10.9.9.64.200716_15_59_55.backup

├── 10.9.9.72

│   ├── 10.9.9.72.200716_16_00_39.rsc

│   └── 10.9.9.72.200716_16_00_58.backup

├── 10.9.9.79

│   ├── 10.9.9.79.200716_15_56_55.rsc

│   └── 10.9.9.79.200716_15_57_23.backup

└── 10.9.9.99

├── 10.9.9.99.200716_15_57_37.rsc

└── 10.9.9.99.200716_15_58_04.backup

9 directories, 18 files

Отлично теперь данный скрипт помещаю в планировщик и назначаю время в которое мне бы хотелось видеть бекапы, допустим как было ранее это 23.30 каждого дня:

aollo@srv-dokuwiki:~$ crontab -e

30 23 * * * /etc/script/bbackup > /dev/null

по аналогии настраиваю и для второй площадке, то не забываю подредактировать переменную в скрипте MTPATH=BALASHIHA на MTPATH=SPARTA и mtlist.

Что еще могу сказать, теперь уже по прошествии недели вижу практический результат по созданию резервных копий со всех устройств Mikrotik которые у меня есть в пользовании, а не то что было ранее, может этот Mikrotik завис и скрипт не отработает (у меня такое уже было и не раз). Короче, хоть полностью весь скрипт от и до не моя работа, а некая его часть найдена в интернете, а моя лишь некоторые дополнения ориентированные на мой удел. Главное что данной заметкой я смог объединить несколько систем к единому знаменателю в виде центровой системы Ubuntu как мне и удобно. Цель заметки и практический потенциал виден мне на 100%, даже если у Вас уже есть система и сервис, то если уверены в накладываемых дополнительных действиях то ничего страшного не случиться. Я люблю все настраивать от и до и только сам, так я уверен. А пока я прощаюсь, с уважением автор блога — ekzorchik.