LINUX.ORG.RU
ФорумAdmin

Оптимальное решение рабочего инкрементного бэкапа для Ubuntu 22.04

 , ,


0

2

Имеется сервер на Ubuntu 22.04 На нем установлены и настроены MySQL, ProFTPD, PHPBB, Joomla и т.д. Ищется оптимальное решение для организации автоматического бэкапирования при помощи архиватора tar. Вводные следующие:

1.Бэкап всей системы не нужен, нужен только бэкап важных директорий, где хранятся настройки и данные. Т.е. системные файлы и библиотеки не нужны.
2.В связи с тем, что были установлены дополнительные пакеты, их тоже надо включать в бэкап.
3.Планируется создать файл Backup.lst, в котором будут содержаться необходимые директории.
4.Порядком бэкапирования должен управлять Bash скрипт, которому надо проверять какие файлы и директории были изменены или добавлены в указанные в файле Backup.lst директории. При необходимости дополнительные новые директории вносятся в Backup.lst. Если файл изменен, он должен быть переписан в бэкапе. Если удален, то удален в бэкапе.
5.Скрипт должен запускаться каждую ночь и делать инкрементный бэкап. Еженедельно должен делаться полный бэкап. Полные и инкрементные бэкапы прошлого месяца должны удаляться автоматически раз в месяц (например 1-го числа каждого месяца создаётся новый полный бэкап, после его создания всё за прошлый месяц удаляется).
6.В итоге должно получиться так, что при сбое или переносе системы на другой сервер админу необходимо установить голую систему, разархивировать бэкап и всё. Система должна так же полноценно работать.

Прошу поделиться опытом, кто и каким образом решает такую задачу. Очень буду благодарен, если пришлёте свои скрипты для изучения и использования Вашего опыта в своём решении. В конце поста вопросики:

1.Как включить в бэкап дополнительно установленные пакеты?
2.Чем лучше сжимать такой бэкап?
3.Если есть какие то готовые решения, поделитесь где их найти и почитать про них.
4.Возможно что то надо бэкапить не таким образом (например для MySQL существует свой алгоритм, на сколько я знаю).

Почему бы просто не воспользоваться borg? Там все эти проблемы уже решены. И сжатие есть. И дедупликация. И много чего ещё.

4.Возможно что то надо бэкапить не таким образом (например для MySQL существует свой алгоритм, на сколько я знаю).

Верно. БД надо бэкапить особым образом. Если, конечно, она не останавливается на время бэкапа…

CrX ★★★★★
()
Последнее исправление: CrX (всего исправлений: 3)

2.Чем лучше сжимать такой бэкап?

Зависит от того насколько у тебя свободен процессор и насколько важно соотношение скорость архивации/разархивации к месту (ну и сколько оперативки есть в наличии). Вообще лучше всего в плотности пожатия tar архивов в реальных условиях показывают себя xz и 7zip. Понятно что paq8 жмёт сильнее, но это уже академическое пожатие на всякие конкурсы (в миллионы раз медленнее). Ну и конечно какие-то варианты сложнее реализовывать, tar.gz и tar.xz более-менее привычны всем, а tar.7z куда реже используется и каких-то готовых скриптов с ним найти тяжелее.

3.Если есть какие то готовые решения, поделитесь где их найти и почитать про них.

Я бы взял что-то готовое чтоб не городить огород, если нет конечно задач по какой-то совместимости/предсказуемости файлов для каких-то других программ или если нет острой нужды выжимать пожатие до последних байт (например как совать fb2 в zip архивы ради того чтоб читалки с ним умели из коробки работать или класть xml-ки те же самые fb2 в 7zip архивы так как у него аж на 10% пожатие лучше чем у xz если сильно упороться в подбор параметров). Borg какой-нибудь или Restic (хотя там свои тараканы в плане инкрементальности, её как бы нет как отдельной сущности, там она всегда есть).

peregrine ★★★★★
()
Последнее исправление: peregrine (всего исправлений: 1)

Возможно что то надо бэкапить не таким образом

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

peregrine ★★★★★
()

Для бекапа файлов и настроек использую следующую идею:

  1. Скрипт бекапа первичный бекап настроек создаёт на основе изменившихся хешей файлов в сравнении с хешами записанными менеджером пакетов при установке.

  2. Скрипт бекапа вторичный бекап файлов создаёт на основе списка файлов в каталоге бекапа. Дополнительные файлы и каталоги для бекапа добавляем простым их копированием в каталог бекапа.

Бекапим: cp -pRPd --preserve=all ...

Пакуем: tar --acls --xattrs ...

Сжимаем: gpg --compress-algo bzip2 --bzip2-compress-level 9 ...

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

anonymous
()