Наши партнеры

UnixForum






Книги по Linux (с отзывами читателей)

Библиотека сайта rus-linux.net

На главную -> MyLDP -> Тематический каталог -> Решение административных задач в Linux

Box Backup - автоматические бэкапы нерегулярно подключаемых машин

Оригинал: Automatic backup for sporadically connected clients with Box Backup
Автор: Cory Buford
Дата: 29 августа 2008
Перевод: Александр Тарасов aka oioki
Дата перевода: 19 сентября 2008

Если вы часто ездите с ноутбуком, с важными файлами на нем, тогда централизованное решение с резервным копированием через определенные промежутки времени сразу отпадает. В этом случае обратите внимание на программу Box Backup, которая сохраняет файлы с ноутбука напрямую на сервер, по защищенному каналу.

В системе Box Backup резервное копирование инициируется не сервером, а клиентами при их подключении к серверу. Вы можете быть уверенными в том, что ваши данные не попадут в чужие руки, ведь при резервном копировании Box Backup шифрует данные с помощью Secure Sockets Layer (SSL) прямо на диски сервера. В дополнение к обычным снимкам бэкапа Box Backup может создавать инкрементальные бэкапы, при изменении файлов на подключенных клиентах. И все это разработчики Box Backup предлагают бесплатно.

Последняя версия программы - 0.11rc2, а последняя стабильная версия 0.10, она с 2006 года. В версии 0.10 проявляется ошибка при создании резервной копии файла размером больше 2 Гб. Однако если это для вас не проблема, разработчики рекомендуют пользоваться все же этой версией 0.10, потому что она самая стабильная.

Можно непрерывно резервировать данные при каждом изменении, почти как с помощью rsync. Однако в отличие от rsync вам не придется писать каких-либо скриптов. Среди других функций Box Backup есть встроенная поддержка Redundant Array of Inexpensive Disks (RAID), позволяющая резервировать данные сразу на нескольких дисках или разделах. Программа работает на множестве платформ, включая OpenBSD, Linux, Windows (только клиентская часть), FreeBSD, Solaris, NetBSD и Darwin.

Хотя обе версии можно считать стабильными, однако разработчики утверждают, что в версии 0.11rc2 на данный момент недостает функциональности. К примеру, ошибки, которые выводит Box Backup не вполне понятны и слабо документированы. Разработчики планируют разработать систему маркированных хранилищ для управляемой эмуляции резервного копирования на наборы лент, что сделает процесс восстановления старых версий проще.

Запуск Box Backup

Установить Box Backup из исходных текстов достаточно просто, конечно есть уже собранные бинарные пакеты - для Debian, Gentoo и FreeBSD. Полную инструкцию по установке можно прочесть на сайте проекта, там же вы найдете ссылки для скачивания программы.

Для успешной компиляции Box Backup необходимо иметь установленные заголовочные файлы для SSL и сжатия Z, пакеты могут называться соответственно libssl-dev и libzlib-dev. Желательно иметь библиотеки GNU readline (libreadline5-dev) и СУБД Berkeley (libdb4.5-dev), но это не обязательно. Большинство команд для Box Backup отдается из консоли, при наличии установленной библиотеки GNU readline эти возможности расширяются - создаются клавиатурные комбинации для простого редактирования команд (к примеру, нажатие Ctrl+r приведет к поиску в истории). СУБД Berkeley позволяет хранить внутренние структуры на диске так, что демону BBSD (Box Backup Service Daemon) не придется перестраивать структуру данных с нуля при очередной перезагрузке, что, естественно, ускоряет его работу.

После извлечения архива с исходниками Box Backup командуйте ./configure --enable-gnu-readline для конфигурации с поддержкой GNU readline, и собирайте программу командой make.

Будут откомпилированы два бинарных файла: серверная и клиентская части. В процесссе компиляции будет создан каталог "parcel", в которых будут подкаталоги сервера и клиента. В каталоге сервера запустите ./install-backup-server для установки серверной части. В клиентском каталоге для установки клиента запускайте ./install-backup-client. На сервер нужно установить только серверную часть, а клиентскую часть - на любую машину, которую вы хотите бэкапить. Перед установкой клиентской части на требуемые машины убедитесь, что там есть все необходимые библиотеки. Если будут задействованы Windows-клиенты, прочитайте эту заметку.

Настройка сервера

Для правильной работы Box Backup необходимо настроить серверную и клиентские части. Начнем с сервера. Во-первых, создайте пользователя - администратора сервера Box Backup. По соображениям безопасности для работы Box Backup привилегий обычного пользователя будет достаточно; из консоли создать пользователя можно командой useradd bbackup. Далее, нужно создать каталог для хранения резервных данных. Он может быть в любом месте файловой системы, лишь бы в нем было достаточно места для хранения бэкапов. К примеру, создайте каталог /srv/store, затем смените владельца каталога с помощью команды chown bbackup /srv/store.

После добавления пользователя и создания каталога, можно приступить к конфигурированию сервера Box Backup. Это делается с помощью скриптов, созданных при компиляции. Если вам требуется поддержка RAID в Box Backup, воспользуйтесь скриптом raidfile-config, который создаст конфигурацию, пригодную для RAID. Запуск скрипта безо всяких параметров отобразит справку по нему. Воспользуйтесь командой raidfile-config /etc/bbackup 8192 /srv/store, и будет создан конфигурационный файл в каталоге /etc/bbackup, размер блока - 8192. Далее нужно создать конфигурацию для бэкап-сервера с помощью скрипта bbstored-config. Важный параметр к этому скрипту - имя хоста сервера. Убедитесь, что имя хоста разрешается правильно, иначе скрипт не будет работать. Я, к примеру, создал конфигурационный файл с помощью команды bbstored-config /etc/bbackup rhel.testlab.com bbackup. Так как конфигурация хранится в каталоге /etc/bbackup, будет лучше, если вы смените владельца каталога и позволите лишь ему иметь доступ к каталогу.

Для обмена данными в Box Backup используется SSL, поэтому понадобится создать и подписать сертификат. Скрипт bbstored-certs, который можно найти в каталоге конфигурации (/etc/bbackup), служит для создания и подписывания сертификата, который будет использоваться на сервере. Я ввел следующие команды:

# bbstored-certs ca init
# bbstored-certs ca sign-server bbstored/rhel.testlab.com-csr.pem

Обратите внимание, что bbstore/rhel.testlab.com-csr.pem создается при запуске скрипта bbstored-config. Для запуска сервера нужно командовать bbstored /etc/bbackup/bbstored.conf, этот скрипт также можно найти в каталоге конфигурации.

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

Теперь, когда сервер настроен и работает, необходимо настроить клиентскую часть. Box Backup поддерживает два режима резервного копирования: снимок и ленивый режим. Как и в других программах резервного копирования, в режиме снимка берется полный снимок данных и копируется на сервер. Ленивый режим более динамичен и гибок - это рекомендуемый режим. В ленивом режиме клиент непрерывно передает данные на сервер. Копирование занятого каким-либо процессом файла может вызвать его порчу, поэтому Box Backup проверяет через определенные промежутки времени, были ли изменения в каких-либо файлах заданного каталога за это время. Файлы, не измененные за этот период, уже можно безопасно передавать, а в которых были изменения - пока еще нет. Таким образом гарантируется, что файл не будет использоваться за период его резервного копирования.

Как и в случае серверной части, здесь также нужно создать конфигурационный файл, с помощью скрипта bbackupd-config, который можно найти в клиентском каталоге, созданном во время компиляции (boxbackup-0.10-backup-client-linux-gnu). Среди настроек - режим (снимок или ленивый), номер аккаунта (в данном примере 1000), имя хоста сервера (rhel.testlab.com), временный каталог хранилища (/var/bbackupd), и каталог для резервного копирования (/root/Desktop/files). Команда может выглядеть следующим образом:

bbackupd-config /etc/bbackup lazy 1000 rhel.testlab.com /var/bbackupd /root/Desktop/files.

Конфигурация хранится в /etc/bbackup, клиент может быть запущен командой bbackup /etc/bbackup/bbackupd.conf. Перед запуском клиента можно отредактировать файл вручную, изменить в нем какие-либо параметры вроде каталога хранилища или файлов, которые не нужно копировать (исключения). Управлять службой можно с помощью команды bbackupctl с соответствующими параметрами terminate (остановить службу), load (для перегрузки конфигурации) и sync (форсирует резервное копирование, это доступно лишь в режиме снимка).

Создание учетной записи на сервере

Для каждого клиента, резервирующего свои данные по SSL/TLS, необходимо создать уникальный аккаунт. Уникальный SSL-ключ создается для каждого клиента и хранится в соответствующем клиентском аккаунте. Для создания клиентского аккаунта на сервере используется команда bbstoreaccounts. Укажите номер аккаунта (к примеру, 1000), мягкое ограничение (квота 1024 Мб), жесткое ограничение (1500 Мб) и нужно ли использовать RAID (0 или 1). Для этих указанных параметров нужно командовать bbstoreaccounts -c /etc/bbackup/bbstored.conf create 1000 0 1024M 1500M.

Теперь нужно передать SSL-ключ, созданный во время конфигурации клиента, на сервер. Это можно сделать с помощью команд, приведенных ниже. Если вы упустите какой-либо шаг, или скопируете необходимые файлы не в те каталоги, демоны сервера и клиента не будут работать. Чтобы ничего не упустить, внимательно читайте вики Box Backup.

(внутри /etc/bbackup) scp bbackup/1000-csr.pem root@rhel.testlab.com:/tmp - Клиент
cp /tmp/1001-csr.pem /etc/bbackup/ca/clients - Сервер
(внутри /etc/bbackup) bbstored-certs ca sign ca/clients/1000-csr.pem - Сервер
(внутри /etc/bbackup) cp ca/roots/serverCa.pem /tmp - Сервер
(внутри /etc/bbackup) cp ca/clients/1000-cert.pem /tmp - Сервер
scp rhel.testlab.com:/tmp/{serverCA,1000-cert}.pem - Клиент
(внутри /tmp) cp {serverCA,1000-cert}.pem /etc/bbackup/bbackupd - Клиент

Для проверки и восстановления файлов воспользуйтесь командой bbackupquery на стороне клиента. Она может работать как в интерактивном, так и в пакетном режиме; параметр compare позволяет сравнить файлы, а restore - полностью восстановить файловую структуру. Для команды restore еще необходимо указать оригинальный каталог, который резервировался, и каталог, в который вы хотите поместить восстановленные файлы. Чтобы избежать порчи или потери данных при восстановлении, убедитесь, что бэкап-демон на клиенте (bbackupd) остановлен.

Заключение

С помощью Box Backup вы можете безопасно создавать резервные копии содержимого ноутбуков и настольных компьютеров, когда вас нет рядом. В режиме ленивого копирования необходимо просто включить машину в сеть, а об остальном позаботится Box Backup. В качестве клиентов поддерживаются все основные Linux-платформы, а также Windows. Это дает возможность системным администраторам с легкостью производить резервное копирование мобильных клиентов.

Хотя консольные команды Box Backup просты, однако управление ключами SSL может быть непонятно для некоторых пользователей. К сожалению, частота выпусков стабильных версий Box Backup мала. Я удовлетворен последним стабильным релизом, однако проблемы с файлами более 2 Гб ограничивает возможности его использования в некоторых предприятиях. Хотя эта и некоторые другие проблемы были решены в последней версии (0.11rc2), но не стоит забывать, что это сырая версия, и не стоит уповать на нее на production-серверах.

В будущих версиях я хотел бы видеть возможности пробного резервирования (симуляцию), интегрированную в веб-интерфейс. Существует графический интерфейс под названием Boxi, он призван помочь пользователю в выборе некоторых настроек Box Backup. Однако он разрабатывается сторонними разработчиками, и не является полноценным решением, а сам процесс разработки идет довольно медленными темпами. В данный момент статистика резервного копирования Box Backup отображает лишь общий размер скопированных файлов, общий размер на сервере и сжатый размер. Однако была бы весьма полезна более подробная статистика - такая как общее число скопированных файлов (с клиента), общий размер файлов (с клиента) и общее число файлов и их размер (на сервере).

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