0 added
0 removed
Original
2026-01-01
Modified
2026-03-10
1
<p>В GitLab предусмотрен встроенный механизм, позволяющий создавать резервные копии. Вы можете подготовить бэкап простой командой:</p>
1
<p>В GitLab предусмотрен встроенный механизм, позволяющий создавать резервные копии. Вы можете подготовить бэкап простой командой:</p>
2
# gitlab-rake gitlab:backup:create<p>В результате бэкап создастся в директории /var/opt/gitlab/backups, что происходит по умолчанию. Однако вы сможете переместить его и в другое место.</p>
2
# gitlab-rake gitlab:backup:create<p>В результате бэкап создастся в директории /var/opt/gitlab/backups, что происходит по умолчанию. Однако вы сможете переместить его и в другое место.</p>
3
<p>Вообще, бывают разные стратегии создания бэкапа. Опять же, по умолчанию ваши данные сразу пакуются посредством tar, и этот процесс занимает некоторое время. Если же в этот самый момент вы будете активно работать с данными, файлы изменятся, а tar станет выдавать предупреждения. Дабы этого избежать, вы можете указывать STRATEGY=copy:</p>
3
<p>Вообще, бывают разные стратегии создания бэкапа. Опять же, по умолчанию ваши данные сразу пакуются посредством tar, и этот процесс занимает некоторое время. Если же в этот самый момент вы будете активно работать с данными, файлы изменятся, а tar станет выдавать предупреждения. Дабы этого избежать, вы можете указывать STRATEGY=copy:</p>
4
# gitlab-rake gitlab:backup:create STRATEGY=copy<p>В результате данные сначала будут копироваться во временную директорию и лишь только потом упаковываться в архив tar. Теоретически, такой подход лучше, однако для успешного бэкапа понадобится больше свободного места на сервере. Можно сказать, что решение более актуально для крупных серверов.</p>
4
# gitlab-rake gitlab:backup:create STRATEGY=copy<p>В результате данные сначала будут копироваться во временную директорию и лишь только потом упаковываться в архив tar. Теоретически, такой подход лучше, однако для успешного бэкапа понадобится больше свободного места на сервере. Можно сказать, что решение более актуально для крупных серверов.</p>
5
<p>Если хотите указать директорию, куда выполнять бэкап, это делается в конфигурации следующим образом:</p>
5
<p>Если хотите указать директорию, куда выполнять бэкап, это делается в конфигурации следующим образом:</p>
6
gitlab_rails['backup_upload_connection'] = { :provider => 'Local', :local_root => '/mnt/backups' } # The directory inside the mounted folder to copy backups to # Use '.' to store them in the root directory gitlab_rails['backup_upload_remote_directory'] = 'gitlab_backups'<p>В нашем случае /mnt/backups не обязательно является локальной папкой - она может быть и сетевой папкой nfs либо smb, монтированной к серверу. Можно использовать локальную директорию, а потом, используя rsync, куда-либо передавать данные.</p>
6
gitlab_rails['backup_upload_connection'] = { :provider => 'Local', :local_root => '/mnt/backups' } # The directory inside the mounted folder to copy backups to # Use '.' to store them in the root directory gitlab_rails['backup_upload_remote_directory'] = 'gitlab_backups'<p>В нашем случае /mnt/backups не обязательно является локальной папкой - она может быть и сетевой папкой nfs либо smb, монтированной к серверу. Можно использовать локальную директорию, а потом, используя rsync, куда-либо передавать данные.</p>
7
<p>Кроме локальных директорий для бэкапа, возможна загрузка и в облачные хранилища, но подробнее об этом лучше почитать в<a>официальной документации</a>.</p>
7
<p>Кроме локальных директорий для бэкапа, возможна загрузка и в облачные хранилища, но подробнее об этом лучше почитать в<a>официальной документации</a>.</p>
8
<p>Также вы можете указать параметр времени хранения вашего бэкапа (работает лишь с локальными архивами). Когда срок закончится, GitLab самостоятельно удалит старые архивы.</p>
8
<p>Также вы можете указать параметр времени хранения вашего бэкапа (работает лишь с локальными архивами). Когда срок закончится, GitLab самостоятельно удалит старые архивы.</p>
9
## Limit backup lifetime to 7 days - 604800 seconds gitlab_rails['backup_keep_time'] = 604800<p>Чтобы выполнять бэкап данных в GitLab регулярно, вы можете создать задачу в cron. В примере ниже выполняется регулярное резервное копирование данных в два часа ночи:</p>
9
## Limit backup lifetime to 7 days - 604800 seconds gitlab_rails['backup_keep_time'] = 604800<p>Чтобы выполнять бэкап данных в GitLab регулярно, вы можете создать задачу в cron. В примере ниже выполняется регулярное резервное копирование данных в два часа ночи:</p>
10
0 2 * * * /opt/gitlab/bin/gitlab-rake gitlab:backup:create CRON=1<p>Учтите, что созданные таким образом бэкапы не будут включать сам файл конфигурации GitLab и SSH-ключи, хранящиеся в /etc/gitlab - данную директорию необходимо бэкапить отдельно.</p>
10
0 2 * * * /opt/gitlab/bin/gitlab-rake gitlab:backup:create CRON=1<p>Учтите, что созданные таким образом бэкапы не будут включать сам файл конфигурации GitLab и SSH-ключи, хранящиеся в /etc/gitlab - данную директорию необходимо бэкапить отдельно.</p>
11
<p>Чтобы восстановить GitLab из бэкапа, установите чистую GitLab такой же версии, какая у вас находится в архивной копии. Убедитесь, что она работает, а потом восстановите вручную файл /etc/gitlab/gitlab-secrets.json. Останется скопировать файл с бэкапом в директорию /var/opt/gitlab/backups, назначить владельцем файла пользователя Git и выполнить ряд команд:</p>
11
<p>Чтобы восстановить GitLab из бэкапа, установите чистую GitLab такой же версии, какая у вас находится в архивной копии. Убедитесь, что она работает, а потом восстановите вручную файл /etc/gitlab/gitlab-secrets.json. Останется скопировать файл с бэкапом в директорию /var/opt/gitlab/backups, назначить владельцем файла пользователя Git и выполнить ряд команд:</p>
12
# gitlab-ctl stop unicorn # gitlab-ctl stop sidekiq # gitlab-ctl status # gitlab-rake gitlab:backup:restore BACKUP=1493107454_2018_04_25_10.6.4-ce<p>Далее нужно будет восстановить конфиг /etc/gitlab/gitlab.rb, перезапустить GitLab и выполнить проверку:</p>
12
# gitlab-ctl stop unicorn # gitlab-ctl stop sidekiq # gitlab-ctl status # gitlab-rake gitlab:backup:restore BACKUP=1493107454_2018_04_25_10.6.4-ce<p>Далее нужно будет восстановить конфиг /etc/gitlab/gitlab.rb, перезапустить GitLab и выполнить проверку:</p>
13
# gitlab-ctl restart # gitlab-rake gitlab:check SANITIZE=true<p>Таким образом восстановление будет окончено. Если процедура прошла в штатном режиме, вы получите забэкапленную версию GitLab. Однако учтите, что если вы захотите восстановиться на другую версию, которая отличается от той, что в бэкапе, вы гарантированно столкнётесь с ошибкой, т. к. версия должна в точности совпадать.</p>
13
# gitlab-ctl restart # gitlab-rake gitlab:check SANITIZE=true<p>Таким образом восстановление будет окончено. Если процедура прошла в штатном режиме, вы получите забэкапленную версию GitLab. Однако учтите, что если вы захотите восстановиться на другую версию, которая отличается от той, что в бэкапе, вы гарантированно столкнётесь с ошибкой, т. к. версия должна в точности совпадать.</p>
14
<p><em>По материалам статьи "<a>Установка и настройка Gitlab на Centos и Ubuntu</a>".</em></p>
14
<p><em>По материалам статьи "<a>Установка и настройка Gitlab на Centos и Ubuntu</a>".</em></p>
15
<p>Более подробно ознакомиться с GitLab и освоить нюансы его работы вы можете на курсе<a>CI/CD</a>. Именно этой теме посвящено несколько занятий из первого модуля. Скачать программу курса можно<a>здесь</a>.</p>
15
<p>Более подробно ознакомиться с GitLab и освоить нюансы его работы вы можете на курсе<a>CI/CD</a>. Именно этой теме посвящено несколько занятий из первого модуля. Скачать программу курса можно<a>здесь</a>.</p>
16
16