Restaurer une sauvegarde sur GitLab via la procédure de secours

Guide de restauration GitLab pour réinstaller vos données, fichiers de configuration et vérifier l'intégrité du système.

Restaurer une sauvegarde sur GitLab : La procédure de secours

Pourquoi et quand restaurer une sauvegarde ?

Posséder une sauvegarde est inutile si vous ne savez pas comment l'injecter pour remettre votre serveur en ligne. Le processus de restauration GitLab est une opération délicate qui remplace les données actuelles de votre instance par celles contenues dans votre archive .tar.

C'est l'étape ultime après un crash majeur ou lors d'une migration pour restaurer une sauvegarde GitLab. Contrairement à la sauvegarde qui peut se faire à chaud, la restauration nécessite de stopper certains services pour s'assurer que les données ne sont pas modifiées pendant que GitLab les réinstalle.

Pré-requis indispensables avant la restauration

Avant de taper la première commande, vous devez vous assurer de deux points critiques pour la réussite de votre plan de reprise d'activité :

  • Votre instance GitLab doit avoir exactement la même version que celle qui a créé la sauvegarde (ex: 17.10.2).
  • Vous devez avoir replacé vos fichiers gitlab.rb et gitlab-secrets.json dans le dossier /etc/gitlab/.

Le processus de restauration étape par étape

Pour effectuer cette opération, connectez-vous d'abord à votre serveur GitLab via SSH (Secure Shell).

Localiser le fichier de sauvegarde

Assurez-vous que votre archive se trouve bien dans le répertoire par défaut /var/opt/gitlab/backups et vérifiez son nom pour extraire le timestamp de sauvegarde.

cd /var/opt/gitlab/backups
ls -l

Résultat :

-rw------- 1 git git 123456789 Apr 20 10:00 1713532481_2026_04_20_17.10.2_gitlab_backup.tar

Arrêt des services de données

Stoppez les processus Puma (le serveur web) et Sidekiq (le gestionnaire de tâches) avant de lancer la récupération des données :

sudo gitlab-ctl stop puma
sudo gitlab-ctl stop sidekiq

Résultat :

ok: down: puma: 0s, normally up
ok: down: sidekiq: 0s, normally up
Arrêt des services GitLab

Lancement de la restauration

Exécutez la commande de restauration en utilisant uniquement le début du nom de fichier (le timestamp) :

sudo gitlab-backup restore BACKUP=1713532481

Vérification d'intégrité

Il est crucial de réaliser une vérification d'intégrité du système après une restauration :

sudo gitlab-rake gitlab:check

Résultat :

Unpacking backup ... [DONE]
Restoring database ... 
Be careful: This will replace your current database! (yes/no)? yes
[...]
Restoring repositories ...
 * group/project-alpha ... [DONE]
Restoring uploads ... [DONE]
Restore completed!

Vérification essentielle

Cette commande s'assure que la base de données et les dépôts Git communiquent correctement après la réinstallation.

Finalisation et redémarrage du serveur

Une fois l'archive extraite, relancez tous les composants pour remettre le serveur en production :

sudo gitlab-ctl reconfigure
sudo gitlab-ctl restart
Redémarrage des services GitLab

Vérification d'intégrité et nettoyage

Il est crucial de réaliser une vérification d'intégrité du système après une restauration, notamment en utilisant le flag de nettoyage :

sudo gitlab-rake gitlab:check SANITIZE=true

Résultat :

Checking GitLab subcomponents ...
Database: ... OK
Gitaly: ... OK
Sanitizing database ... [DONE]
GitLab check is completed.

Pourquoi utiliser SANITIZE ?

L'option SANITIZE=true supprime les adresses e-mail réelles et les jetons de sécurité de la base restaurée pour éviter tout envoi intempestif de mails si vous restaurez sur un serveur de test.

Conclusion

Vous maîtrisez désormais le cycle complet de survie : de la sauvegarde à la restauration. C'est la base de la fiabilité d'un administrateur système GitLab.

Maintenant que vos données sont en sécurité, nous allons voir comment alimenter votre serveur en important des dépôts existants depuis d'autres plateformes.

Espace commentaire

Écrire un commentaire

Rejoignez la discussion

Vous devez être connecté pour poster un message.

28 commentaires

ajdaini-hatim
Auteur Rédacteur Secouriste Actif
Avatar de ajdaini-hatim
ajdaini-hatim
Auteur Rédacteur Secouriste Actif

Tu peux scripter le passage de la commande :

sudo gitlab-backup restore BACKUP=1234567890_2024_01_01
sudo gitlab-rake gitlab:check SANITIZE=true

C'est ce qu'on fait en CI pour valider les backups.

18/05/2026 à 14:28

Peut-on automatiser le sanitize après chaque restore ?

18/05/2026 à 09:41
ajdaini-hatim
Auteur Rédacteur Secouriste Actif
Avatar de ajdaini-hatim
ajdaini-hatim
Auteur Rédacteur Secouriste Actif

Oui, ça dépend de la taille de ton instance et des services à redémarrer. Laisse-le finir, ne tue pas le processus, sinon tu vas corrompre la conf.

18/05/2026 à 04:22

Le sudo gitlab-ctl reconfigure met 10 minutes à passer. C'est normal ?

17/05/2026 à 21:04
ajdaini-hatim
Auteur Rédacteur Secouriste Actif
Avatar de ajdaini-hatim
ajdaini-hatim
Auteur Rédacteur Secouriste Actif

Vérifie que tu es dans le bon dossier. Le script cherche par défaut dans /var/opt/gitlab/backups. Si ton fichier est ailleurs, il ne le verra jamais.

17/05/2026 à 13:08
becker-aime
Membre
Avatar de becker-aime
becker-aime
Membre

J'ai une erreur Backup file is not found alors que j'ai bien mis le timestamp. Je comprends pas.

17/05/2026 à 07:54
ajdaini-hatim
Auteur Rédacteur Secouriste Actif
Avatar de ajdaini-hatim
ajdaini-hatim
Auteur Rédacteur Secouriste Actif

Non, il touche à la base et aux dépôts. Tes configs dans /etc/gitlab/ doivent être remises manuellement avant de lancer le restore.

17/05/2026 à 00:44

Est-ce que gitlab-backup écrase les fichiers de config existants ?

16/05/2026 à 20:35
ajdaini-hatim
Auteur Rédacteur Secouriste Actif
Avatar de ajdaini-hatim
ajdaini-hatim
Auteur Rédacteur Secouriste Actif

C'est le fichier qui contient tes clés de chiffrement. Sans lui, tes données restaurées sont illisibles. Gardez toujours une copie de ce fichier hors du serveur.

16/05/2026 à 15:39
slebon
Membre Actif
Avatar de slebon
slebon
Membre Actif

Merci pour le tuto, le gitlab-secrets.json est bien le point le plus critique, je l'avais zappé la première fois.

16/05/2026 à 08:04
ajdaini-hatim
Auteur Rédacteur Secouriste Actif
Avatar de ajdaini-hatim
ajdaini-hatim
Auteur Rédacteur Secouriste Actif

Augmente le timeout dans ton gitlab.rb ou lance le restore directement dans un screen ou tmux pour éviter que la session SSH ne coupe.

16/05/2026 à 02:18
pmarchand
Membre Actif
Avatar de pmarchand
pmarchand
Membre Actif

Mon backup est énorme, le script de restauration plante par timeout.

15/05/2026 à 20:16
ajdaini-hatim
Auteur Rédacteur Secouriste Actif
Avatar de ajdaini-hatim
ajdaini-hatim
Auteur Rédacteur Secouriste Actif

GitLab ne supporte pas l'extraction sélective par projet via la commande native. Il faut restaurer l'archive complète.

15/05/2026 à 15:12
epinto
Membre Actif
Avatar de epinto
epinto
Membre Actif

Comment on fait pour extraire juste un projet spécifique d'une grosse archive .tar ?

15/05/2026 à 09:05
ajdaini-hatim
Auteur Rédacteur Secouriste Actif
Avatar de ajdaini-hatim
ajdaini-hatim
Auteur Rédacteur Secouriste Actif

Exactement. Si tu ne mets pas SANITIZE=true lors du check final, les infos de prod restent actives. C'est dangereux en environnement de test.

15/05/2026 à 03:34
clement-franck
Membre Actif
Avatar de clement-franck
clement-franck
Membre Actif

J'ai restauré sur un serveur de dev, mais les mails partent vers les vrais utilisateurs. J'ai oublié le SANITIZE=true ?

14/05/2026 à 21:27
ajdaini-hatim
Auteur Rédacteur Secouriste Actif
Avatar de ajdaini-hatim
ajdaini-hatim
Auteur Rédacteur Secouriste Actif

T'as bien redémarré Gitaly ? Parfois il reste en rade. Tente un sudo gitlab-ctl restart gitaly puis relance le check.

14/05/2026 à 16:53
leon25
Membre
Avatar de leon25
leon25
Membre

La commande sudo gitlab-rake gitlab:check me renvoie des erreurs sur Gitaly alors que tout semblait vert avant.

14/05/2026 à 10:05
ajdaini-hatim
Auteur Rédacteur Secouriste Actif
Avatar de ajdaini-hatim
ajdaini-hatim
Auteur Rédacteur Secouriste Actif

Si tu ne le stoppes pas, tes données seront incohérentes pendant le restore. Couper les services est obligatoire pour éviter la corruption de la base de données.

14/05/2026 à 02:35

Est-ce que je dois vraiment arrêter sidekiq ? J'ai peur de perdre des jobs en cours.

13/05/2026 à 22:11
ajdaini-hatim
Auteur Rédacteur Secouriste Actif
Avatar de ajdaini-hatim
ajdaini-hatim
Auteur Rédacteur Secouriste Actif

Le 502, c'est souvent Puma qui n'a pas fini de démarrer. Check les logs avec sudo gitlab-ctl tail puma. Vérifie aussi que ton gitlab-secrets.json est bien au bon endroit.

13/05/2026 à 16:45
zgaillard
Membre
Avatar de zgaillard
zgaillard
Membre

Même chose ici, 502 après la restauration. J'ai pourtant bien suivi les étapes.

13/05/2026 à 09:52
uboulay
Membre
Avatar de uboulay
uboulay
Membre

J'ai restauré, tout semble OK, mais après sudo gitlab-ctl reconfigure, l'interface web affiche une erreur 502. Une idée ?

13/05/2026 à 03:50
ajdaini-hatim
Auteur Rédacteur Secouriste Actif
Avatar de ajdaini-hatim
ajdaini-hatim
Auteur Rédacteur Secouriste Actif

À ne jamais faire. GitLab est très strict sur les versions. Downgrade ton instance pour matcher exactement la version de la sauvegarde avant de lancer la restauration, sinon tu vas corrompre la base.

12/05/2026 à 21:32
charlotte00
Membre
Avatar de charlotte00
charlotte00
Membre

Moi j'ai un souci de version. Ma sauvegarde est en 17.10.2 mais mon GitLab actuel est en 17.10.3. Ça va planter ou pas ?

12/05/2026 à 14:48

Rejoindre la communauté

Recevoir les derniers articles gratuitement en créant un compte !

S'inscrire