gitea dump sauvegarde l’intégralité d’une instance — dépôts Git, base de données,
configuration, fichiers LFS — en une seule archive ZIP. Le service peut rester actif pendant
la sauvegarde. La restauration est manuelle mais déterministe.
Cette procédure a été testée sur Gitea 1.25.5 avec SQLite3 comme base de données. Les étapes sont identiques pour PostgreSQL ou MySQL, sauf pour la restauration de la base.
Ce que contient une sauvegarde
Section intitulée « Ce que contient une sauvegarde »L’archive générée par gitea dump contient :
| Contenu | Chemin source | Rôle |
|---|---|---|
| Dépôts Git | REPOSITORY ROOT | Tous les dépôts bare |
| Base de données | data/gitea.db | Données applicatives (users, issues, PRs…) |
| Fichiers LFS | data/lfs/ | Objets Git LFS |
| Configuration | app.ini | Paramètres de l’instance |
| Paquets | data/packages/ | Registre de paquets |
| Données | data/ | Autres données (avatars, attachements…) |
Préparer le répertoire de backup
Section intitulée « Préparer le répertoire de backup »# Créer le répertoire dédié aux archivessudo mkdir -p /var/lib/gitea/backupssudo chown git:git /var/lib/gitea/backupssudo chmod 750 /var/lib/gitea/backupsCréer une sauvegarde
Section intitulée « Créer une sauvegarde »La sauvegarde s’exécute en tant qu’utilisateur git, avec la variable d’environnement
GITEA_WORK_DIR pointant vers le répertoire de travail.
# Backup avec le service actif (pas d'interruption)sudo -u git GITEA_WORK_DIR=/var/lib/gitea \ gitea dump \ --config /etc/gitea/app.ini \ --work-path /var/lib/gitea \ --file /var/lib/gitea/backups/gitea-$(date +%Y%m%d-%H%M%S).zip \ --type zipLa commande affiche la progression et se termine par :
Finish dumping in file /var/lib/gitea/backups/gitea-20260328-194600.zipVérifiez le contenu de l’archive :
sudo -u git unzip -l /var/lib/gitea/backups/gitea-20260328-194600.zip | head -20Automatiser avec cron
Section intitulée « Automatiser avec cron »Ajoutez une tâche cron pour l’utilisateur git afin d’automatiser les sauvegardes quotidiennes.
# Éditer la crontab de l'utilisateur gitsudo crontab -u git -eAjoutez cette ligne pour un backup quotidien à 2h00 du matin :
# Backup Gitea quotidien à 2h00 — conservation 30 jours0 2 * * * GITEA_WORK_DIR=/var/lib/gitea /usr/local/bin/gitea dump \ --config /etc/gitea/app.ini \ --work-path /var/lib/gitea \ --file /var/lib/gitea/backups/gitea-$(date +\%Y\%m\%d).zip \ --type zip \ && find /var/lib/gitea/backups -name "gitea-*.zip" -mtime +30 -deleteVérifiez que la crontab est visible :
sudo crontab -u git -lRestaurer depuis une sauvegarde
Section intitulée « Restaurer depuis une sauvegarde »La restauration recrée une instance identique à partir de l’archive. Elle suppose que
Gitea est déjà installé (binaire + service systemd), mais non configuré (pas d’app.ini).
-
Arrêter le service
Fenêtre de terminal sudo systemctl stop gitea.service -
Vider les répertoires de données existants
Fenêtre de terminal sudo rm -rf /var/lib/gitea/datasudo rm -rf /etc/gitea/app.ini -
Extraire l’archive
Fenêtre de terminal # Créer un répertoire temporaire pour l'extractionsudo -u git mkdir -p /tmp/gitea-restoresudo -u git unzip /var/lib/gitea/backups/gitea-20260328-194600.zip \-d /tmp/gitea-restore -
Restaurer la configuration
Fenêtre de terminal sudo cp /tmp/gitea-restore/app.ini /etc/gitea/app.inisudo chown root:git /etc/gitea/app.inisudo chmod 660 /etc/gitea/app.ini # 660 pour le 1er démarrage post-restauration -
Restaurer les dépôts Git
Fenêtre de terminal sudo -u git cp -r /tmp/gitea-restore/repos/* \/var/lib/gitea/data/gitea-repositories/ -
Restaurer la base de données (SQLite)
Fenêtre de terminal sudo -u git cp /tmp/gitea-restore/data/gitea.db \/var/lib/gitea/data/gitea.db -
Restaurer les données (LFS, paquets, avatars)
Fenêtre de terminal sudo -u git cp -r /tmp/gitea-restore/data/* /var/lib/gitea/data/sudo chown -R git:git /var/lib/gitea/data -
Redémarrer et vérifier
Fenêtre de terminal sudo systemctl start gitea.servicesleep 5sudo systemctl is-active gitea.service# activecurl -o /dev/null -s -w "%{http_code}\n" http://localhost:3000/# 200 -
Durcir les permissions
Fenêtre de terminal sudo chmod 640 /etc/gitea/app.inisudo chmod 750 /etc/giteasudo systemctl restart gitea.service -
Nettoyer les fichiers temporaires
Fenêtre de terminal rm -rf /tmp/gitea-restore
Sauvegarder vers un stockage distant
Section intitulée « Sauvegarder vers un stockage distant »Pour une stratégie robuste, transférez les archives vers un stockage distant après chaque backup.
# Exemple avec rsync vers un serveur distantrsync -az --progress \ /var/lib/gitea/backups/ \ backup-user@backup.example.com:/backups/gitea/
# Exemple avec rclone vers S3 / Backblaze B2 / etc.rclone copy /var/lib/gitea/backups/ remote:bucket/gitea-backups/À retenir
Section intitulée « À retenir »gitea dumpsauvegarde tout (dépôts + base + config + LFS) en une seule commande- Le service peut rester actif pendant le backup — pas d’interruption de service
- La restauration nécessite que Gitea soit déjà installé mais non initialisé
- Les tokens
SECRET_KEYetINTERNAL_TOKENsont dans l’archive — protégez-la - Conservation recommandée : 30 jours de backups quotidiens + 4 semaines de backups hebdomadaires