Script de backup des données de Gitea. #58
184
docker-compose/gitea/gitea-backup.sh
Normal file
184
docker-compose/gitea/gitea-backup.sh
Normal file
@ -0,0 +1,184 @@
|
||||
##==============================================================================================
|
||||
## ##
|
||||
## Script gitea-backup.sh ##
|
||||
## ##
|
||||
##==============================================================================================
|
||||
## ##
|
||||
## gitea-backup.sh [<méthode de backup>] ##
|
||||
## <méthode de backup> est facultatif. S'il n'est pas spécifié, on fait les deux ! ##
|
||||
## <méthode de backup> = gitea_dump ##
|
||||
## = archive_dossier ##
|
||||
## ##
|
||||
##==============================================================================================
|
||||
##==============================================================================================
|
||||
## ##
|
||||
## Objectif du script : faire une sauvegarde de l'installation Gitea @ Docker ##
|
||||
## Il y a aura un shutdown du conteneur le temps de la sauvegarde afin que la base de ##
|
||||
## données ne soit pas modifiée pendant le backup, puis le conteneur sera redémarré. ##
|
||||
## ##
|
||||
## Il faudra créer une tâche planifiée pour lancer la sauvegarde toutes les nuits, par ##
|
||||
## exemple à 3h du matin. ##
|
||||
## ##
|
||||
##==============================================================================================
|
||||
## ##
|
||||
## Une méthode officielle de backup de la base de données est présente ici : ##
|
||||
## https://docs.gitea.io/en-us/backup-and-restore/#backup-command-dump ##
|
||||
## ##
|
||||
##==============================================================================================
|
||||
|
||||
|
||||
|
||||
# Récupération des arguments qu'on place dans des variables constantes
|
||||
declare -r nb_arg=$# # Nombre d'argument(s) fourni(s) au script.
|
||||
declare -r methode="$1" # 1er argument fourni
|
||||
|
||||
if [ $methode = "--help" -o $methode = "-help" -o $methode = "--h" -o $methode = "-h" ]; then
|
||||
echo "Le script gitea-backup.sh permet de faire une sauvegarde des données du conteneur Gitea."
|
||||
echo "Utilisation : gitea-backup.sh [<méthode de backup>]"
|
||||
echo "L'argument <méthode de backup> est facultatif. S'il n'est pas spécifié, on fait les deux !"
|
||||
echo " <méthode de backup> = gitea_dump"
|
||||
echo " = archive_dossier"
|
||||
echo
|
||||
exit 0
|
||||
fi
|
||||
|
||||
mode_backup=0 # 0 = aucune méthode indiquée ; 1 = gitea_dump ; 2 = archive_dossier
|
||||
|
||||
##──── ────────────────────────────────────────────────────────────────────────────────────────
|
||||
##──── ────────────────────────────────────────────────────────────────────────────────────────
|
||||
## ##
|
||||
## VALEURS À PERSONNALISER ##
|
||||
## ##
|
||||
## Chemin d'accès vers votre dossier docker et vers le dossier de backup de gitea ##
|
||||
|
||||
# Chemin du dossier qui contient le dossier des données (data) et des backups (backup-data)
|
||||
GITEA_DOCKER_DIR=/volume1/docker/gitea
|
||||
|
||||
# Les noms des dossiers montés dans le conteneur doivent êtres identiques à ceux présents sur la machine hôte. Sinon faudra modifier le script...
|
||||
# Nom du dossier contenant les backups qui doit exister car il doit être monté dans le conteneur à l'aide du docker-compose.yml.
|
||||
GITEA_BACKUP_DIR=backup-data
|
||||
|
||||
# Nom du dossier contenant les donneés de Gitea (data)
|
||||
GITEA_DATA_DIR=data
|
||||
|
||||
# Nom du conteneur
|
||||
NOM_CONTENEUR=gitea
|
||||
|
||||
# ID de l'utilisateur du NAS qui a les droits sur le conteneur
|
||||
ID_USER_NAS=1060
|
||||
|
||||
##──── ────────────────────────────────────────────────────────────────────────────────────────
|
||||
##──── ────────────────────────────────────────────────────────────────────────────────────────
|
||||
|
||||
|
||||
echo "$(date "+%R:%S - ") Script de sauvegarde des données du conteneur Gitea"
|
||||
|
||||
|
||||
##==============================================================================================
|
||||
## Vérification de la présence des dossiers du conteneur ##
|
||||
|
||||
cd $GITEA_DOCKER_DIR
|
||||
num_erreur=$? # On stocke le code de retour de la commande précédente.
|
||||
if [ $num_erreur -ne 0 ]; then # Si ce code n'est pas 0, il y a eu une erreur, on arrète le script.
|
||||
echo " Le chemin '$GITEA_DOCKER_DIR' est invalide ! Veuillez vérifier le chemin d'accès..."
|
||||
echo " Abandon, avec code d'erreur $num_erreur"
|
||||
exit $num_erreur
|
||||
fi
|
||||
|
||||
if [ ! -d "$GITEA_BACKUP_DIR" -o ! -d "$GITEA_DATA_DIR" ]; then # Au moins un des dossiers n'existe pas
|
||||
|
||||
if [ ! -d "$GITEA_BACKUP_DIR" ]; then # Le dossier $GITEA_BACKUP_DIR n'existe pas !
|
||||
echo " Le dossier '$GITEA_BACKUP_DIR' n'existe pas !"
|
||||
fi
|
||||
if [ ! -d "$GITEA_DATA_DIR" ]; then # Le dossier $GITEA_DATA_DIR n'existe pas !
|
||||
echo " Le dossier '$GITEA_DATA_DIR' n'existe pas !"
|
||||
fi
|
||||
echo " Abandon, avec code d'erreur $num_erreur"
|
||||
exit 999
|
||||
|
||||
else
|
||||
echo "-- Les dossiers $GITEA_BACKUP_DIR et $GITEA_DATA_DIR existent bien. On peut continuer."
|
||||
fi
|
||||
##==============================================================================================
|
||||
|
||||
|
||||
##==============================================================================================
|
||||
## ##
|
||||
## Définition du mode de backup à faire en fonction de la méthode donnée en argument ##
|
||||
case $methode in
|
||||
gitea_dump) # Méthode gitea_dump sélectionnée ##
|
||||
mode_backup=1
|
||||
#echo "mode_backup=$mode_backup"
|
||||
;;
|
||||
|
||||
archive_dossier) # Méthode archive_dossier sélectionnée ##
|
||||
mode_backup=2
|
||||
#echo "mode_backup=$mode_backup"
|
||||
;;
|
||||
|
||||
*) # Aucune méthode sélectionnée ##
|
||||
mode_backup=0
|
||||
#echo "mode_backup=$mode_backup"
|
||||
;;
|
||||
esac
|
||||
##==============================================================================================
|
||||
|
||||
|
||||
##==============================================================================================
|
||||
## ##
|
||||
## Partie concernant les sauvegardes ##
|
||||
if [ $mode_backup -eq 0 -o $mode_backup -eq 1 ]; then
|
||||
# Aucune méthode n'est choisie ou bien méthode gitea_dump sélectionnée
|
||||
|
||||
# Rappel des variables :
|
||||
# GITEA_DOCKER_DIR=/volume1/docker/gitea
|
||||
# GITEA_BACKUP_DIR=backup-data
|
||||
# GITEA_DATA_DIR=data
|
||||
# NOM_CONTENEUR=gitea
|
||||
# ID_USER_NAS=1060
|
||||
|
||||
echo "-- Sauvegarde via Gitea dump. (un peu chiant à restaurer...)"
|
||||
echo "###############################################################################"
|
||||
# Dans la commande suivante, les chemins d'accès donnés en paramètres sont des chemins d'accès à l'intérieur du conteneur, montés avec le docker-compose.yml.
|
||||
# Exemple de commande sans variables :
|
||||
# docker exec -u 1060 -it -w /backup-data $(docker ps -qf "name=gitea") bash -c '/app/gitea/gitea dump -c /data/gitea/conf/app.ini'
|
||||
docker exec -u $ID_USER_NAS -it -w /$GITEA_BACKUP_DIR $(docker ps -qf "name=$NOM_CONTENEUR") bash -c "/app/gitea/gitea dump -c /$GITEA_DATA_DIR/gitea/conf/app.ini"
|
||||
num_erreur=$? # On stocke le code de retour de la commande précédente.
|
||||
if [ $num_erreur -ne 0 ]; then # Si ce code n'est pas 0, il y a eu une erreur, on arrète le script.
|
||||
echo " Erreur lors de la commande de backup gitea dump."
|
||||
echo " Commande lancée :"
|
||||
echo " docker exec -u $ID_USER_NAS -it -w /$GITEA_BACKUP_DIR $(docker ps -qf "name=$NOM_CONTENEUR") bash -c "/app/gitea/gitea dump -c /$GITEA_DATA_DIR/gitea/conf/app.ini""
|
||||
echo " Abandon, avec code d'erreur $num_erreur"
|
||||
exit $num_erreur
|
||||
fi
|
||||
echo "###############################################################################"
|
||||
echo "-- Sauvegarde via Gitea dump terminée."
|
||||
fi
|
||||
|
||||
|
||||
if [ $mode_backup -eq 0 -o $mode_backup -eq 2 ]; then
|
||||
# Aucune méthode n'est choisie ou bien méthode archive_dossier sélectionnée
|
||||
echo "-- Sauvegarde par création d'une archive de tout le dossier $GITEA_DATA_DIR"
|
||||
echo "###############################################################################"
|
||||
echo "-- Extinction du conteneur $NOM_CONTENEUR"
|
||||
cd $GITEA_DOCKER_DIR # Même si on est censé déjà être là...
|
||||
docker stop $NOM_CONTENEUR
|
||||
|
||||
tar -czf $GITEA_BACKUP_DIR/Gitea-Data-Backup-`date +%Y-%m-%d--%Hh%Mm%Ss`.tar.gz ./$GITEA_DATA_DIR
|
||||
# On Linux/Unix, in order to backup directories you must use tar :
|
||||
# - to backup a directory : tar cf - directory | 7z a -si directory.tar.7z
|
||||
# - to restore your backup : 7z x -so directory.tar.7z | tar xf -
|
||||
tar cf - ./$GITEA_DATA_DIR | 7z a -si $GITEA_BACKUP_DIR/Gitea-Data-Backup-`date +%Y-%m-%d--%Hh%Mm%Ss`.7z
|
||||
echo "-- Archive de tout le dossier $GITEA_DATA_DIR créée."
|
||||
|
||||
echo "-- Redémarrage du conteneur Gitea..."
|
||||
docker start $NOM_CONTENEUR
|
||||
echo "###############################################################################"
|
||||
echo "-- Processus de sauvegarde par création d'archive terminé."
|
||||
|
||||
fi
|
||||
|
||||
echo "$(date "+%R:%S - ") Fin du script de sauvegarde des donneés du conteneur Gitea"
|
||||
exit 0
|
||||
## ##
|
||||
##==============================================================================================
|
Loading…
Reference in New Issue
Block a user