Pull to refresh

Система резервного копирования на базе Linux и BackupPC

Требовалось организовать резервное копирование с рабочих компьютеров и серверов компании.
Бэкап-систему было решено построить на базе ОС Linux Debian и приложения BackupPC.

BackupPC — это свободное ПО (распространяется под GNU General Public License) для резервного копирования данных с управлением через веб-интерфейс. Кроссплатформенный программный сервер может работать на любом сервере под управлением GNU/Linux, Solaris или UNIX. Нет необходимости в клиентской части, так как сервер сам по себе является клиентом для нескольких протоколов, которые поддерживаются родными службами клиентской ОС.

Установка BackupPC


Установка в Debian предельно проста, никаких затруднений она не должна вызвать.
aptitude install backuppc

Web-интерфейс


После установки доступ к управлению BackupPC можно получить через web-интерфейс (по умолчанию: 192.168.0.1/backuppc). Логин — backuppc, пароль — генерируется во время установки, при желании его можно сменить:
htpasswd /etc/backuppc/htpasswd user

Настройка хранилища


По умолчанию все бэкапы будут складываться в каталог /var/backuppc/, если этот каталог вас не устраивает, то изменить его через web-интерфейс не получится, это делается в файле /etc/backuppc/config.pl, ищем следующую строку:
$Conf{TopDir} = '/var/lib/backuppc';
и меняем /var/backuppc на нужный путь, я заменил на /backup:
$Conf{TopDir} = '/backup';.

Добавление и настройка клиентов


Далее добавляем клиентский компьютер, с которого будем делать бэкап: Server — Edit host — Add.
Выбираем dhcp, если клиент использует динамический ip-адрес. В поле User вводится имя пользователя (этот пользователь должен быть в /etc/backuppc/htpasswd), который сможет просматривать бэкапы, изменять настройки этого хоста.

Переходим к редактированию конфигурации клиента. Для этого выбираем его в списке, жмем Edit config и переходим на вкладку Xref.
XrefMethod — через какой протокол будут вытягиваться данные с клиента. BackupPC поддерживает SMB и RSYNC. RSYNC я доверяю больше, поэтому использовал его в том числе и для windows машин (На клиентскую машину потребуется установить Cygwin-rsync).
Выбираем rsyncd.
ClientCharsetLegacy — кодировка на клиентской машине, для windows rsync — UTF-8, для unix rsync — оставляем по умолчанию.
RsyncShareName — имя расшаренного каталога.
RsyncdUserName, RsyncdPasswd — логин и пароль, указанные на клиентской машине.

Во вкладке Schedule задается информация о количестве полных и инкрементальных бэкапов.
FullPeriod — период создания полного бэкапа (задается в сутках), по умолчанию 6.97 (раз в неделю).
FullKeepCnt — количество полных бэкапов, которые будут хранится.
IncrPeriod — период создания инкрементального бэкапа, по умолчанию 0.97 (раз в сутки).
Секция BlackOuts
BackupsDisable:
0 — бэкапы производятся в автоматическом и ручном режиме,
1 — бэкапы могут производится только в ручном режиме,
2 — бэкапы отключены.
BlackoutPeriods — период, в который НЕ делать бэкапы. Этот параметр будет игнорироваться пока количество бэкапов хоста не будет больше, чем задано в параметре BlackoutGoodCnt.

Настройки rsyncd на windows клиенте


Редактируем rsyncd.conf:
use chroot = false
strict modes = false
# с какого ip можно подключаться
hosts allow = 192.168.0.1
log file = rsyncd.log
uid = 0
gid = 0
# имя расшаренного каталога
[c]
# путь
path = /cygdrive/c
read only = true
transfer logging = no
# какому пользователю можно подключаться
auth users = backup
# файл с логинами, паролями
secrets file = rsyncd.secret


Редактируем rsyncd.secret:
# логин:пароль
user:password


В принципе, это минимальная и достаточная настройка для работы бэкап-системы.

Удаленное хранение


Хранить бэкапы только на одном сервере и в одном помещении не очень правильно, поэтому был запущен второй сервер с системой BackupPC и установлен в другое помещение. Связь между серверами — Интернет-канал.
На втором бэкап-сервере у вас должны быть заведены те же хосты, что и на первом. Настройки полностью идентичны первому, кроме одного пункта: в секции BlackOuts параметр BackupsDisable должен быть равен 2, т. е. бэкапы отключены. Это делается для того чтобы второй сервер через Интернет-канал не вытягивал самостоятельно данные с клиентских машин и не забивал весь интернет-канал в рабочее время. Синхронизацию мы будем делать отдельным скриптом с rsync.

На первом сервере
На первом сервере потребуется установить rsync
aptitude install rsync

После установки редактируем файл /etc/rsyncd.conf
log file=/var/log/rsyncd
pid file=/var/run/rsyncd.pid
socket options = SO_KEEPALIVE
hosts allow = 192.168.0.2
secrets file = /etc/rsyncd.secret
[backup_pc]
path = /backup/pc
use chroot = yes
max connections=1
lock file = /var/lock/rsyncd
read only = yes
list = yes
auth users = user


Создаем файл /etc/rsyncd.secret
# логин:пароль
user:password


На втором сервере
Также устанавливаем rsync
aptitude install rsync
Создаем скрипт /usr/sbin/fetch_backup.sh
#!/bin/bash

echo $(date "+%Y.%m.%d %H:%M") Begin synhronization >> /var/log/synhroniz.log
rsync -uroght --delete-after --password-file=/etc/rsync.secret user@192.168.0.1::backup_pc /backup/pc
echo $(date "+%Y.%m.%d %H:%M") End synhronization >> /var/log/synhroniz.log
chown -R backuppc /backup/pc
chgrp -R backuppc /backup/pc


Данный скрипт пишет в файл /var/log/synhroniz.log информацию о начале и окончании синхронизации и запускает rsync.

Создаем файл с паролем /etc/rsync.secret
# пароль
password


Добавляем его в crontab:
# Synhronization with backup server (192.168.0.1)
15 2 * * * root /usr/sbin/fetch_backup.sh


Таким образом, каждую ночь в 2 часа 15 минут, у нас начинается синхронизация второго бэкап-сервера с первым. После окончания синхронизации мы можем скачать бэкап через web-интерфейс с любого сервера.
Tags:
Hubs:
You can’t comment this publication because its author is not yet a full member of the community. You will be able to contact the author only after he or she has been invited by someone in the community. Until then, author’s username will be hidden by an alias.