Быстрая настройка резервного копирования под Linux и не только (UrBackup)


Примерно год назад у меня возникла «острая» необходимость перевести систему резервного копирования данных в корпоративной сети на бесплатные рельсы. До этого использовался платный продукт от Symantec, по нему, конечно, много нареканий, но он работал, хоть и не всегда справлялся. Как обычно, все надо было сделать «вчера», и я приступил к поиску вариантов.

Для начала начал искать решение для резервного копирования файлов, очевидным решением было простая настройка скриптов на Linux по cron, но это не очень удобное и надежное решение, если серверов более одного(а у меня их около 50-ти) и структура достаточно динамична. Тем более если инфраструктура смешанная, Linux + Windows. Хотелось что-нибудь простое в дальнейшем обслуживании и извлечении самих копий, например, переложить восстановление пользовательских файлов на группу поддержки. Порывшись пару часов в интернете, я наткнулся на интересный проект UrBackup, он удовлетворял всем моим условиям.

Как операционную систему я выбрал CentOS 6 в конфигурации minimal, взять можно тут. Подробно на установке и первичной настройке останавливаться не будут, т.к. манулов по этой процедуре уже достаточно на Хабре. Перейдем к установке виновника топика UrBackup.

Предыдущие версии UrBackup приходилось собирать из исходников, но слава разработчикам, для последних версий появились репозитории для большинства популярных систем. Хотя собрать из исходников проблем не составляло, репозиторий сильно упрощает жизнь, особенно при обновлениях.

Итак, приступим:

yum install wget nano -y
cd /etc/yum.repos.d/
wget http://download.opensuse.org/repositories/home:kot1grun/CentOS_6/home:kot1grun.repo
yum install urbackup-server -y

Тут мы подключаем репозиторий и устанавливаем собственно сервер. Далее, чтобы мы могли подключится к серверу из вне, нам необходимо поправить iptables:

# nano /etc/sysconfig/iptables

# Firewall configuration written by system-config-firewall
# Manual customization of this file is not recommended.
*filter
:INPUT ACCEPT [0:0]
:FORWARD ACCEPT [0:0]
:OUTPUT ACCEPT [0:0]
-A INPUT -m state --state ESTABLISHED,RELATED -j ACCEPT
-A INPUT -p icmp -j ACCEPT
-A INPUT -i lo -j ACCEPT
-A INPUT -m state --state NEW -m tcp -p tcp --dport 22 -j ACCEPT
# правило для urbackup
-A INPUT -m state --state NEW -m tcp -p tcp --dport 55414 -j ACCEPT
-A INPUT -j REJECT --reject-with icmp-host-prohibited
-A FORWARD -j REJECT --reject-with icmp-host-prohibited
COMMIT

Перезагружаем iptables:

service iptables restart

Так же для серверов внутри сети отключаем selinux:

# nano /etc/sysconfig/selinux

# This file controls the state of SELinux on the system.
# SELINUX= can take one of these three values:
#     enforcing - SELinux security policy is enforced.
#     permissive - SELinux prints warnings instead of enforcing.
#     disabled - No SELinux policy is loaded.
SELINUX=disabled
# SELINUXTYPE= can take one of these two values:
#     targeted - Targeted processes are protected,
#     mls - Multi Level Security protection.
SELINUXTYPE=targeted

Отключаем selinux без перезагрузки:

# setenforce 0

Устанавливаем сервис в автозагрузку и запускаем:

chkconfig urbackup-server on
service urbackup-server restart

Готово. Можно подключаться и настраивать.

Заходим по адресу
http://my-server-ip:55414
. При желании выбираем язык и идем в настройки:



Тут для первичной настройки нам необходимо указать только путь для хранения бекапов. Не забываем нажать кнопку «сохранить» и мы можем переходить к настройке клиентов.

Для начала нам необходимо установить клиент на сервер, который мы хотим копировать. Клиент для Windows систем можно скачать с сайта разработчиков, но так как мы в данный момент рассматриваем linux-системы, рассмотрим установку на тот же CentOS 6:

cd /etc/yum.repos.d/
wget http://download.opensuse.org/repositories/home:kot1grun/CentOS_6/home:kot1grun.repo
yum install urbackup-client-nogui -y
chkconfig urbackup-client on
service urbackup-client start

Добавляем правила в iptables:

# nano /etc/sysconfig/iptables

# Firewall configuration written by system-config-firewall
# Manual customization of this file is not recommended.
*filter
:INPUT ACCEPT [0:0]
:FORWARD ACCEPT [0:0]
:OUTPUT ACCEPT [0:0]
-A INPUT -m state --state ESTABLISHED,RELATED -j ACCEPT
-A INPUT -p icmp -j ACCEPT
-A INPUT -i lo -j ACCEPT
-A INPUT -m state --state NEW -m tcp -p tcp --dport 22 -j ACCEPT
# правила для urbackup
-A INPUT -m state --state NEW -m tcp -p tcp --dport 35621 -j ACCEPT
-A INPUT -m state --state NEW -m udp -p udp --dport 35622 -j ACCEPT
-A INPUT -m state --state NEW -m tcp -p tcp --dport 35623 -j ACCEPT
-A INPUT -j REJECT --reject-with icmp-host-prohibited
-A FORWARD -j REJECT --reject-with icmp-host-prohibited
COMMIT

Перегружаем iptables:

service iptables restart

Не забываем отключить selinux, если, конечно, в нем нет необходимости. И можно добавлять клиента на сервер. Возвращаемся на сервер
http://my-server-ip:55414
. Идем в раздел «статус»:



Вбиваем в поле «Имя/IP» IP-адрес сервера, с которого мы хотим бекапить данные, и нажимаем добавить. Ждем пару минут, пока клиент появится в списке.

Для клиента с GUI этого достаточно, настройки папок для копирования можно сделать прямо на клиенте, резервное копирование начнется по расписанию, но у нас минимальный Linux и мы ставили клиент без GUI, его, как впрочем и полноценного клиента, можно настраивать прямо с сервера.

Идем в настройки:



Выбираем наш сервер из списка и настраиваем «каталоги по умолчанию для бекапа».

Сохраняем.

Готово. Сервер настроен и работает. Во время работы мы видим нечто подобное:



Сервер работает на удивление быстро и очень компактно использует место на диске, используя подобие дедубликации на основе симлинков.

Это минимальная настройка сервера, при желании можно настроить авторизацию, архивацию, создание образов систем (Windows), резервное копирование через интернет и т.д. В дальнейших статьях планирую рассказать, как на этот же сервер настроить резервное копирование MSSQL и Exchange, если это, конечно, будет интересно читателям.

Only registered users can participate in poll. Log in, please.

Продолжать ли дальнейшие статьи?

Share post

Similar posts

Comments 15

    +3
    <Надеваю шапку КО>
    А что насчёт восстановления?
    А что насчёт масс-деплоя?
    <снимаю шапку>
      0
      В одну статью просто не уместилось, надеюсь описать все подробнее в следующих.
      0
      Бекап серверов на Linux предусмотрена? Или мне самому нужно будет указать какие папки забекапить?
        0
        Не совсем понятно что вы имеете в виду под «бекапом серверов на Linux». Если образ диска, то нет, необходимо указать папки для копирования или указать "/" и в исключение добавить не нужные директории. Если просто резервное копирование систем Linux, то без проблем, но папки указывать все равно придется при первичной настройке. Лично я не использую данное средство для резервного копирования образов, т.к. использую виртуализацию на базе ESXi, а там есть средства создания резервных копий дисков. Так же есть бесплатные которые я успешно использую. И когда-нибудь я дойду и до статьи о них.
          0
          Спасибо. Именно это и хотел узнать.
        –1
        А почему отключаем SELinux?
          0
          Потому что 99% админов не хотят с ним заморачиваться и доверяют полностью iptables + ipset + fail2ban
            0
            Предвкушал конечно такие вопросы, но все же решил не включать его настройку. Чтобы не засорять статью отдельной статьей о настройке SELinux. Те кто очень хочет его использовать на своем сервере но не знают как это делается, вполне могут найти материалы на Хабре.
              0
              Вам просто интересно почему отключаем или вы намекаете на не безопасность данного метода настройки?
              0
              Интересно было бы почитать про бакап и восстановление Exchange. Можно ли восстановить отдельный почтовый ящик?
              И про бакап виртуальных машин из-под Hyper-V тоже интересно.
              Как проходит bare metal восстановление Windows серверов с RAID контроллерами? Можно ли в restore CD/USB поместить драйвера?
                0
                Метод резервного копирования Exchange очень бюджетный, и делается по средствам PowerShell в PST файлы, поэтому можно восстановить, не только отдельный ящик, но и отдельное письмо. Но эта статья будет после статьи о резервном копировании MS SQL. Виртуализацию я использую на основе vSphere, поэтому не было задач с резервным копированием Hyper-V и Parallels, но я посмотрю на эту тему. По драйверам, думаю без проблем, если умеете работать с squashfs, можно пересобрать livecd. Ну и я не разрабатываю и не пиарю данный сервер, просто мне понравилась реализация которая удволетворяет мои потребности. Так что я смогу помочь только тем, в чем сам уже разобрался.
                0
                Некропостинг (некрокомментинг).
                Чтобы гуглилось лучше — последовательность для CentOS 7, установка клиента:
                cd /etc/yum.repos.d/
                wget http://download.opensuse.org/repositories/home:kot1grun/CentOS_7/home:kot1grun.repo
                yum install urbackup-client-nogui
                

                Правила для фаерволла (ставим нужную зону):
                cd /etc/firewalld/services
                printf "<?xml version=\"1.0\" encoding=\"utf-8\"?>\n<service>\n\t<short>urBackup</short>\n\t<description>urBackup client</description>\n\t<port protocol=\"tcp\" port=\"35621\"/>\n\t<port protocol=\"udp\" port=\"35622\"/>\n\t<port protocol=\"tcp\" port=\"35623\"/>\n</service>" > urBackup.xml
                firewall-cmd --permanent --zone=public --add-service=urBackup
                firewall-cmd --reload
                

                Запуск сервиса:
                chmod 644 /usr/lib/systemd/system/urbackup-client.service
                systemctl start urbackup-client
                systemctl enable urbackup-client
                
                  0
                  Второй блок не отрабатывает, заменил на:
                  firewall-cmd --permanent --zone=public --add-port=35621/tcp
                  firewall-cmd --permanent --zone=public --add-port=35622/udp
                  firewall-cmd --permanent --zone=public --add-port=35623/tcp
                  firewall-cmd --reload
                  
                  0
                  В ходе изучения выяснилось, что urbackup в режиме файлового бэкапа для linux сохраняет только содержимое файлов, но не сохраняет (или не восстанавливает) их атрибуты: владельца, права доступа.

                  Так что для частичного ручного восстановления данных оно подойдёт (например слетевшую базу восстановить), а вот для восстановления сервера целиком уже не особо — вручную все права правильно выставить на сервере задача нетривиальная.
                    0
                    Какие впечатления о urbackup спустя 2 года? на 2.х перешли?

                    Only users with full accounts can post comments. Log in, please.