HTML Diff
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 =&gt; 'Local', :local_root =&gt; '/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 =&gt; 'Local', :local_root =&gt; '/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