В Gitlab backup делается одной командой, это встроенный инструмент, для использования которого требуется root доступ к серверу.
Как создать бэкап в консоли сервера
gitlab-roke gitlab:backup:create
Данные по умолчанию сохраняются в каталоге /var/opt/gitlab/backups
cd /var/opt/gitlab/backups
Приведенную команду можно добавить в планировщик CRON и выполнять по расписанию регулярно.
Затем бэкап можно при помощи rsync копировать на какой-либо внешний сервер.
Хранить бэкап на том же сервере с Gitlab нежелательно, поскольку данные должны быть доступны для восстановления если сервер оказался полностью недоступен.
В результате получается бэкап самого приложения, он не отменяет в общем случае необходимость иметь резервную копию содержимого диска или снапшот.
Gitlab backup — восстановление Gitlab из бэкапа
Восстановление возможно только при той же версии Gitlab
Для восстановления сначала останавливаются две службы
gitlab-ctl stop unicron
gitlab-ctl stop sidekiq
Затем следует проверить статус Gitlab
gitlab-ctl status
Если он остановлен, можно приступать к восстановлению
gitlab-roke gitlab:backup:restore BACKUP=123213123123
Численное значение — идентификатор бэкапа, в примере 123213123123.
Запуск после восстановления выполняется аналогично
gitlab-ctl start
Сервис должен запуститься и вернуться в нормальный рабочий режим.
Другие способы создания бэкапа Gitlab
Другие способы — это настройка создания бэкапов посервисно через планировщик CRON или, например, через Jenkins jobs. Либо бэкап всей системы сервера.
Создавать Gitlab backup посервисно через CRON довольно сложно потому что система имеет множество компонентов и копировать нужно их все, процесс запуска после восстановления будет довольно трудоемким и трудозатратным.
Бэкап всей системы позволяет решить эту проблему. При необходимости восстановления Gitlab восстанавливается из бэкапа вместе с операционной системой.
Если Gitlab работает на виртуальной машине с есть доступ к гипервизору бэкап можно делать через снапшоты KVM, можно периодически копировать образ диска KVM машины.
Также есть готовые решения, позволяющие реализовывать полные бэкапы системы.