Miles-GiteaRestore (#64)

This commit is contained in:
NightPumpkin 2021-04-19 20:10:47 +02:00
commit d87049b00e
3 changed files with 450 additions and 42 deletions

View File

@ -1,5 +1,5 @@
## Discord Plex FR : https://discord.gg/ERpYMqS
## Version 2021-03-30
## Version 2021-04-19
##==============================================================================================
## ##
## Fichier docker-compose.yml pour Gitea ##
@ -31,10 +31,10 @@ version: "2.4"
services:
server:
image: gitea/gitea:latest # https://docs.gitea.io/en-us/install-with-docker/
# https://docs.gitea.io/fr-fr/install-with-docker/
# https://github.com/go-gitea/gitea
image: gitea/gitea:1 # On reste ici avec la dernière version stable de la branche 1.x.x
# https://docs.gitea.io/en-us/install-with-docker/
# https://docs.gitea.io/fr-fr/install-with-docker/
# https://github.com/go-gitea/gitea
container_name: gitea
#network_mode: "bridge"
@ -77,8 +77,9 @@ services:
# ###############
volumes:
- "/volume1/docker/gitea/data:/data"
- "/etc/localtime:/etc/localtime:ro"
- "/volume1/docker/gitea/data:/data" # Dossier pour les données de Gitea (Dépôts, BDD, config...)
- "/volume1/docker/gitea/backup-data:/backup-data" # Dossier pour les sauvegardes régulières à lancer avec un script en tâche planifiée.
- "/etc/localtime:/etc/localtime:ro" # Nécessaire pour avoir le temps local correct (vu que la variable TZ=Europe/Paris n'existe pas pour ce conteneur...)
ports:
- "8196:3000" # Choisir un port de connexion libre sur votre machine, ce sera la port de connexion pour l'interface graphique

View File

@ -10,6 +10,16 @@
## = archive_dossier ##
## ##
##==============================================================================================
##==============================================================================================
## ##
## MAJ du 19.04.2021 : La partie de sauvegarde gite_dump a été commentée, et n'est donc ##
## plus utilisée, car la restauration de cette archive est trop galère à mettre en place. ##
## Donc soit on ne donne aucun paramètre en argument au script, soit on met archive_dossier. ##
## L'autre paramètre n'aura donc plus aucun effet. ##
## ##
##==============================================================================================
##==============================================================================================
## ##
## Objectif du script : faire une sauvegarde de l'installation Gitea @ Docker ##
@ -65,7 +75,7 @@ GITEA_DATA_DIR=data
NOM_CONTENEUR=gitea
# ID de l'utilisateur du NAS qui a les droits sur le conteneur
ID_USER_NAS=1060
ID_USER_NAS=1000
##──── ────────────────────────────────────────────────────────────────────────────────────────
##──── ────────────────────────────────────────────────────────────────────────────────────────
@ -141,56 +151,85 @@ esac
##==============================================================================================
## ##
## Partie concernant les sauvegardes ##
if [ $mode_backup -eq 0 ] || [ $mode_backup -eq 1 ]; then
# Aucune méthode n'est choisie ou bien méthode gitea_dump sélectionnée
# if [ $mode_backup -eq 0 ] || [ $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
# # 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 -i -w /backup-data $(docker ps -qf "name=gitea") bash -c '/app/gitea/gitea dump -c /data/gitea/conf/app.ini'
# Note : La commande lancée dans une tâche CRON (planifiée) ne permet pas l'utilisation du paramètre -t.
# Commande à lancer dans un terminal :
# docker exec -u 1060 -i -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 -i -w /$GITEA_BACKUP_DIR $(/usr/local/bin/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
# 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 -i -w /backup-data $(docker ps -qf "name=^gitea$") bash -c '/app/gitea/gitea dump -c /data/gitea/conf/app.ini'
# # Note : La commande lancée dans une tâche CRON (planifiée) ne permet pas l'utilisation du paramètre -t.
# # Commande à lancer dans un terminal :
# # docker exec -u 1060 -i -w /backup-data $(docker ps -qf "name=^gitea$") bash -c '/app/gitea/gitea dump -c /data/gitea/conf/app.ini'
# # Explication pour $(docker ps -qf "name=^gitea$") ici : https://stackoverflow.com/a/34497614
# docker exec -u $ID_USER_NAS -i -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 ] || [ $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
retour_cmd=1111 # Valeur reset
echo -e "\t-- Extinction du conteneur $(docker stop $NOM_CONTENEUR)\n"
retour_cmd=$? # Le code d'exit de la fonction est stocké dans cette variable.
if [ $retour_cmd -ne 0 ]; then
if [ $retour_cmd -eq 1111 ]; then
echo "### DEBUG : soucis avec la récupération du retour de commande #1470000 "
exit 1470000
fi
echo "!! Le conteneur $NOM_CONTENEUR ne peut pas être arrêté..."
echo "!! Fin du script. Erreur 777"
echo
exit 777
fi echo "-- Création de l'archive du dossier $GITEA_DATA_DIR"
# Compression tar.gz :
tar -czf $GITEA_BACKUP_DIR/Gitea-Data-Backup-`date +%Y-%m-%d--%Hh%Mm%Ss`.tar.gz ./$GITEA_DATA_DIR
# Compression 7z après obtention d'un .tar
# 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
retour_cmd=1111 # Valeur reset
echo -e "\t-- Redémarrage du conteneur $(docker start $NOM_CONTENEUR)\n"
retour_cmd=$? # Le code d'exit de la fonction est stocké dans cette variable.
if [ $retour_cmd -ne 0 ]; then
if [ $retour_cmd -eq 1111 ]; then
echo "### DEBUG : soucis avec la récupération du retour de commande #1470000 "
exit 1470000
fi
echo "!! Le conteneur $NOM_CONTENEUR ne peut pas être redémarré..."
echo "!! Fin du script. Erreur 777"
echo
exit 777
fi
echo "###############################################################################"
echo "-- Processus de sauvegarde par création d'archive terminé."

View File

@ -0,0 +1,368 @@
##==============================================================================================
## ##
## Script gitea-restore.sh ##
## ##
##==============================================================================================
## ##
## gitea-restore.sh <méthode de backup> <fichier à restaurer> ##
## <méthode de backup> = --gitea_dump ou --gdmp ##
## = --archive_dossier ou --ad ##
## <fichier à restaurer> = le nom du fichier archive à utiliser pour la restauration. ##
## Ne peut être qu'un .zip pour la méthode --gitea_dump, ##
## ou bien ##
## ne peut être qu'un .tar.gz pour la méthode --archive_dossier #
## Il faut impérativement donner le chemin d'accès complet de ce fichier archive... ##
## ##
##==============================================================================================
##==============================================================================================
## ##
## Objectif du script : Restaurer la sauvegarde de Gitea passée en paramètre ##
## Il faudra indiquer la méthode de restauration basée sur le type de sauvegarde à restaurer. ##
## Il faudra également indiquer l'archive à utiliser pour la restauration. ##
## ##
##==============================================================================================
## ##
## Une méthode officielle de restauration, de la base de données est présente ici : ##
## https://docs.gitea.io/en-us/backup-and-restore/#restore-command-restore ##
## ##
##==============================================================================================
##==============================================================================================
## ##
## MAJ du 19.04.2021 : La partie de sauvegarde gite_dump ne sera pas programmée car c'est ##
## trop galère à mettre en place. ##
## Donc soit on ne donne aucun paramètre en argument au script, soit on met archive_dossier. ##
## L'autre paramètre n'aura donc plus aucun effet. Ne pas l'utiliser ! ##
## Cependant le code pour distinguer les deux paramètres reste, mais il n'y aura rien dans ##
## la partie gitea_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
declare -r fichier="$2" # 2ème argument fourni
declare -r tous_les_args="$*" # Tous les arguments
##==============================================================================================
## VALEURS À PERSONNALISER ##
## ##
## Chemin d'accès vers votre dossier docker et vers le dossier de backup de gitea ##
##==============================================================================================
# Chemin complet 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=1000
##==============================================================================================
##==============================================================================================
echo
echo "Le script gitea-restore.sh permet de faire une restauration des données du conteneur Gitea."
echo
##──── ────────────────────────────────────────────────────────────────────────────────────────
## Début de la section concernant les fonctions ##
##──── ────────────────────────────────────────────────────────────────────────────────────────
f_affiche_syntaxe(){
# Fonction pour afficher la syntaxe d'utilisation du fichier script.
# syntax: f_affiche_syntaxe <paramètre1> [<paramètre2>]
# 1er paramètre : $1
# 2nd paramètre éventuel : $2 Ce sera ce qui a été fourni en argument du script.
local f_nb_arg=$#
local f_param_1=$1
local f_param_2=$2
echo
if [ "$f_param_1" = "#1" ]; then
echo "La méthode de restauration choisie '$f_param_2' est incorrecte."
echo
elif [ "$f_param_1" = "#2" ]; then
if [ -z "$f_param_2" ]; then
echo "Aucun paramètre n'a été fourni au script..."
else
echo "Le nombre de paramètre fourni n'est pas correct. Paramètres fournis : '$f_param_2'"
fi
echo
fi
echo "Utilisation : gitea-restore.sh <méthode de backup> <fichier à restaurer>"
#echo " * <méthode de backup> : --gitea_dump ou --gdmp pour utiliser la méthode gitea dump."
echo " * <méthode de backup> : --archive_dossier ou --ad pour utiliser la méthode archive dossier."
echo " * <fichier à restaurer> : le nom du fichier archive à utiliser pour la restauration."
#echo " Ne peut être qu'un .zip pour la méthode --gitea_dump,"
#echo " ou bien ne peut être qu'un .7z ou .tar.gz pour la méthode --archive_dossier"
echo " Ne peut être qu'un .7z ou un .tar.gz pour la méthode --archive_dossier."
echo " Il faut impérativement donner le chemin d'accès complet de ce fichier archive..."
echo
if [ "$f_param_1" = "#3" ]; then
exit 1
fi
exit 3
}
f_verif_fichier_existe() {
# Fonction qui vérifie si le fichier fourni en paramètre existe, et qu'il s'agit d'un
# fichier zip ou d'un fichier 7z.
# Quoiqu'il arrive, l'appel à cette fonction marque la fin du script.
#
# syntax: f_verif_fichier_existe [<fichier_a_tester>]
local fichier_a_tester=$1
if [ -z "$fichier_a_tester" ]; then
echo "!! Erreur fatale, le paramètre à tester de la fonction f_verif_fichier_existe() est vide ! Revoir l'appel à la fonction..."
echo "!! Fin du script. Code d'erreur 10."
return 11 # On stoppe immédiatement l'exécution de la fonction !
fi
if [ ! -s "$fichier_a_tester" ]; then # Le fichier 'fichier_a_tester' n'existe pas ou a un taille de 0 !
return 1 # C'est le code d'erreur pour indiquer que le fichier n'existe pas.
fi
# Quelle est l'extension du fichier fichier_a_tester ?
fullfilename="$fichier_a_tester"
filename=$(basename "$fullfilename")
ext="${filename#*.}"
echo $ext
return 0
}
f_verif_dossier_existe() {
# Fonction qui vérifie si le dossier fourni en paramètre existe.
#
# syntax: f_verif_dossier_existe <dossier_a_tester>
local dossier_a_tester=$1 # On récupère le 1er paramètre passé en argument à la fonction.
if [ -d "$dossier_a_tester" ]; then # Le dossier 'dossier_a_tester' existe ! Il sera renommé.
return 0 # C'est le code d'erreur pour indiquer que le dossier existe bien.
else
return 1 # C'est le code d'erreur pour indiquer que le dossier n'existe pas.
fi
# Si le script arrive ici, c'est qu'il y a un soucis...
echo "BLABLA Si tu lis ça, c'est que y a une couille dans le paté !!! 9988"
exit 9988
}
##──── ────────────────────────────────────────────────────────────────────────────────────────
## Fin de la section concernant les fonctions ##
##──── ────────────────────────────────────────────────────────────────────────────────────────
##──── ────────────────────────────────────────────────────────────────────────────────────────
## Début du programme principal ##
##──── ────────────────────────────────────────────────────────────────────────────────────────
if [ $nb_arg -ne 2 ]; then
f_affiche_syntaxe "#2" "$tous_les_args" # On affiche la syntaxe car le nombre de paramètres n'est pas correct.
fi
mode_backup=""
case "$methode" in
--[hH][eE][lL][pP] | --[hH] | -[hH][eE][lL][pP] | -[hH] ) # Premier argument --help ou --h
f_affiche_syntaxe # On affiche la syntaxe
;;
--gitea_dump | --gdmp)
mode_backup="gitea_dump"
;; # On ne surcharge pas cette partie avec le code de restauration, ce sera fait plus bas.
--archive_dossier | --ad)
mode_backup="archive_dossier"
;; # On ne surcharge pas cette partie avec le code de restauration, ce sera fait plus bas.
*) # Aucune méthode sélectionnée valide ou bien trop d'arguments
mode_backup="non_choisi"
f_affiche_syntaxe "#1" "$methode" # On affiche la syntaxe car le paramètre de méthode est incorrect.
echo "BLABLA Si tu lis ça, c'est que y a une couille dans le paté !!! 9999"
exit 9999
;;
esac
echo "La méthode de restauration choisie est : $methode "
echo
# Test si le fichier en argument existe et est valide (archive zip pour ).
ext_fichier=""
ext_fichier="$(f_verif_fichier_existe $fichier)" # Vérification que le fichier à restaurer existe bien et est bien un .zip ou un .7z
retour_fct=$? # Le code d'exit de la fonction est stocké dans cette variable.
if [ $retour_fct -ne 0 ]; then
case "$retour_fct" in
1) # Le fichier n'existe pas.
echo "!! Le fichier $fichier n'existe pas. La restauration ne peut pas s'effectuer."
echo "!! Fin du script. Erreur 10"
echo
exit 10
;;
11) # Problème avec l'appelle de la fonction, revoir le code ci-dessus...
exit 11
;;
*) # Toutes autres valeurs ne devrait pas exister !
echo "!! Erreur fatale qui ne devrait pas exister !"
echo "!! Code d'erreur 1000"
exit 1000
;;
esac
else
echo "Le fichier existe et a une taille non nulle. Le script peut continuer."
echo
echo "Début de la restauration ---"
fi
cd $GITEA_DOCKER_DIR # On se place dans le dossier du conteneur gitea
retour_cmd=$? # Le code d'exit de la fonction est stocké dans cette variable.
if [ $retour_cmd -ne 0 ]; then
echo "!! Le dossier $GITEA_DOCKER_DIR semble ne pas exister. Vérifier la variable GITEA_DOCKER_DIR dans le script."
echo "!! Fin du script. Erreur 333"
echo
exit 333
fi
# Note : Si le dossier GITEA_DATA_DIR existe il sera renommé en GITEA_DATA_DIR--$(date +%Y-%m-%d--%Hh%M)
# avec la commande mv "$GITEA_DATA_DIR" "$GITEA_DATA_DIR--$(date +%Y-%m-%d--%Hh%M)"
# Ce test sera fait lors de l'appel de la fonction verif_dossier_existe().
# Aucun choix ne sera possible, le dossier existant sera forcément renommé.
#
# Note : Il faut que le dossier GITEA_BACKUP_DIR existe, ce qui semble acquis vu que le fichier backup
# à restaurer doit être dedans... Mais il est vital que ce dossier existe car un dossier 'TEMP'
# y sera créé pour extraire les données de l'archive (zip, 7z, ou tar.gz)...
#
# On teste maintenant l'existence des deux dossiers précédents.
# Si un des deux dossiers n'est pas présents, le script sera interrompu.
# 1er test : GITEA_DATA_DIR
retour_fct=11111 # Valeur reset.
f_verif_dossier_existe $GITEA_DATA_DIR
retour_fct=$? # Le code d'exit de la fonction est stocké dans cette variable.
if [ $retour_fct -eq 0 ]; then # Le dossier existe, on peut continuer
echo "-- Le dossier $dossier_a_tester existe et va être renommé en $dossier_a_tester--$(date +%Y-%m-%d--%Hh%M)"
else # Le dossier n'existe pas
echo "!! Le dossier $dossier_a_tester n'existe ! Veuillez créer le dossier $dossier_a_tester puis relancer le script."
echo "!! Interruption de l'exécution du script. Code 444"
exit 444 # C'est le code d'erreur pour indiquer que le dossier n'existe pas et que le script a été interrompu.
fi
# 2ème test : GITEA_BACKUP_DIR
retour_fct=11111 # Valeur reset.
f_verif_dossier_existe $GITEA_BACKUP_DIR
retour_fct=$? # Le code d'exit de la fonction est stocké dans cette variable.
if [ $retour_fct -eq 0 ]; then # Le dossier existe, on peut continuer
echo "-- Le dossier $dossier_a_tester existe bien. La restauration peut continuer."
else # Le dossier n'existe pas
echo "!! Le dossier $dossier_a_tester n'existe ! Vérifier que ce dossier est bien paramétré dans le script."
echo "!! Interruption de l'exécution du script. Code 555"
exit 555 # C'est le code d'erreur pour indiquer que le dossier n'existe pas et que le script a été interrompu.
fi
# Maintenant on sait que les deux dossiers GITEA_BACKUP_DIR et GITEA_DATA_DIR existent.
case "$mode_backup" in
gitea_dump)
if [ $ext_fichier != "zip" ]; then
echo "!! Le fichier archive $(basename "$fichier") n'est pas une archive ZIP."
echo "!! Fin du script."
f_affiche_syntaxe "#3"
fi
echo -e "\t-- Méthode de restauration à venir, un jour si j'ai le courage...\n"
echo -e "\t-- Donc, pour le moment il ne se passera rien avec cette méthode...\n"
exit 0
# Extraction de l'archive zip créé avec gitea dump avec 7z :
# 7z x -o/volume1/docker/gitea/backup-data -tzip /volume1/docker/gitea/backup-data/gitea-dump-1618217429.zip
echo
;;
archive_dossier)
if [ $ext_fichier != "7z" ] && [ $ext_fichier != "tar.gz" ]; then
echo "!! Le fichier archive $(basename "$fichier") n'est pas une archive 7z ou tar.gz."
echo "!! Fin du script."
f_affiche_syntaxe "#3" # Le script est interrompu.
fi
echo -e "\t-- Restauration de la sauvegarde $fichier \n\t par extraction de l'archive dans le dossier $GITEA_DATA_DIR\n"
# Comme on sait que le dossier existe, il est renommée après avoir éteint le conteneur.
retour_cmd=1111 # Valeur reset
echo -e "\t-- Extinction du conteneur $(docker stop $NOM_CONTENEUR)\n"
retour_cmd=$? # Le code d'exit de la fonction est stocké dans cette variable.
if [ $retour_cmd -ne 0 ]; then
if [ $retour_cmd -eq 1111 ]; then
echo "### DEBUG : soucis avec la récupération du retour de commande #1470000 "
exit 1470000
fi
echo "!! Le conteneur $NOM_CONTENEUR ne peut pas être arrêté..."
echo "!! Fin du script. Erreur 777"
echo
exit 777
fi
mv "$GITEA_DATA_DIR" "$GITEA_DATA_DIR--$(date +%Y-%m-%d--%Hh%M)"
# En fonction du type d'archive donnée en paramètre au script, ce n'est pas la même manière d'extraire les données.
# Mais quoiqu'il arrive on crée un dossier TEMP dans le dossier GITEA_BACKUP_DIR pour y placer les données extraites.
# Ce dossier TEMP sera supprimé à la fin de la restauration.
mkdir "$GITEA_BACKUP_DIR/TEMP"
case "$ext_fichier" in
7z)
echo -e "\t-- Extraction des données de l'archive 7z utilisée.\n"
# Restauration d'un fichier 7z :
7z x -so $fichier | tar xf - -C "$GITEA_BACKUP_DIR/TEMP"
;;
tar.gz)
echo -e "\t-- Extraction des données de l'archive tar.gz utilisée.\n"
# Restauration d'un fichier tar.gz :
tar -xzf $fichier -C "$GITEA_BACKUP_DIR/TEMP"
;;
*)
echo "Erreur d'extension non prévue ! Revoir le code. Erreur 88."
exit 88
esac
# On déplace le dossier extrait data dans GITEA_DOCKER_DIR (Rappel on est dans le dossier gitea qui contient le dossiers GITEA_BACKUP_DIR)
mv "$GITEA_BACKUP_DIR/TEMP/data" "$GITEA_DOCKER_DIR" # On pourrait utiliser "./" à la place de "$GITEA_DOCKER_DIR"
# Le dossier TEMP étant maintenant vide, on le supprime
rm -rf "$GITEA_BACKUP_DIR/TEMP"
retour_cmd=1111 # Valeur reset
echo -e "\t-- Redémarrage du conteneur $(docker start $NOM_CONTENEUR)\n"
retour_cmd=$? # Le code d'exit de la fonction est stocké dans cette variable.
if [ $retour_cmd -ne 0 ]; then
if [ $retour_cmd -eq 1111 ]; then
echo "### DEBUG : soucis avec la récupération du retour de commande #1470000 "
exit 1470000
fi
echo "!! Le conteneur $NOM_CONTENEUR ne peut pas être redémarré..."
echo "!! Fin du script. Erreur 777"
echo
exit 777
fi
;;
*)
echo "!! Un problème est survenu ! Revoir le script. Code XYZ = 199 !"
echo
return 199
;;
esac
echo
echo "Restauration terminée. Bonne journée :)"
echo