Два слова о системе: крайне надежная. У меня в конторе проработала более шести лет. Архивация производилась в обеденное время с 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
Главное окно:

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

На следующем этапе осуществляем подготовительные работы работы непосредственно на клиентских машинах 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
Находим строку и снимаем с нее комментарий
|
1 |
AuthorizedKeysFile %h/.ssh/authorized_keys |
Это говорит системе где искать ключ пользователя и какое имя файла ключа (для этого мы и переименовали key.pub в authorized_keys)
Перезапустить SSH
|
1 |
/etc/init.d/ssh restart |
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
На этом все, если есть вопросы, то прошу в комментарии, если нашли ошибку, прошу в личку ну или черкните письмо на почту .