How to Manage Backup and Restore in Gitlab

To Manage Backup and Restore in GitLab

GitLab is a free git repository management application based on Ruby on Rails. In our previous articles related to GitLab, we covered the methods to create a group and to add users in a group in GitLab. In this tutorial am going to teach how to create backup and restore the backup in Gitlab.

To backup

You can take a complete GitLab backup by running the following command.

[root@linuxhelp ~]# gitlab-rake gitlab:backup:create 
Dumping database ... 
[SKIPPED]
Dumping repositories ...
.
.
.
done
done
Deleting old backups ... skipping

Also, you can skip some fields while taking backup. All you need to do is to run the following command, which when used skips the entered fields and takes backup of the other ones.

[root@linuxhelp ~]# gitlab-rake gitlab:backup:create  SKIP = db,uploads

Dumping database ... 
[SKIPPED]
Dumping repositories ...
.
.
.
done
done
Deleting old backups ... skipping

Backup is stored in default location of GitLab at /var/opt/gitlab/backups

[root@linuxhelp backups]#ls
1489353876_2017_03_13_gitlab_backup.tar

Now you should stop the unicorn service by running the following command.

[root@linuxhelp~]# gitlab-ctl stop unicorn
ok: down: unicorn: 0s, normally up

Also, stop the sidekiq service as follows.

[root@linuxhelp~]# gitlab-ctl stop sidekiq
ok: down: sidekiq: 0s, normally up

Once it is done, check the status of GitLab as follows.

[root@linuxhelp~]# gitlab-ctl stop 
run: gitlab-workhorse: (pid 1253) 12597s  run: log: (pid 1250) 12597s
run: logrotate: (pid 17696) 1795s  run: log: (pid 1257) 12597s
run: nginx: (pid 1254) 12597s  run: log: (pid 1251) 12597s
run: postgresql: (pid 1261) 12597s  run: log: (pid 1255) 12597s
run: redis: (pid 1259) 12598s  run: log: (pid 1256) 12598s
run: sidekiq: (pid 7052) 9451s  run: log: (pid 1249) 12598s
down: unicorn: 127s, normally up  run: log: (pid 1260) 12598s

To Restore

You can restore the backup by running the following command.

[root@ linuxhelp~]# gitlab-rake gitlab:backup:restore BACKUP=1489353876_2017_03_13

Now you can start the GitLab service by running the following command.

[root@localhost backups]# gitlab-ctl start
ok: run: gitlab-workhorse: (pid 1253) 12771s
ok: run: logrotate: (pid 17696) 1969s
ok: run: nginx: (pid 1254) 12771s
ok: run: postgresql: (pid 1261) 12771s
ok: run: redis: (pid 1259) 12771s
ok: run: sidekiq: (pid 7052) 9624s
ok: run: unicorn: (pid 19637) 0s

Use the following command to check configuration status of GitLab.

[root@linuxhelp~]# gitlab-rake gitlab:check SANITIZE=true
hecking GitLab Shell ...
GitLab Shell version > = 4.1.1 ? ... OK (4.1.1)
Repo base directory exists?
default... yes
.
.
.
Your git bin path is " /opt/gitlab/embedded/bin/git" 
Git version > = 2.7.3 ? ... yes (2.10.2)
Active users: 7

Checking GitLab ... Finished

It was pretty simple wasn' t it? You can easily take backup of your GitLab files in times of crisis. We will upload more files on GitLab in the future.

Tag : gitlab
FAQ
Q
"What is an incremental backup?
"
A
"IBackup for Linux transfers only the modified portions after full initial backup. Incremental backup is a default feature.

"
Q
Does IBackup for Linux support my native character set?
A
"IBackup for Linux supports character sets of most major languages like English, French, Spanish, German, Chinese, Japanese, Hebrew, Italian etc.

"
Q
"how to Use NTFSSecurity tools for PowerShell?

"
A
"The NTFSSecurity PowerShell module provides a Remove-Item2 method which supports long paths. The Gitlab CI Multi Runner will detect it if it is available and automatically make use of it.

"
Q
"Where are logs stored when running as a service?

"
A
"If the GitLab Runner is run as service on Linux/OSX the daemon logs to syslog. If the GitLab Runner is run as service on Windows it logs to System's Event Log.

"
Q
"how to Use Git with the core.longpaths enabled?

"
A
"You can avoid the problem by using Git to clean your directory structure, first run git config --system core.longpaths true from the command line and then set your project to use git fetch fr

"