Содержание


Системы резервного копирования и управления IT-активами предприятия: Часть 6. FlyBack — аналог Apple TimeMachine для Linux

Comments

Серия контента:

Этот контент является частью # из серии # статей:

Следите за выходом новых статей этой серии.

Этот контент является частью серии:

Следите за выходом новых статей этой серии.

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

В настоящее время эталоном системы резервного копирования для настольных компьютеров стала программа TimeMachine от Apple и многие современные проекты для платформ отличных от Mac стараются повторить его функциональность.

Одной из таких программ для семейства операционных систем Linux и стала FlyBack от Дерека Андерсона (Derek Anderson).

Принципы работы FlyBack

Большинство современных программ для резервного копирования реализованы в виде надстройки над программой rsync, работающей по одноименному протоколу. Суть этой программы в том, что она позволяет синхронизировать файлы в двух разных местах, минимизируя объем передаваемых данных. Как правило всю работу, связанную с организацией хранения резервных данных, прораммы резервного копирования берут на себя.

Особенностью FlyBack является то, что программа реализована в качестве надстройки над системой управления исходными текстами Git. Git считает хранимые данные набором слепков небольшой файловой системы. Каждый раз при резервировании новой версии Git сохраняет образ того, как выглядят все файлы проекта на момент резервирования. Для сохранения дискового пространства, если файл не менялся, Git не сохраняет его вторую копию, а делает жесткую ссылку на ранее сохранённый файл.

Установка FlyBack

Для установки FlyBack необходимо скачать пакет с сайта производителя. В настоящий момент там доступна версия FlyBack 0.6.4-1. К сожалению FlyBack изначально создавался для Debian-производных дистрибутивов (например, Debian или Ubuntu), поэтому на сайте размещен Deb-пакет.

Обладатели других дистрибутивов, а также желающие получить наиболее свежую версию могут воспользоваться репозиторием Mercurial:

hg clone https://flyback.googlecode.com/hg/ flyback

FlyBack написан на языке Python, а также использует Git для хранения архивных образов, поэтому перед установкой придется удовлетворить зависимости, поставив дополнительные пакеты.

Для Debian:

sudo apt-get install python python-glade2 python-gnome2 python-gnome2-extras 
python-gtk2 git-common

Для Ubuntu:

sudo apt-get install python python-glade2 python-gnome2 python-gnome2-extras 
python-gtk2 python-gconf python-gobject git-common

Для Fedora:

yum install pygtk2 gnome-python2-gconf gnome-python2-extras pygtk2-libglade git-common

Конкретный список зависимостей будет отличаться для разных дистрибутивов и версий FlyBack, так как проект активно развивается.

Запуск FlyBack и создание репозитория

Для запуска FlyBack после установки необходимо запустить в меню Applications->System Tools FlyBack Backup Manager. После запуска откроется стартовое окно.

Стартовое окно FlyBack
Стартовое окно FlyBack
Стартовое окно FlyBack

Здесь можно двойным щелчком создать новый репозиторий, а также открыть или удалить существующий.

В случае, если уже есть созданные репозитории, окно будет выглядеть следующим образом:

Стартовое окно с несколькими репозиториями
Стартовое окно с несколькими репозиториями
Стартовое окно с несколькими репозиториями

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

Сообщение об отсутствии устройств
Сообщение об отсутствии устройств
Сообщение об отсутствии устройств

Вместо этого будет предложено подключить внешнее USB или eSATA устройство. FlyBack не позволяет делать архивацию данных на диск, с которого происходит загрузка. Это связано с тем, что в этом случае мы защищаем данные от случайной порчи или стирания, однако отказ жесткого диска уничтожит как сами данные, так и архив, расположенный на том же диске. В связи с этим наиболее надежно хранить данные на внешнем носителе, которым может быть внешний USB или eSATA диск. Хранить данные на USB-flash накопителе также не рекомендуется, так как подобные накопители могут отказать в самый неподходящий момент, так как число циклов записи у них ограничено.

После подключения внешнего устройства FlyBack автоматически определит его наличие и отобразит в списке допустимых устройств.

Устройство подключено
Устройство подключено
Устройство подключено

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

После выбора устройства и нажатия на кнопку New создается новый репозиторий и открывается главное окно. Это же окно откроется при открытии существующего репозитория.

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

Настройка параметров и архивирование данных

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

Диалог настройки параметров FlyBack
Диалог настройки параметров FlyBack
Диалог настройки параметров FlyBack

В окне настройки можно задать следующие параметры:

  • Exclude audio media files (.mp3,.aac,etc.) — исключение аудио файлов из архивации.
  • Exclude video media files (.mp4,etc.) — исключение видео файлов из архивации.

Первые два пункта объясняются очень просто. Редко видео и аудио файлы являются часто изменяемыми документами. Эти файлы удобно сохранять вручную, без использования систем резервного копирования.

  • Exclude «trash» folders — исключение каталогов, содержащих корзины для удаленных файлов.
  • Exclude «cache» folders — исключение каталогов, содержащих временные (кэш) файлы браузеров.

С этими пунктами также все понятно. Эти каталоги содержат временные и ненужные файлы, поэтому архивировать их смысла нет.

  • Exclude virtual machine images (.vmdk,etc.) — исключение образов виртуальных машин.

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

  • Exclude CD/DVD media images (.iso,etc.) — исключение образов CD и DVD.

В этом случае все обстоит так же, как и с аудио/видео файлами. Такие образы не нуждаются в автоматическом резервировании, так как не являются часто изменяемыми.

  • Exclude files over 1 GB — исключение файлов, занимающих больше указанного числа гигабайт. Об этом случае нужно сказать особо. Не смотря на то, что большие файлы (хотя и очень редко) могут быть часто изменяемыми документами, Git имеет ограничение на размер архивируемых файлов. Git не может архивировать файлы, которые не влезают в оперативную память. Можно надеяться, что в будущих версиях Git данная проблема будет решена и ограничение снято. Однако даже в этом случае оно окажется вполне разумным. Архивация файлов подобного объема может быть сопряжена с большими затратами оперативной памяти и процессорного времени, что не всегда приемлемо при автоматической работе системы резервного копирования.

После настройки параметров резервирования данных можно перейти непосредственно к архивации. Для этого нажмем кнопку Backup. Через некоторое время (к сожалению процесс резервирования данных показан не очень информативно — отображается периодически обновляемое время, прошедшее с начала процесса, в статусной строке программы) в левой части окна появится строка с параметрами (время сохранения) образа, при наведении на которую в правой части отображается список сохраненных файлов.

Главное окно со срезом образа в определенный момент времени
Главное окно со срезом образа в определенный момент времени
Главное окно со срезом образа в определенный момент времени

Также есть возможность верифицировать срез образа, нажав кнопку Verify. В этом случае слева под именем и временным штампом образа появится надпись «Verified» с указанием времени верификации.

Нажатие на кнопку Status покажет состояние репозитория в данный момент (какие файлы были добавлены, удалены или изменены).

Состояние репозитория по сравнению с текущим состоянием
Состояние репозитория по сравнению с текущим состоянием
Состояние репозитория по сравнению с текущим состоянием

Кнопка Export позволит сохранить выбранный архивный образ в виде *.tar.gz архива.

Кнопка Explore откроет выбранный архивный образ во временной папке в том состоянии, в котором он был в момент снятия образа.

Просмотр определенного архивного образа
Просмотр определенного архивного образа
Просмотр определенного архивного образа

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

Снятие архивных образов
Снятие архивных образов

Для того, чтобы восстановить файл из определенного образа нужно открыть архивный образ во временной папке (при помощи кнопки Explore) и скопировать восстанавливаемый файл в заданное место.

Следует заметить, что удаление промежуточных архивных образов не реализовано. Это опять же связано с особенностями Git. Дело в том, что в Git операция удаления чего-либо из репозитория является нетипичной и организовать ее (кроме ручного удаления, что может привести к проблемам) практически невозможно.

Работа в консоли и автоматическое снятие образов

Кроме графического интерфейса в FlyBack реализован также консольный интерфейс, который придется по вкусу тем, кто не использует графическую среду или пользуется средой отличной от GNOME. А также пригодится при настройке автоматического снятия образов.

По умолчанию FlyBack устанавливается в каталог /usr/share/flyback. Это не может оказаться не очень удобно, так как этот каталог не находится в переменной окружения PATH, соответственно для вызова FlyBack нужно будет прописывать путь целиком. С другой стороны, настроив автоматическое снятие образов, про запуск FlyBack в консоли можно будет забыть надолго.

Для запуска графического интерфейса нужно выполнить команду в консоли:

python /usr/share/flyback/flyback.py

Для запуска снятия обновленных образов всех существующих репозиториев (это актуально только для тех репозиториев, которые находятся на подключенных дисках) используется следующий вызов:

python /usr/share/flyback/flyback.py -b

или

python /usr/share/flyback/flyback.py –backup-all

Для обновления определенного образа можно использовать вызов:

python /usr/share/flyback/flyback.py <drive_uuid> <path>

где <path> — имя каталога, с которого снимается образ, а <drive_uuid> — идентификатор устройства, на котором архивный образ хранится.

Если посмотреть на окно создания репозиториев в графическом режиме, то в нем можно найти искомый UUID.

Окно с указанным UUID устройств
Окно с указанным UUID устройств
Окно с указанным UUID устройств

Для примера с рисунка выше команда снятия архивного образа будет выглядеть так:

python /usr/share/flyback/flyback.py 8894C1B494C1A552 /home/roman

В случае, если UUID или каталог будут указаны неправильно, FlyBack об этом сообщит.

Вывод FlyBack в консоль при неправильном указании UUID устройства
Вывод FlyBack в консоль при неправильном указании UUID устройства
Вывод FlyBack в консоль при неправильном указании UUID устройства

Осталась только одна задача — заставит FlyBack выполнять архивацию автоматически. На помощь нам придет cron.

Для формирования задачи запустим редактирование файла crontab:

crontab -e

Файл откроется в редакторе, определенном в переменной окружения VISUAL.

Каждая строка файла должна иметь вид:

минуты    часы    дни    месяцы    дни_недели    команда

Минуты — любое целое число до 0 до 59.

Часы — любое целое число от 0 до 23.

Дни — любое целое число от 1 до 31 (день должен указываться корректно, если указано значение месяца.)

Месяцы — любое целое число от 1 до 12, либо короткое название месяца (jan, feb, mar и т.д.)

Дни_недели — любое целое число от 0 до 7, где 0 и 7 — воскресенье. Также может быть короткое название дня недели (sun, mon, tue и т.д.)

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

Дефис (-) между целыми числами обозначает диапазон чисел. Например, 2-5 означает целые числа 2, 3, 4 и 5.

Значения, разделенные запятыми (,), определяют перечень. Например 3,5,8 в поле числа означает третьего, пятого, восьмого числа.

Косая черта (/) задает шаг значений. Например, значение часов 0-23/2, означает, что будет пропущен каждый второй час. Также в качестве шага значений может быть звёздочка. Например, значение часа */4 означает, что будет пропущен каждый четвертый час.

Строки, начатые с символа решетки (#), являются комментариями.

Таким образом, если мы хотим запускать резервирование данных каждый день в 02 часа 30 минут, что необходимо прописать следующую строку:

30  2  *  *  *  python /usr/share/flyback/flyback.py --backup-all

Затем сохранить файл. Каждую минуту демон cron перечитывает конфигурацию и в указанное время будет происходить запуск резервирования всех доступных на момент запуска репозиториев.

Заключение

Поработав немного с FlyBack можно прийти к выводу, что перед нами вполне добротный продукт. Обновляется код достаточно часто, а заверения разработчика, что «когда-нибудь реализуем и красивую 3D-анимацию наподобие Apple's TimeMachine» дают надежды на светлое будущее проекта. В следующей статье цикла мы расскажем о другой программе для резервирования данных — BackInTime.


Ресурсы для скачивания


Похожие темы

  • Системы резервного копирования и управления IT-активами предприятия. Часть 1.
  • Системы резервного копирования и управления IT-активами предприятия. Часть 2.
  • Системы резервного копирования и управления IT-активами предприятия. Часть 3.
  • Системы резервного копирования и управления IT-активами предприятия. Часть 4.
  • Системы резервного копирования и управления IT-активами предприятия. Часть 5.
  • Системы резервного копирования и управления IT-активами предприятия. Часть 6.
  • Системы резервного копирования и управления IT-активами предприятия. Часть 7.

Комментарии

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

static.content.url=http://www.ibm.com/developerworks/js/artrating/
SITE_ID=40
Zone=Open source, Linux
ArticleID=549741
ArticleTitle=Системы резервного копирования и управления IT-активами предприятия: Часть 6. FlyBack — аналог Apple TimeMachine для Linux
publish-date=10062010