Бекап в SVN

Настройка состоит из следующих шагов:

  1. Установка и настройка сервера SVN с веб-интерфейсом WebSVN (Если у Вас уже установлен SVN, то можно пропустить этот шаг)
  2. Создание пользователя на устройствах Mikrotik
  3. Настройка клиентского подключения к Mikrotik на linux-сервере или рабочей станции(в нашем случае это сервер, где установлен svn)

Установка SVN и WebSVN

Установим сервер SVN и веб-интерфейс к нему. Если у Вас уже установлен SVN-сервер(на этой или другой машине) и WebSVN(не обязательно, но удобно) - этот шаг можно пропустить

Установка сервера SVN

  1. Устанавливаем SVN:
     apt-get install subversion libapache2-svn
  2. Создаем каталог для корневого репозитория и задаем на него права:
    sudo mkdir /media/Backup/svn
    sudo chown www-data:www-data -R /media/Backup/svn
    sudo chmod 770 -R /media/Backup/svn
    
  3. Создадим пользователя backuper для доступа к репозиторию:
    htpasswd -c /etc/subversion/Mikrotik_Backup.users backuper
  4. Переходим в этот каталог и создаем там репозиторий, куда будут падать бекапы с различных устройств(одно устройство - одна папка):
    cd /media/Backup/svn/
    sudo svnadmin create /media/Backup/svn/Mikrotik_Backup
    sudo svnlook tree /media/Backup/svn/Mikrotik_Backup
    
  5. В каталоге /etc/apache2/conf.d создаем файл svn.conf
    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>
  6. Перезапустим апач и зайдем браузером по адресу http://localhost/repos/Mikrotik_Backup

Установка сервера WebSVN

  1. Создадим символическую ссылку(если нет каталога conf.d в каталоге апача)
     ln -s /etc/apache2/conf-enabled/ /etc/apache2/conf.d/
  2. Установим сервер WebSVN:
     sudo apt-get install websvn 
  3. В процессе установки нас спросят о корневом репозитории (укажем /media/Backup/svn) и видимых репозиториях (/media/Backup/svn/Mikrotik_Backup)
  4. После завершения установки переименуем файл /etc/apache2/conf.d/websvn в /etc/apache2/conf.d/websvn.conf и перезапустим апач.
  5. В случае удачного завершения, зайдя на страницу http://localhost/websvn, увидим страничку с нашими репозиториями

Настройка Mikrotik

На каждом бекапируемом микротике создаем пользвателя и группу:

  
/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

где:

  • пароль - пароль пользовтеля
  • 172.16.0.10 - адрес сервера, где расположен SVN-сервер

Настройка Linux-сервера

На Linux сервере импортируем публичный ключ ROS в known_hosts файл из под учётной записи, которая будет выполнять сron задачу резервного копирования:

ssh-keyscan -v -p 2222 -t dsa 172.16.0.1 >> ~/.ssh/known_hosts

где

  • -p 2222 - порт SSH-сервера Mikrotik
  • 172.16.0.1 - IP-адрес Mikrotik

Соответственно, такую операцию надо проделать для каждого бекапируемого микротика.

Настройка клиентского подключения к Mikrotik

  1. Создаем в репозитории папки для каждого устройства(в данном случае устройство mtk-home) и папку на диске:
    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
  2. Cоздаем рабочую копию SVN из папки, в которой у нас будут храниться файлы нашего бекапа:
     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 '********'
    
  3. Создадим скрипт, который будет выполнять резервное копирование /opt/scripts/backup2svn_mtk-home.sh
    /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
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 Яндекс.Метрика