Bup — система бэкапа с хранением данных в формате git packfile

Я узнал и попробовал программу bup, про которую раньше не слышал. Она мне понравилась и показалась очень полезной, поэтому решил написать и поделиться с вами. Bup использует тот же алгоритм, что и rsync для деления файлов на фрагменты и проверки контрольных сумм, так что производительность у него на хорошем уровне.

 

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

Bup умеет делать как локальные бэкапы, так и ходить за ними на удалённые серверы по SSH. Есть простенький встроенный веб интерфейс. Всё управление через консоль. Это в первую очередь консольный инструмент для самостоятельного велосипедостроения. Показываю, как его установить на Debian.

 

# git clone https://github.com/bup/bup

# cd bup

# git checkout 0.33

# apt-get build-dep bup

# apt install python3-pip

# pip install tornado

# make

# make install

 

Теперь надо выполнить инициализацию репозитория. По умолчанию, он будет в ~/.bup. Задать его можно через переменную окружения BUP_DIR. Добавим её сразу в .bashrc и применим изменения:

 

export BUP_DIR=/mnt/backup

# source ~./bashrc

 

Инициализируем репозиторий:

 

# bup init

 

Создаём индекс бэкапа. Для примера возьму директорию /etc на сервере:

 

# bup index /etc

 

Делаем бэкап, назвав его etc с помощью параметра -n:

 

# bup save -n local-etc /etc

 

Посмотреть список репозиториев, файлов или бэкапов можно вот так:

 

# bup ls

# bup ls local-etc

# bup ls local-etc/2023-01-31-190941

 

Бэкап удалённой машины делается примерно так:

 

# bup index /etc

# bup save -r SERVER -n backupname /etc



Доступ к серверу надо настроить по ключам.

 

Восстановление данных:

 

# bup restore -C ./dest local-etc/latest/etc

 

Восстановили директорию /etc с ветки latest бэкапа local-etc в директорию /.dest. Соответственно, выбирая разные ветки, вы восстанавливаете данные с того или иного инкрементного бэкапа.

Очень необычная для бэкапов, но при этом весьма удобная схема хранения и работы с данными, точно так же, как с обычными git репозиториями.

У bup есть простенький веб интерфейс, через который можно посмотреть и скачать файлы. По умолчанию он запускается на localhost, поэтому явно указываю интерфейс и порт:

 

# bup web 172.25.84.75:8080

 

Если кто-то пользуется bup, поделитесь впечатлением. Программа старая и известная, но я про неё ранее не слышал и не пользовался.