meta data for this page
Gitlab backup
Making backup
- block gitlab access (but leave maintenance web page)
- gitlab-ctl deploy-page up
- sudo gitlab-ctl stop unicorn
- sudo gitlab-ctl stop sidekiq
- Store configuration file manually (/etc/gitlab)
- Trigger backup creation
gitlab-rake gitlab:backup:create
- Start gitlab
gitlab-ctl start
gitlab-ctl deploy-page down
Make backup without repository
gitlab-rake gitlab:backup:create SKIP=repositories,uploads
For possible rake tasks to skip see into file /opt/gitlab/embedded/service/gitlab-rails/lib/tasks/gitlab/backup.rake
.
For now it cane be: repositories,db,builds,uploads,artifacts,lfs
Automating backups
crontab -e
0 2 * * * /opt/gitlab/bin/gitlab-rake gitlab:backup:create CRON=1
What is in backup
Backup file e.g.: 1462327272_gitlab_backup.tar
is simple tar archive with example content:
|-- artifacts.tar.gz |-- backup_information.yml |-- builds.tar.gz |-- db | `-- database.sql.gz |-- lfs.tar.gz |-- repositories | |-- group1 | | |-- http-server.bundle | | |-- kernel.bundle | |-- group2 | | |-- buildroot.bundle | | |-- linux-stable.bundle | | |-- u-boot.bundle | | `-- yocto.bundle | `-- user1 | |-- buildroot.bundle | |-- linux-stable.bundle | |-- linux.bundle | |-- uboot.bundle `-- uploads.tar.gz
Where .bundle filesa re simple tar archives of bare git repos.
Restoring backup
- install exactly the same version from backup comes
- install default gitlab package and make sure it is running
- use `/etc/gitlab` from backup
- run
gitlab-ctl reconfigure
- stop gitlab
sudo gitlab-ctl stop unicorn sudo gitlab-ctl stop puma sudo gitlab-ctl stop sidekiq # Verify sudo gitlab-ctl status
- Prepare backup file/directory
- Make sure that backup pointed by `gitlab_rails['backup_path']` is owned by `git` user.
- Restore backup
sudo gitlab-backup restore
- OR
sudo gitlab-backup restore BACKUP=1393513186
- Start GitLab
sudo gitlab-ctl start
- Check GitLab
sudo gitlab-rake gitlab:check SANITIZE=true