Два слова о системе: крайне надежная. У меня в конторе проработала более шести лет. Архивация производилась в обеденное время с 1200 до 1400. Замедления трафика сети — никакого. Тестировал так же и восстановление — работает прекрасно, никаких сложностей, все прозрачно. Учитывая управление энергопотреблением в debian «кушает» очень мало электричества.

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

Настраиваем сервер BackupPC

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

sudo su

Установим требуемые пакеты

aptitude apt-get install backuppc

ответим на вопросы установщика, по сути это правила для настройки почтовых уведомлений
Определяем тип почтового хоста, я выбрал smarthost — когда почта отправляется через внешний почтовый сервер

Укажем от чего имени будет уходить почта, сервер называется master.example.org — подтягивается из имени системы, но можно указать и свои данные.

Указываем через кого будет отправляться почта. Предполагается что имя почтового сервера smtp.example.org

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

Теперь если мы попытаемся зайти в WEB интерфейс backuppc, то у нас ничего не получится, т.к. у нас требуют пароль для входа, которого у нас нет, для этого нам нужно добавить запись в файл htpasswd, у нас есть 2 варианта генерирования данного пароля:
1) установить apache2-utils

sudo apt-get install apache2-utils

И затем сгенерировать файл командой

sudo htpasswd /etc/backuppc/htpasswd backuppc

указав пароль, получить готовый файл

2) воспользоваться online-генератором
результат работы которого сохраняем в файл:

nano /etc/backuppc/htpasswd

В общем я заранее «подсуетился» и сгенерировал файл, !!! ТОЛЬКО ДЛЯ ТЕСТИРОНИЯ!!! логин backuppc, пароль backuppc

ну и содержимое файла:

backuppc:$apr1$a2aUIjKF$QAqbbGUmLVXT0sD/5XcP21

Сохраняем изменения и перезапускаем apache

/etc/init.d/apache2 restart

Идем в Web-интерфейс по адресу httр://server_ip_address/backuppc.
Указываем логин и пароль который мы придумали и попадаем в web интерфейс.
В котором пока пусто

Система завелась, а это считай пол дела сделано.

Для смены пароля (опционально) на учетную запись backuppc выполняем следующую команду:

#htpasswd /etc/backuppc/htpasswd  backuppc

Главное окно:

Backuppc2

Резервирование с Windows-систем:

Переходим на закладку Xfer. Добавляем логин и пароль пользователя, созданного на клиентской машине Windows с правами, разрешающими чтение резервируемых данных, т.е. для нашего примера — это пользователь backuppc, которого мы прописывали при добавлении хостов:

SmbShareUserName — backuppc

SmbSharePasswd — соответственно его пароль (который мы меняли в самом начале)

Backuppc1

На следующем этапе осуществляем подготовительные работы работы непосредственно на клиентских машинах Windows. В зависимости от инфраструктуры существующей сети Windows, возможны два варианта настройки Windows-клиентов.

Домен Windows

Создаем на контроллере домена пользователя backuppc с правами оператора архива и паролем, совпадающем с паролем пользователя backuppc в системе BackupPC. На клиентской машине для резервируемой информации выставляем права на чтение для пользователя backuppc.

Рабочая Группа

Создаем пользователя backuppc с правами оператора архива на каждом резервируемом хосте. Выставляем для этого пользователя права на чтение для резервируемых данных.

Если нужно шифрование

Теперь нам требуется создать ssh-ключ, про сути нам требуется создавать ключ только один раз, в дальнейшем его копировать на другие машины чтобы можно было выполнять подключение по SSH к клиентским машинам, для выполнения резервного копирования

Генерация ключа

ssh-keygen -t dsa -b 1024 -f /var/lib/backuppc/key

Парольную фразу не указываем, чтобы подключение осуществлялось без ввода пароля для ключа.
Из написанного понятно что мы указываем длину ключа 1024bit, место где его сохранить /var/lib/backuppc/ и имя файла ключа key
В директории у нас появилось 2 файла с именами key и key.pub
key-закрытый ключ, его оставляем на сервере резервного копирования
key.pub — открытый ключ (сертифкат), его мы будем тиражировать на машины, резервное копирование которых будем выполнять, по нему будет выполняться подключение, его можно раскидать по другим машинам, на них генерировать ничего не нужно и этот, рутинный, процесс можно автоматизировать скриптом.

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

mkdir /var/lib/backuppc/.ssh

Установим права доступа:

chmod 700 /var/lib/backuppc/.ssh

Копируем ключ key в директорию .ssh

cp /var/lib/backuppc/key /var/lib/backuppc/.ssh

Установим права на файл ключа:

chmod 600 /var/lib/backuppc/.ssh/key

Предоставим пользователю backuppc права доступа на директорию и файл

chown -R backuppc:backuppc /var/lib/backuppc/.ssh/

Вот тут нас подстерегает легкий подвох, если адрес сервера, к которому осуществляется подключение, не добавлен в файл known_hosts, то соединение не установится, нужно набрать yes, чего сервер backuppc сам делать не умеет, соответственно работать ничего не будет. Соединение будет выглядеть так:

нам достаточно набрать yes, а соответсвующая запись запись добавится в файл /var/lib/backuppc/.ssh/known_hosts

Нам поможет StrictHostKeyChecking

Каждый раз при добавлении сервера устанавливать соединение руками чтобы набрать yes слишком нудно, представьте что вам требуется добавить несколько десятков хостов и что каждый раз коннектиться руками к каждому чтобы добавлять удаленный хост в список известных, это совершенно не «комильфо», чтобы это автоматизировать, мы кроме ключа добавим еще и конфиг.
Создаем файл:

nano /var/lib/backuppc/.ssh/config

С содержимым:

Host *
           StrictHostKeyChecking no

Теперь ввода yes система не потребует, а сервер бэкапов сам будет добавлять записи, по мере их поступления, в файл known_hosts.

Настройка резервного копирования клиентской машины Linux (Ubuntu)

Настройка клиентской машины

Алгоритм действий довольно прост и отлично поддается автоматизации:
1) Создать пользователя backuppс
2) Добавить ему открытый ключ
3) Разрешить вход по ключу на сервере SSH
4) Предоставить необходимые права в системе

1- Создаем пользователя
Пользователя, под которым мы будем запускать выполнение задач резервного копирования, мы назовем backuppc естественно, что на реальных системах, такого делать не стоит и нужно указывать имя отличное от названия ПО — в целях безопасности, ну и чтобы никто не догадался.

Создаем пользователя:

adduser backuppc

и ответим на вопросы системы, указав пароль.

2-Добавляем пользователю открытый ключ
Мы создали пользователя backuppc, теперь нам требуется создать директорию для хранения ключей

mkdir /home/backuppc/.ssh

Установим права на эту директорию

chmod 700 /home/backuppc/.ssh

Копируем ключ key.bub в директорию .ssh тогда путь к нему будет:

/home/backuppc/.ssh/key.pub 

Переименовываем key.pub в authorized_keys и предоставляем нужные права доступа.
переименуем файл:

mv /home/backuppc/.ssh/key.pub /home/backuppc/.ssh/authorized_keys

Установим права на файл ключа:

chmod 600 /home/backuppc/.ssh/authorized_keys

Сделаем пользователя backuppc владельцем директории и файла

chown -R backuppc:backuppc /home/backuppc/.ssh

3-Разрешаем вход по ключу, на сервере SSH

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

nano /etc/ssh/sshd_config

Находим строку и снимаем с нее комментарий

Это говорит системе где искать ключ пользователя и какое имя файла ключа (для этого мы и переименовали key.pub в authorized_keys)

Перезапустить SSH

4- Предоставить необходимые права в системе

Предоставляем пользователю backuppc права доступа, чтобы он мог выполнять действия со всеми файлами в системе, а для этого ему нужны права root.
Полный доступ в систему предоставлять не правильно, мы разрешим ему запускать только rsync через sudo чтобы система не спрашивала пароль, больше ничего!
Для этого отредактируем файл

nano /etc/sudores

и добавляем туда запись:

backuppc      ALL = NOPASSWD: /usr/bin/rsync

Где:
backuppc — имя пользователя
ALL = NOPASSWD: /usr/bin/rsync — задаем права на запуск одного приложения с правами root без пароля, это rsync ну и указываем путь к нему.

Добавим на сервер BackupPC параметры подключения и директорию которую мы хотим бэкапить.

Настройка параметров резервного копирования на сервере BackupPC

Т.к. ключ предоставляет довольно большие возможности по работе с удаленной системой, то необходимо ограничить к нему доступ!!!
В качестве эксперимента, мы проверим подключение к удаленному серверу, чтобы проверить работу авторизации по ключу.

Перерзайдем под пользователем backuppc

su backuppc

Установим подключение по SSH к удаленному серверу командной.

ssh -i /var/lib/backuppc/.ssh/key backuppc@client.example.org

где:
ssh — собственно то что мы запускаем
-i — указывает на то что авторизация идет по ключу
/var/lib/backuppc/.ssh/key — путь где лежит ключ и сам файл ключа.
backuppc — пользователь под которым осуществляется подключение
client.example.org -адрес машины к которой выполняется подключение

Соединение установлено и вы попали в консоль удаленного сервера, система не просила набрать yes при подключении и все работает отлично.

Осталось настроить задание.
Выбираем пункт Edit Hosts
И заполняем форму:

Указываем адрес хоста и пользователя под которым выполняется резервное копирование.
И нажимаем Save
Ну и идем в параметры хоста, выбираем пункт Xfer
Важные пункты подчеркнуты

rsync — Метод синхронизации
RsyncShareName — указываем путь к директории, которую мы хотим бэкапить
RsyncClientCmd — параметры подключения к серверу для выполнения резервного копирования
RsyncClientRestoreCmd — параметры подключения к серверу для выполнения восстановления
На последних 2х пунктах остановимся по подробнее
Там указано следующее

$sshPath -q -x -l root $host $rsyncPath $argList+

Естественно нам оно не подходит, по этому мы сформируем свою команду для выполнения подключения.
Внимание правильный ответ:

$sshPath -q -x -i /var/lib/backuppc/.ssh/key -l backuppc $host /usr/bin/sudo $rsyncPath $argList+

Где:
$sshPath -путь к директории где лежит SSH
-q — тихое подключение
-x — не пробразывать х11
-i — используем аторизацию по ключу
/var/lib/backuppc/.ssh/key -путь где у нас лежит ключ
backuppc — логин с которым мы подключаемся
$host — переменная отвечающая за адрес хоста
/usr/bin/sudo — указываем путь к sudo, чтобы с ним запустить ПО
$rsyncPath — переменная которая отвечает за путь к rsync который будет запущен под sudo
$argList+ — переменная отвечающая за список аргументов для rsync
В параметры восстановления добавляем тоже самое.
Жмем Save и пробуем бэкапить руками, то что мы тут настроили, перейдя в пункт с $hostname Home и нажав кнопку Start Full Backup
Все ошибки пишутся в лог, который можно посмотреть в пункте LOG file

мы настроили в параметры подключения, нам осталось создать задание и его расписание.
Идем в пункт Edit Config -> Shedule
нас интересует пункт BlackoutPeriods

Вот тут самая мякотка… Прошу обратить внимание!

Нюанс №1: Если вы видите указанно время 19.5 -то это НЕ соответствует времени 19:50, а соответствует времени 19:30, вот такой парадокс.
Нюанс №2: В терминологии BlackoutPeriods -время когда нельзя проводить резервное копирование т.е. если на скриншоте начало периода в 7, а завершение 19.5. то резервное копирование может осуществляться в интервале с 19:30 по 7:00 следующего дня, по усмотрению системы, если вам нужно например резервное копирование выполнялось ночью 1:00 до 2:00, то BlackoutPeriods принимает вид hourBegin- 2 hourEnd — 1
Нюанс №3: Шаг таймера 30мин т.е. задания отрабатывают каждые пол часа, не чаще…

Но а в целом, система очень достойная, разобраться с остальным вам в качестве домашнего задания и думаю оно много сил не отнимет.

Куда складываются резервные копии?
В директорию:

/var/lib/backuppc/pc/$hostname

На этом все, если есть вопросы, то прошу в комментарии, если нашли ошибку, прошу в личку ну или черкните письмо на почту .

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *