В первой части статьи мы рассмотрели установку, начальную настройку и русификацию системы создания бэкапов backuppc. Во второй части рассматривается настройка сервера и клиентской машины под управлением ОС Debian для создания резервной копии с помощью rsync.
Теперь нам нужно создать ssh - ключ, для подключения к клиентским машинам по SSH, для резервного копирования.
1. Генерация ключа
ssh-keygen -t dsa -b 1024 -f /var/lib/backuppc/key
Парольную фразу не указываем, так как нам нужно чтобы подключение осуществлялось без ввода пароля для ключа.
Из написанного понятно что мы указываем длину ключа 1024bit, место где его сохранить /var/lib/backuppc/ и имя файла ключа - key
В директории у нас появилось 2 файла с именами key и key.pub
key - закрытый ключ, его оставляем на сервере резервного копирования
key.pub - открытый ключ (сертифкат), его нужно скопировать на машины, с которым мы будем делать бэкап.
2. Создаем для ключа директорию с именем .ssh, перемещаем в неё закрытый ключ и выставляем необходимые права:
mkdir /var/lib/backuppc/.ssh
3. Установим права доступа:
chmod 700 /var/lib/backuppc/.ssh
4. Перемещаем key в директорию .ssh:
cp /var/lib/backuppc/key /var/lib/backuppc/.ssh
5. И устанавливаем права на файл ключа:
chmod 600 /var/lib/backuppc/.ssh/key
6. Предоставим пользователю backuppc права доступа на директорию и файл (сменим владельца директории и файла):
chown -R backuppc:backuppc /var/lib/backuppc/.ssh/
Маленький нюанс:
Если адрес сервера, к которому осуществляется подключение, не добавлен в файл known_hosts, то соединение не установится, нужно набрать yes, чего сервер backuppc сам делать не умеет, соответственно работать ничего не будет. Поэтому первый раз нужно подключиться вручную (перед этим обязательно нужно сменить текущего пользователя на backuppc):
su backuppc ssh -i /var/lib/backuppc/.ssh/key backuppc@ip_remote_host
-i указывает что авторизация идет по ключу
Набираем yes, и соответсвующая запись запись добавится в файл /var/lib/backuppc/.ssh/known_hosts
Примерный алгоритм действий:
1. Создание пользователя
Я не стал заморачиваться, и создал пользователя с логином backuppc. В целях безопасности на реальных системах имя лучше придумать другое.
adduser backuppc
Отвечаем на вопросы системы и задаем пароль.
2. Добавление пользователю отдельного ключа
Наш недавно созданный пользователь - backuppc, создадим директорию для хранения открытых ключей:
mkdir /home/backuppc/.ssh
И установим на неё права:
chmod 700 /home/backuppc/.ssh
Копируем с сервера, где установлена система backuppc публичный ключ (у нас он называется key.pub и находится в директории /var/lib/backuppc):
scp root@remote.host:/var/lib/backuppc/key.pub /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, для подключений к системе с использованием ключей (по умолчанию это запрещено):
В конфигурационном файле ssh-демона /etc/ssh/sshd_config находим и раскомментируем строчку
AuthorizedKeysFile %h/.ssh/authorized_keys
Этим действием мы говорим системе, где искать ключ пользователя и имя файла ключа (для этого мы переименовали key.pub в authorized_keys
После перезапускаем SSH:
/etc/init.d/ssh restart
4. Установка прав в системе (клиентская машина)
Нужно предоставить пользователю backuppc права доступа на выполнение действий со всеми файлами в системе, а для этого ему нужны права root. В целях безопасности разрешим ему запускать только rsync, tar и env через sudo без запроса пароля.
Запускаем visudo и в конец файла добавляем строку:
backuppc ALL = NOPASSWD: /usr/bin/rsync, /usr/bin/env, /usr/bin/tar
тем самым мы разрешаем пользователю backuppc запускать без запроса пароля rsync, tar и env.
На сервере только осталось добавить задание:
Выбираем пункт Edit Hosts (Редактирование узлов - если у вас включен русски язык)
Указываем адрес хоста и пользователя, от имени которого будет делаться бэкап (в нашем случае - backuppc) под которым выполняется резервное копирование.
Жмем Save, и идем в параметры хоста, выбираем пункт Xfer (Транспорт в русской версии)
Важные пункты подчеркнуты красным.
rsync - Метод синхронизации (способ бэкапа)
RsyncShareName - указываем путь к директории, которую мы будем бэкапить (может быть несколько)
RsyncClientCmd - параметры подключения к серверу для выполнения резервного копирования
RsyncClientRestoreCmd - параметры подключения к серверу для выполнения восстановления
На последний двух пунктах остановимся подробнее:
В них указано следующее:
$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 и пробуем запустить бэкап, выбрав нужный хост в левом меню и нажав Start Full Backupc
Все ошибки пишутся в лог, который можно посмотреть в разделе LOG file.
Спустя некоторое время проверяем, если резервная копия создалась, значит мы все настроили правильно, если же нет, то смотрим лог и ищем, где мы могли ошибиться.
Осталось настроить время и периодичность бэкапов.
Идем в пункт Edit Config -> Shedule (Редактирование настроек - Планировщик)
обратим внимание на пункт BlackoutPeriods
1. Если указанно время 19.5 -то это НЕ 19:50, а 19:30.
2. BlackoutPeriods - время когда нельзя проводить резервное копирование т.е. если на скриншоте начало периода в 7, а завершение 19.5. то резервное копирование может осуществляться в интервале с 19:30 по 7:00 следующего дня, по усмотрению системы, если же вам нужно например резервное копирование выполнялось ночью 2:00 до 3:00, то BlackoutPeriods принимает вид hourBegin - 3 hourEnd - 2
3. Шаг таймера 30мин т.е. задания отрабатывают каждые пол часа, не чаще.
Резервные копии будут сохраняться в директорию /var/lib/backuppc/pc/$hostname
В целом все, удачных вам бэкапов!