LINUX.ORG.RU

ZBackup 1.0

 , , ,


12

5

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

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

Программа имеет следующие особенности по сравнению с другими ей подобными:

  • Многопоточное сжатие данных с помощью алгоритма LZMA;
  • Встроенное в программу шифрование AES;
  • Возможность в будущем удалять старые данные из хранилища;
  • Использование 64-битной кольцевой хэш-функции, что позволяет достичь гораздо большей масштабируемости по сравнению с обычно использующимися 32-битными;
  • Написана на C++ с минимальными зависимостями;
  • Безопасна для использования на реальных данных. Так как программа никогда не модифицирует существующие файлы, добавляя только новые, достаточно после сохранения бэкапа просто восстановить его обратно в /dev/null. Для каждого бэкапа сохраняется его SHA256-сумма, проверяемая при восстановлении. Если восстановление прошло успешно, значит, оно будет так же успешно и в будущем. Объем кода, который осуществляет подсчет SHA256-суммы на входе и сверяет его на выходе очень мал и легко поддается аудиту.

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

В заключение можно добавить, что автор использовал предыдущую версию программы на реальных данных уже больше года и не имел никаких проблем. Что касается эффективности дедупликации, например, .tar-файл с ежедневным домашним бэкапом занимает 25GB, а 185 таких бэкапов за прошедший год в хранилище zbackup занимают суммарно только лишь 18GB, то есть даже меньше, чем один ежедневный образ. При этом, разумеется, можно восстановить любой из этих образов обратно байт в байт так, как они были изначально созданы.

Домашняя страница программы: http://zbackup.org/

Страница разработки на github: https://github.com/zbackup/zbackup/

>>> Версия 1.0 (tar.gz)

★★

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

Ответ на: комментарий от UnnamedPB

Да, и если комуто нужна автоматизация бекапа на Оффтопике!, то рекомендую Cobian Backup. Простите. может кому пригодиться. Ибо сам долго перебирал.

UnnamedPB ()

Выглядит крайне годно. Ждём пкгбилдов.

Axon ★★★★★ ()

По описанию, вполне годно. Кто-нибудь уже тестил?

ушел сам тестить на домашней тачке

leader32 ()

Хорошая новость! Спасибо!

r0ck3r ★★★★★ ()

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

Сам делаю пару лет бекапы rsync'ом без сжатия на внешнее хранилище, с дедупликаций между снепшотами просто посредством хардлинков. Файловая система на внешнем хранилище сама может обеспечивать целостность, сжимать, дедуплицировать или шифровать, если хочется (хинт: ZFS).

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

Постоянно смотрю на всякие другие системы, но как-то все гораздо сложнее rsync'а, менее надежно или дополнительные функции что-то не перевешивают недостатков...

anonymous ()

круто. автор молодец.

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

Оптимально подавать на вход один большой .tar файл
распаковывать весь образ для того, чтобы вытащить один файл.

Анонимус не распарсил как из .tar вытащить один файл?

Mr_Alone ★★★★★ ()

Если у меня в одной директории будет 100 файлов по 1 Гб, каждый из которых отличается одним последним байтом, то как будет происходить проверка? Попарно каждый с каждым?

nerdogeek ()

Ненужная срань. Лучше использовать zfs где дедупликация на уровне ФС и проверенные временем боевые системы бекапа.

anonymous ()

Чем оно лучше бакулы (не для ынтырпрайза, конечно)?

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

Сам делаю пару лет бекапы

Сам делаю более 10 лет бекапы. Backup Exec - решает.

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

Если у меня в одной директории будет 100 файлов по 1 Гб, каждый из которых отличается одним последним байтом, то как будет происходить проверка? Попарно каждый с каждым?

Очень упрощённо. Он будет по ходу чтения данных «запоминать» уникальные блоки, так что сравнивается текущий фрагмент с уже присутствующими в «базе». И, да, он воспринимает «поток», а не файл.

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

Лучше использовать zfs где дедупликация на уровне ФС и проверенные временем боевые системы бекапа.

О, оно уже научилось по сети загружать на удаленные машины? Прелестно.

bhfq ★★★★★ ()

Звучит очень вкусно, ждём в Дебиане.

Кстати, может составим тут список софта для бекапов, использующего дедупликацию? Я BackInTime пользовался, но он на прошлой неделе свои настройки потерял, как раз повод рассмотреть альтернативы.

aidaho ★★★★★ ()

Звучит здорово. Ждём пкгбилдов

Psych218 ★★★★★ ()

Оптимально подавать на вход один большой .tar файл, содержащий полный бэкап системы,

Поздравляю, вы изобрели архиватор.

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

It's only possible to fully restore the backup in order to get to a required file, without any option to quickly pick it out. tar would not allow to do it anyway, but e.g. for zip files it could have been possible. This is possible to implement though, e.g. by exposing the data over a FUSE filesystem.

Раздел 'Limitations' на http://zbackup.org
Авторы ZBackup, видимо, тоже не распарсили.

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

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

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

В чём преимущество перед obnam?

http://liw.fi/obnam/faq/dedup/

Obnam does de-duplication by splitting up file data into chunks, and storing those individually. If two files have the same data, Obnam re-uses the already backed up chunk. So far, so good. However, due to performance issues, Obnam currently only notices chunks when they start at integer multiples of the chunk size.

В общем, в Obnam дедупликация такая же, как и в ZFS - только на границе блоков. Если всё съедет хоть на байт (например, один байт будет вставлен в начало файла), ничего уже дедуплицировано не будет. ZBackup же с этим справляется.

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

Ты бы подумал бы головой, прежде чем писать: как ты вытащишь один файл, не расшифровав и распаковав весь поток до нужного места?

anonymous ()

Описание похоже на то, что называлось solid archive в rar. Это оно и есть, или есть принципиальные отличия? В том смысле, что чем сабж отличается от архиватора общего назначения?

alt-x ★★★★★ ()

И какой проц нужен этому зверьку чтобы дедупликация не тормозила?

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

На самом деле это вполне возможно в данном случае, потому что тут шифруются и сжимаются отдельные дедуплицированные блоки. Правда, в случае с именно tar-ами все же нужен индекс для уже самого tar-файла, чтобы уже его проматывать не приходилось с самого начала. Такой индекс тоже можно построить при желании. Или просто взять .zip или .rar.

ikm ★★ ()
Ответ на: комментарий от alt-x

чем сабж отличается от архиватора общего назначения?

Глобальной дедупликацией по всем ранее сохраненным данным.

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

и, по желанию, шифруются
как ты вытащишь один файл, не расшифровав

Это не дефолтовое значение, не нужно его сюда приплетать. Плюс читай ZBackup 1.0 (комментарий) - «It's only possible to fully restore the backup in order to get to a required file, without any option to quickly pick it out. tar would not allow to do it anyway»

Анонизмус, что тебе не понятно? Создатели не распарсили man tar. Ты тоже.

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

Файловая система на внешнем хранилище сама может обеспечивать целостность, сжимать, дедуплицировать или шифровать, если хочется (хинт: ZFS).

Когда это ZFS научилась шифрованию?

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

Это не дефолтовое значение, не нужно его сюда приплетать.

Какая разница, зашифрован бекап или нет, если в их реализации это невозможно даже в случае, если шифрование не используется?

Анонизмус, что тебе не понятно? Создатели не распарсили man tar. Ты тоже.

Мне всё понятно, дурашка, а вот тебе, похоже нет. Приведи команду, как вытащить один файл из сжатого, но не зашифрованного бекапа zbackup; если не можешь привести, не дуди, что я чего-то там не распарсил, чего распарсили или не распарсили авторы меня не волнует.

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

Приведи команду, как вытащить один файл из сжатого, но не зашифрованного бекапа zbackup

zbackup restore /my/backup/backups/1 | tar x my/file

Другое дело, что всё, что было до этого файла, придется прочитать и разжать. Однако же tar по-другому не умеет в любом случае.

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

бекапа zbackup

Это значит я должен поставить напонятное поделие людей, который пишут «tar would not allow to do it anyway» для одиночных файлов, и попытаться достать один файл? А сколько ты мне за это заплатишь?

Сам делаю пару лет бекапы rsync'ом

Расскажи, сколько у тебя по времени занимает сделать инкрементальный бэкап 5-10ТБ? :-)

Mr_Alone ★★★★★ ()

кто-нибудь может сказать разницу между этой и bacula на основе личного опыта?

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

Когда это ZFS научилась шифрованию?

# zfs create -o encryption=on -o keysource=raw,https://keys.*/sd-key tank/sd

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

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

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

Ну так и я про то же. Однако, мистер Адын гнет пальцы и пыжится дальше.

anonymous ()

Поправьте на сайте, вместо «zbackup init --non-enrypted /my/backup/repo» - «zbackup init --non-enсrypted /my/backup/repo», «c» забыто и на неизвестный ключ никак не ругается.

anonymous ()

То же «cmake >= 6.8.9» на «cmake >= 2.8.9». Впрочем и с 2.8.9 собирается, надо только добавить FindLibLZMA.cmake Попробую на бэкапах m$sql, чуть больше терабайта, ежесуточные, потом может отпишусь.

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

Спасибо, поправил. Выпустил 1.1, которая требует только cmake 2.8.2

ikm ★★ ()

Автор, конечно же, молодец, и всё такое...
Я вот чего не пойму: по какой причине сообщество так настойчиво игнорирует использование возможностей файловых систем или ядерных возможностей?
ZFS - «дедупликация» «искаропки». Есть ядерный модуль. Пашет вот уже года три на бэкапном сервере. Правда - не «чистый GNU/Linux, а Nexenta.
Или, скажем, loop-aes, dm-crypt...
Нет, я только „за“ разнообразие и поиск, и всё же непонятно - почему не использовать „промышленные“ решения?
Или это - тяжёлое наследие микрософта», когда стороннее ПО работает почти гарантированно лучше нативного?

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

Я вот чего не пойму: по какой причине сообщество так настойчиво игнорирует использование возможностей файловых систем или ядерных возможностей? ZFS - «дедупликация» «искаропки».

Потому-что в ZFS дедупликация непредсказуемо сказывается на стабильности работы и доступности данных. Вот печальный опыт: http://habrahabr.ru/company/hostkey/blog/179151/

«Не используйте дедупликацию в продакшене. Вообще. Фича из разряда «никогда не пользоваться». Каждый раз, когда она была включена, это заканчивалось пересозданием пула. Ибо все работает несколько месяцев, потом полная деградация производительности. Даже на пуле с давно выключенной дедупликацией. На машинах с 128-192-384Гб + l2arc 400-800Гб SSD.»

Там ещё много чего интересного про ZFS.

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

В ZFS дедупликация на блочном уровне, а не на байтном. Совсем разного порядка вещи.

И потом, вот хочу я хранить свои бэкапы в чужом клауде. Как мне ZFS поможет?

ikm ★★ ()

Хорошая програмулина. Хотелось бы чтоб у нее был свой конфиг, в котором можно описать все параметры бекапов, возможность загрузки бекапов на FTP/sFTP ну и понятное дело инкрементальный бекап. Без возможности инкрементировать бекап, к сожалению, пока не могу юзать это в продакшине. Так же совсем не лишним будет возможность бекапить базы мускуля и git репы.

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