LINUX.ORG.RU

Conserve v.0.3.0.0 — утилита резервного копирования

 , , , ,


4

2

Conserve — это утилита для резервного копирования. Изначально основной функцией было делать полный бэкап системы, использующей LVM, на лету и отсылать отчёты по электронной почте. В дальнейшем появился дополнительный функционал.

Сейчас Conserve умеет:

  • Бэкап блочного устройства с помощью снепшотов LVM и dd.
  • Бэкап MBR.
  • Бэкап файлов, по возможности используя снепшот LVM.
  • Бэкап файлов с помощью rsync.
  • Бэкап на SMB (CIFS) или NFS сетевой ресурс.
  • Собирать информацию полезную для восстановления системы.
  • Автоматически определять ресурсы, которые нужно зарезервировать для восстановления системы с нуля.
  • Отправлять отчёт о выполнении задания по электронной почте.

Страничка на GitHub.
Инструкция по установке.

Сайт программы.

История:
Затевал для себя, так как была задача и время, а готового решения не попалось. Написал на Ruby, потому что нравится, а вопроса производительности в данном случае не встаёт. Потом стало недосуг, но некоторое время назад снова понадобилось. На данный момент используется на ряде серверов по работе, а также дома.
Я не разработчик, это скорее хобби. Стараюсь делать «как надо», но выходит, конечно, далеко не всегда. Например, не осилил написать тесты, поэтому по возможности проверил установку и работу утилиты на следующих операционных системах:

  • Ubuntu 12.04.
  • SUSE Linux Enterprise Server 11 (+ sp.2).
  • Oracle Enterprise Linux 6.3.
  • Red Hat Enterprise Linux 6.4.
  • Debian GNU/Linux 7.1 (wheezy).
  • Centos 5.6.

В планах:

  • Собрать deb и rpm пакеты.
  • Написать тесты.
  • Написать утилиту для восстановления, используя данные, собранные при бэкапе.
  • Сделать LiveCD с этой утилитой.
  • Написать инструмент для централизованного управления бэкапами.

Буду рад, если Conserve кому-то окажется полезной. Также буду признателен за тестирование, отчёты об ошибках, идеях и советах по улучшению, ну и, конечно, традиционное «ненужно» в количестве.

p.s. Везде по ссылкам описания на английском языке (ну, или то, что мне кажется английским), потому что мне так удобнее.

>>> Подробности



Проверено: Pinkbyte ()

Судя по описанию, интересная штука. Буду рад, если утвердят.

Bagrov ★★★ ()

Клево! Спасибо! :)

renya ★★★★★ ()

Спасибо, заинтересовало. Но почему

вопроса производительности в данном случае не встаёт.

?

sT331h0rs3 ★★★★★ ()
Ответ на: комментарий от sT331h0rs3

Потому что работой с ФС занимаются нижележащие либы?

buddhist ★★★★★ ()
Ответ на: комментарий от sT331h0rs3

Потому что, используются dd, tar, gzip, rsync и т.д. Рубийный код ничего тяжёлого не делает. Может где-то, что-то и работало бы быстрее осиль я, например, C. Но по сравнению со временем создания образа раздела или его копированием по сети это бесконечно мало. Может я что-то не учёл, тогда поправьте.

nixargh ()

Можно подробнее насчет этого?

Автоматически определять ресурсы, которые нужно зарезервировать для восстановление системы с нуля.

winhex ()

восстановление системы с нуля

Это то, что у виндузятников называется «переустановкой виндовса».

anonymous ()
Ответ на: комментарий от anonymous

Это то, что у виндузятников называется «переустановкой виндовса»

Нет, это то, что у пользователей называется, или называлось во времена XP «резервное копирование системных файлов».

UNiTE ★★★★★ ()

А название-то какое, прямо яблочко наливное! Ац! КОНСЕРВЫ :О

anonymous ()
Ответ на: комментарий от winhex

Всё проще :)
Утилита на основе собранной информации определит где MBR (Master Boot Record) и сделает её копию. А так же копии разделов которые перечиследны в fstab (конечно без swap, proc и т.д.). Плюс будет создан текстовый файл с описанием найденых в системе дисков, разделов, LVM сущностей и т.д. Предполагается, что планируемая утилита восстановления на основе этого файла, имея образы нужных дисков, сможет восстановить систему на другом сервере.
Т.е. если у вас есть разделы, которые по умолчанию никуда не монтируются, то они не будут зарезервированы. Так же есть опция "--exclude", позволяющая перечислить разделы, которые нужно исключить из «baremetal» бэкапа, например /home может быть огромен, при этом без него система заведётся. Так же стоит учитывать, что если кроме /boot у вас есть не LVM партиции, то их копия очень даже может оказаться не консистентной, так как не получится сделать снепшот.

nixargh ()

Ну раз уж ты просил традиционное «ненужно»... не хватает:
- выполнения произвольных команд на хосте перед бекапом
- инкрементального/дифференциального копирования

selivan ★★★ ()
Ответ на: комментарий от selivan

- инкрементального/дифференциального копирования

С помощью dd? Это как?

Как это ни печально, свободных аналогов trueimagecmd я пока не вижу.

DELIRIUM ★★★★★ ()

Ман то есть? На гитхабе что-то не видно его (или я плохо смотрел?). Хочется почитать, в первую очередь чтобы понять (более наглядно, чем этот фичлист), что умеет утилитка, не устанавливая пока.

Psych218 ★★★★★ ()

Если есть желание привести это чудо к более приличному виду, напиши smage at jabber dot ru. Добавим тесты(потому что без них страшно, а как это тестить, я не понимаю) и сделаем лучше.

S-Mage ★★ ()

Автор, ты главное делай чтобы LiveCD быстро грузился. А самое важное, я бы предолжил реализовать создание снапшота + создание MD5 суммы исходного раздела, так и сжатого файла этого образа + второго MD5 но уже этого сжатого файла.

Сейчас у меня сделан bash скрипт который считает MD5 той области которую хочу скопировать с MD5 и жмет образ + MD5 для сжатого. Работает через dd. В общем сто раз перепроверяет.

И так я когда снова накачу из архива - проверяю корректность, так и корректность хранения обуспечивается.

I-Love-Microsoft ★★★★★ ()
Последнее исправление: I-Love-Microsoft (всего исправлений: 1)

Руби, ужас. Закопайте.

bhfq ★★★★★ ()

У меня давно работает аналогичный самописный скриптик на баше. Делает снепшот с LVM, пишет его в zbackup и делает rsync репозитория на удалённый сервер.

Wizard_ ★★★★★ ()

Код это писец... Чувак не пиши так на руби. Вообще не программируй, это у тебя не получается.

DeViL ()

Да и чем не устроил gem 'backup'? Почему делаем велосипед, а не дорабатываем то что есть?

DeViL ()

А GPT есть/планируется?

Планируется. Хотел сделать, но надобности не было, а потому отложил до лучших времён.

Ман то есть?

К сожалению нет, сделаю как время будет. Описание опций есть в хелпе, но без установки его посмотреть неудобно.

- выполнения произвольных команд на хосте перед бекапом

Пока нет центрального управления не вижу в этом большого смысла. Задание всё равно выполняется и настраивается на хосте, добавь перед его выполнением произвольные команды.

Если есть желание привести это чудо к более приличному виду

Думаю что есть. Сейчас в отпуске и в сети эпизодически, после 15-го августа отпишусь.

nixargh ()

Лор превратился в обзоры гитхаб репозитариев лорчан, изобретающих велосипеды. В чем проблема использовать Rear? http://relax-and-recover.org/

anonymous ()
Ответ на: комментарий от DeViL

Я предупреждал :)
Моим целям оно отвечает, по другому я пока не умею, может никогда и не научусь. Вы знаете кто напишет нужный мне код в нужное мне время безвозмездно? Думаю что нет.

gem 'backup'

Могу только предположить, что пару лет назад я на него смотрел и что-то меня не устроило. Посмотрю что есть, вдруг оно.

nixargh ()

Кстати, на сайте, как обычно в таких случаях, написано типа «я посмотрел вокруг, и текущие решения меня не устроили». Ни списка на что смотрел, ни объяснений (даже не важно какого уровня), что именно не устроило...

А, между тем, если даже предположить, что сабж нужен, эта информация помогла бы потенциальным пользователям понять, где оно по сравнению с другими решениями, и стоит ли им пользоваться самому.

anonymous ()

Автоматически определять ресурсы, которые нужно зарезервировать для восстановлениея системы с нуля.

fm2 ()
Ответ на: комментарий от anonymous

Согласен, но сейчас я уже и сам не вспомню этого. Начальные критерии были:

  • Сервер остаётся онлайн.
  • Софт сам делает снепшоты логических разделов LVM.
  • Софт сам подключает и отключает сетевой ресурс, в первую очередь smb.
  • Софт отправляет по почте отчёт о выполнении задания при любом исходе.

Всё остальное появлялось уже потом, по мере потребности.
Пока что цели популяризировать сабж не стоит. Если кому-то кроме меня пригодится - отлично, нет - так ничего не изменится. Да и потом, список возможностей различных утилит бэкапа наверняка меняется, т.е. такой чарт пришлось бы обновлять хотя бы раз в пол года.

nixargh ()
Ответ на: комментарий от nixargh

по другому я пока не умею, может никогда и не научусь

Главное не слушай троллей с лора, прогай, и все получится.

anonymous ()
Ответ на: комментарий от DeViL

Вообще не программируй, это у тебя не получается.

Как же меня бесят такие каменты. Если ничего не делать, ничего и не получится.

anonymous ()
Ответ на: комментарий от anonymous

Ох. Кроме того, чтобы «прогать», надо иногда смотреть в разные умные книжки и статьи, чтобы был не быдлокод, а то, что хотя бы можно прочитать. Кстати, ТС, прочти вот это и хотя бы не делай больше таких огромных строк и табов вместо пробелов.

https://github.com/styleguide/ruby

S-Mage ★★ ()
Ответ на: комментарий от DeViL

Программирование - для элиты? Каждый пишет как может, а у вас есть право выбирать что использовать.

Ghostwolf ★★★ ()
Ответ на: комментарий от selivan

Ещё, ещё!

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

И после.

Camel ★★★★★ ()
Ответ на: комментарий от S-Mage

Tabs & spaces.

табов вместо пробелов

Для отступов (identation) правильно использовать табуляцию, для выравнивания (alignment) — пробелы.

Camel ★★★★★ ()

А восстановление?

А восстановление как делается? Танцы с бубном вокруг выхлопов dd и rsync или всё же есть какие-то готовые команды?

Camel ★★★★★ ()

Бэкап
Бэкап
Бэкап
Бэкап
Бэкап
Бэкап
Бэкап

Ещё бы автоматизацию разбэкапливания и цены б ей не было А так это просто очередная бэкапилка

Goury ★★★ ()
Ответ на: комментарий от S-Mage

«прогать» я употребил в широком смысле, в том числе и прочтение мануалов и прочее. Невозможно в один день стать крутым программистом. И таки вы правы когда пытаетесь помочь человеку например ссылками. А товарисчу DeVil нужно посмотреть свой код, когда он только начинал программировать, и извиниться перед ТС.

anonymous ()

Программа написана на Ruby, следовательно применение её для бэкапирования невозможно. ИМХО.

kt ()
Ответ на: комментарий от DELIRIUM

С помощью dd? Это как?

На ум приходит считывание кусками и сравнение чексумм. Хотя после дефрага такое непрокатит

Pernat1y ()
Ответ на: комментарий от Goury

Ещё бы автоматизацию разбэкапливания и цены б ей не было А так это просто очередная бэкапилка

cron-же :)

Pernat1y ()
Ответ на: комментарий от Pernat1y

Крон-же не для разбекапливания же, а для запуска скриптов по расписанию.

А разбекапливать надо автоматизированно, а не регулярно

Goury ★★★ ()
Ответ на: комментарий от selivan

Ну раз уж ты просил традиционное «ненужно»... не хватает:
- выполнения произвольных команд на хосте перед бекапом
- инкрементального/дифференциального копирования

можно попробовать прикрутить zbackup

anonymous ()

s/снепшот/слепок/

вопроса производительности в данном случае не встаёт.

что-что у вас там не встает? виагру пробовали?

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

fank ()
Последнее исправление: fank (всего исправлений: 1)
Ответ на: комментарий от fank

Как читавший код, скажу, что в производительность ruby он выльется не то, что нескоро, а очень нескоро. Я не знаю, что надо такого сделать, чтобы язык стал здесь играть роль.

S-Mage ★★ ()

Э

А почему backup через «э», а snapshot - через «е»?

anonymous ()
Ответ на: комментарий от S-Mage

Безусловно нужно, книжек масса, в том числе и в закладках, а вот времени как всегда в обрез, приходится искать компромисы. В свою защиту скажу, что код разных лет, вероятно сейчас я бы сделал лучше/правильнее.
Вот не понимаю, зачем использовать пробелы, а не табы? В чём удобство? С длинной строк, в принципе согласен, хотя лично для себя не вижу в этом проблемы.

nixargh ()

можно попробовать прикрутить zbackup

Читая новость о нём я тоже подумал, дедупликация была бы очень кстати. Но где он есть в стандартных репах? Т.е. для работы сабжа придётся ещё ставить дополнительный софт. Это надо как опцию реализовывать, чтоб можно было обойтись без zbackup, если ненужно или сложно.

разбэкапливание

Для восстановления к первой версии conserve был сделан liveCD на базе SLAX, на котором была утилитка, умеющая воостановить. Но вот она была на столько ужасна, узко направлена и наколенна, даже на мой вкус, что я от неё избавился. Теперь мне нужен новый вариант, который будет «создавать» новую систему на основе файла с информацией о старой системе и резервных копий разделов. Пока не начинал, хотя уже пару раз собирался.

nixargh ()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.