From 9ba22d0de2d671236baffcf0fe66bdea903a1e82 Mon Sep 17 00:00:00 2001 From: MilesTEG Date: Mon, 19 Apr 2021 19:07:56 +0200 Subject: [PATCH] =?UTF-8?q?Modification=20du=20script=20de=20backup=20pour?= =?UTF-8?q?=20ne=20faire=20que=20la=20m=C3=A9thode=20archive=20dossier=20?= =?UTF-8?q?=20+=20Ajout=20de=20test=20du=20bon=20d=C3=A9roulement=20des=20?= =?UTF-8?q?commandes=20=20commandes=20$(docker=20start=20$NOM=5FCONTENEUR)?= =?UTF-8?q?=20et=20$(docker=20stop=20$NOM=5FCONTENEUR)?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- docker-compose/gitea/gitea-backup.sh | 109 ++++++++++++++++++--------- 1 file changed, 74 insertions(+), 35 deletions(-) diff --git a/docker-compose/gitea/gitea-backup.sh b/docker-compose/gitea/gitea-backup.sh index 66b8d17..25e7a39 100644 --- a/docker-compose/gitea/gitea-backup.sh +++ b/docker-compose/gitea/gitea-backup.sh @@ -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é."