Различия

Здесь показаны различия между двумя версиями данной страницы.

Ссылка на это сравнение

Предыдущая версия справа и слева Предыдущая версия
Следующая версия
Предыдущая версия
behkap_v_svn [2014/07/23 14:39]
ansealk [Настройка клиентского подключения к Mikrotik]
behkap_v_svn [2014/07/23 15:05] (текущий)
Строка 1: Строка 1:
 +====== Бекап в SVN ======
 +Настройка состоит из следующих шагов:
 +  - Установка и настройка сервера SVN с веб-интерфейсом WebSVN (Если у Вас уже установлен SVN, то можно пропустить этот шаг)
 +  - Создание пользователя на устройствах Mikrotik
 +  - Настройка клиентского подключения к Mikrotik на linux-сервере или рабочей станции(в нашем случае это сервер,​ где установлен svn)
 +
 +===== Установка SVN и WebSVN =====
 +Установим сервер SVN и веб-интерфейс к нему. Если у Вас уже установлен SVN-сервер(на этой или другой машине) и WebSVN(не обязательно,​ но удобно) - этот шаг можно пропустить
 +==== Установка сервера SVN ====
 +  - Устанавливаем SVN:<​code bash> apt-get install subversion libapache2-svn</​code>​
 +  - Создаем каталог для корневого репозитория и задаем на него права:<​code bash>
 +sudo mkdir /​media/​Backup/​svn
 +sudo chown www-data:​www-data -R /​media/​Backup/​svn
 +sudo chmod 770 -R /​media/​Backup/​svn
 +</​code>​
 +  - Создадим пользователя backuper для доступа к репозиторию:​ <code bash>​htpasswd -c /​etc/​subversion/​Mikrotik_Backup.users backuper</​code>​
 +  - Переходим в этот каталог и создаем там репозиторий,​ куда будут падать бекапы с различных устройств(одно устройство - одна папка):<​code bash>
 +cd /​media/​Backup/​svn/​
 +sudo svnadmin create /​media/​Backup/​svn/​Mikrotik_Backup
 +sudo svnlook tree /​media/​Backup/​svn/​Mikrotik_Backup
 +</​code>​
 +  - В каталоге /​etc/​apache2/​conf.d создаем файл svn.conf <file apache svn.conf>​
 +<​location /repos>
 +DAV svn
 +# SVN path
 +SVNParentPath /​media/​Backup/​svn/​
 +AuthType Basic
 +AuthName "​Authorization Realm"
 +#password file path
 +AuthUserFile /​etc/​subversion/​Mikrotik_Backup.users
 +Require valid-user
 +</​location>​
 +</​file>​
 +  - Перезапустим апач и зайдем браузером по адресу **http://​localhost/​repos/​Mikrotik_Backup**
 +
 +==== Установка сервера WebSVN ====
 +  - Создадим символическую ссылку(если нет каталога conf.d в каталоге апача)<​code bash> ln -s /​etc/​apache2/​conf-enabled/​ /​etc/​apache2/​conf.d/</​code>​
 +  - Установим сервер WebSVN: <code bash> sudo apt-get install websvn </​code>​
 +  - В процессе установки нас спросят о корневом репозитории (укажем **/​media/​Backup/​svn**) и видимых репозиториях (/​media/​Backup/​svn/​Mikrotik_Backup)
 +  - После завершения установки переименуем файл /​etc/​apache2/​conf.d/​websvn в /​etc/​apache2/​conf.d/​websvn.conf и перезапустим апач.
 +  - В случае удачного завершения,​ зайдя на страницу http://​localhost/​websvn,​ увидим страничку с нашими репозиториями
 +
 +===== Настройка Mikrotik =====
 +На каждом бекапируемом микротике создаем пользвателя и группу:​
 +<code lua>  ​
 +/user group add name=backup policy=ssh,​ftp,​read,​sniff,​test,​policy,​sensitive
 +/user add name=backuper password="​пароль"​ group=backup address=172.16.0.10 disabled=no
 +</​code>​
 +где:
 +  * **пароль** - пароль пользовтеля
 +  * **172.16.0.10** - адрес сервера,​ где расположен SVN-сервер
 +===== Настройка Linux-сервера =====
 +На Linux сервере импортируем публичный ключ ROS в known_hosts файл из под учётной записи,​ которая будет выполнять сron задачу резервного копирования:​
 +<code lua>
 +ssh-keyscan -v -p 2222 -t dsa 172.16.0.1 >> ~/​.ssh/​known_hosts
 +</​code>​
 +где
 +  * **-p 2222** - порт SSH-сервера Mikrotik
 +  * **172.16.0.1** - IP-адрес Mikrotik
 +
 +Соответственно,​ такую операцию надо проделать для каждого бекапируемого микротика.
 +
 +===== Настройка клиентского подключения к Mikrotik =====
 +  - Создаем в репозитории папки для каждого устройства(в данном случае устройство mtk-home) и папку на диске:<​code bash>
 +svn mkdir --parents http://​SERVER_IP/​repos/​Mikrotik_Backup/​mtk-home --no-auth-cache --username backuper --password '​*******'​ --message "​Create empty directory for mtk-home - `date +"​%Y-%m-%d %H:​%M:​%S"​`" ​
 +mkdir -p /​media/​Backup/​svn/​Mikrotik_Backup/​mtk-home</​code>​
 +  - Cоздаем рабочую копию SVN из папки, в которой у нас будут храниться файлы нашего бекапа:​ <code bash> cd /​media/​Backup/​svn/​Mikrotik_Backup/​mtk-home
 +svn checkout http://​SERVER_IP/​repos/​Mikrotik_Backup/​mtk-home . --non-interactive --no-auth-cache --username backuper --password '​********'​
 +</​code>​
 +  - Создадим скрипт,​ который будет выполнять резервное копирование /​opt/​scripts/​backup2svn_mtk-home.sh<​file bash /​opt/​scripts/​backup2svn_mtk-home.sh>​
 +#!/bin/bash
 +# Бекап конфига микротика на сервер subversion
 +routername="​mtk-home"​
 +sshhost="​IP_АДРЕС_МИКРОТИКА"​
 +sshport="​22"​
 +sshuser="​backuper"​
 +sshpassword="​********"​
 +svnmtkhomepath="/​media/​Backup/​svn/​Mikrotik_Backup"​
 +svnlocalpath="​$svnmtkhomepath/​$routername"​
 +svnusername="​backuper"​
 +svnpassword="​********"​
 +current_export_name="​$routername-config-export-current.rsc"​
 +precedent_export_name="​$routername-config-export-precedent.rsc"​
 +current_backup_name="​$routername-config-backup-current.backup"​
 +#
 +#
 +sshpass -p $sshpassword ssh $sshuser@$sshhost -p $sshport export >​$current_export_name
 +diff -I "by Router"​ $current_export_name $svnlocalpath/​$precedent_export_name
 +#
 +if [ "​$?"​ -ne "​0"​ ]; then
 +    sshpass -p $sshpassword ssh $sshuser@$sshhost -p $sshport export file=$current_export_name
 +    sshpass -p $sshpassword ssh $sshuser@$sshhost -p $sshport system backup save name=$current_backup_name
 +    sshpass -p $sshpassword sftp -oPort=$sshport $sshuser@$sshhost:​$current_backup_name
 +    #
 +    mv -f $current_export_name $svnlocalpath/​
 +    mv -f $current_backup_name $svnlocalpath/​
 +    rm -f $svnlocalpath/​$precedent_export_name
 +    svn add --force $svnlocalpath/​$current_export_name
 +    svn add --force $svnlocalpath/​$current_backup_name
 +    svn commit $svnlocalpath --trust-server-cert --non-interactive --no-auth-cache --username $svnusername --password $svnpassword --message "​Automated commit of $routername at `date +"​%Y-%m-%d %H:​%M:​%S"​`"​
 +    #
 +    mv -f $svnlocalpath/​$current_export_name $svnlocalpath/​$precedent_export_name
 +    exit 1
 +    #
 +    #
 +fi
 +mv -f $current_export_name $svnlocalpath/​$precedent_export_name
 +exit 0
 +
 +</​file>​
 +
  
behkap_v_svn.txt · Последние изменения: 2014/07/23 15:05 (внешнее изменение)
GNU Free Documentation License 1.3
Driven by DokuWiki Recent changes RSS feed Valid CSS Valid XHTML 1.0 Яндекс.Метрика