From 5e6ca089667d57c26d87b887f02134b72190d94a Mon Sep 17 00:00:00 2001 From: Djan GICQUEL <> Date: Sun, 7 Mar 2021 14:52:30 +0100 Subject: [PATCH 01/77] version initale de developpement --- borg-gui.sh | 139 ++++++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 139 insertions(+) create mode 100755 borg-gui.sh diff --git a/borg-gui.sh b/borg-gui.sh new file mode 100755 index 0000000..669e04a --- /dev/null +++ b/borg-gui.sh @@ -0,0 +1,139 @@ +#! /bin/bash + +# META VARIABLES +################################################################################# +export BORG_UNKNOWN_UNENCRYPTED_REPO_ACCESS_IS_OK=yes +export BORG_RELOCATED_REPO_ACCESS_IS_OK=yes + +# FONCTIONS +################################################################################# +TestBorgRepo () { +if [ ! -f "config" ]; then +TestBorgErr=1 +infoerr=$(echo "Impossible de trouver le fichier de configuration borg.") +zenity --width=500 --error --text="$infoerr" +exit +fi + +if [ ! -d "data" ]; then +TestBorgErr=1 +infoerr=$(echo "Impossible de trouver le fichier de configuration borg.") +zenity --width=500 --error --text="$infoerr" +exit +fi + +if [ -d "lock.exclusive" ]; then +TestBorgErr=1 +infoerr=$(echo "Le dépôt est bloqué, une opération est peut-être en cours") +zenity --width=500 --error --text="$infoerr" +exit +fi +} + +bobainfoa () { +TestBorgRepo +borg info ./::$borg_repo +} + +DossierPresent () { +if [ ! -d "$1" ]; then +inforerror=$(echo "Erreur, le dossier $1 est absent.\nFin du script.") +zenity --width=500 --error --text="$inforerror" +exit +fi +} + +SauvegardeBorg () { +DossierPresent $borg_repo + +zenity --width=500 --info --text=" +Nom du dépôt : $borg_repo\n\ +Nom archive : $borg_archive\n\ +Compression : $borg_compress\n\ +" + +borg create $borg_excludes $borg_compress $borg_repo::$borg_archive $borg_dir | zenity --width=400 --progress --pulsate --auto-close --title="Sauvegarde en cours..." +sync | zenity --width=400 --progress --pulsate --auto-close --title="Syncronisation des écritures..." +zenity --notification --text "Sauvegarde $nomsauvegarde terminée" +zenity --width=300 --info --text "Sauvegarde $nomsauvegarde terminée" +} + +# Profils et tests +################################################################################# +# si $1 n'est pas vide fichier de profil = $1 +# sinon afficher les profils disponibles +if [ ! $1 = "" ]; then + fichierprofil="$1" + . "$1" +else + fichierprofil=$(ls -1 $HOME/.config/borg/*.txt | zenity --height=500 --width=600 --list --title "Profils" --column "profil") && . $fichierprofil +fi + +if [ "$nomsauvegarde" = "" ]; then + infoerr=$(echo "Profil non défini ou incomplet.") + zenity --width=200 --error --text="$infoerr" + exit +elif [ "$borg_repo" = "" ]; then + infoerr=$(echo "Profil non défini ou incomplet.") + zenity --width=200 --error --text="$infoerr" + exit +fi + +cd $borg_repo +TestBorgRepo + +################################################################################# +# MENU PRINCIPAL +################################################################################# + +################################################################################# +# Gestion des options du menu +################################################################################# +while [ ! "$choixmenu" = "QUITTER" ] +do +choixmenu=$(echo -e "\ +creer_sauvegarde\n\ +monter_sauvegarde\n\ +demonter_sauvegarde\n\ +supprimmer_sauvegarde\n\ +info_sauvegarde\n\ +info_depot\n\ +afficher_variables_profil\n\ +QUITTER\ +" | zenity --list --height=400 --width=400 --title "BORG GUI" --column "Dépôt : $nomsauvegarde") + +if [ "$choixmenu" = "creer_sauvegarde" ] ;then + TestBorgRepo + SauvegardeBorg + +elif [ "$choixmenu" = "monter_sauvegarde" ];then + borg_archive=$(borg list --short $borg_repo | zenity --height=500 --list --title "Listes des archives" --column "Archive") + mkdir $HOME/$borg_archive + borg mount $borg_repo::$borg_archive $HOME/$borg_archive + zenity --width=400 --info --text="La sauvegarde est disponible dans le dossier\n$HOME/$borg_archive" + +elif [ "$choixmenu" = "demonter_sauvegarde" ];then + ptnmontage=$(mount | grep borgfs | cut -d" " -f3 | zenity --width=500 --height=400 --list --title "Liste des points de montages" --column "") + fusermount -u $ptnmontage + sleep 5 + rmdir $ptnmontage + +elif [ "$choixmenu" = "supprimmer_sauvegarde" ];then + borg_archive=$(borg list --short $borg_repo | zenity --height=500 --list --title "Listes des archives" --column "Archive") + borg delete $borg_repo::$borg_archive | zenity --width=400 --progress --pulsate --auto-close --title="Suppression en cours" + zenity --width=200 --info --text="Suppresion terminée" + +elif [ "$choixmenu" = "info_sauvegarde" ];then + borg_archive=$(borg list --short $borg_repo | zenity --height=500 --list --title "Listes des archives" --column "Archive") + info=$(borg info $borg_repo::$borg_archive) + zenity --width=600 --info --text="$info" + +elif [ "$choixmenu" = "info_depot" ];then + info=$(borg info $borg_repo) + zenity --width=600 --info --text="$info" + +elif [ "$choixmenu" = "afficher_variables_profil" ];then + info=$(cd $dossierprofil && cat $fichierprofil) + zenity --width=500 --info --text="$info" +fi +done From 72a512634590a790789abfc0dbb05f4536b4e486 Mon Sep 17 00:00:00 2001 From: Djan GICQUEL <> Date: Sun, 7 Mar 2021 15:42:18 +0100 Subject: [PATCH 02/77] =?UTF-8?q?gestion=20du=20choix=20"aucun=20choix"=20?= =?UTF-8?q?erreur=20des=20tests=20du=20profil=20explicites=20d=C3=A9placem?= =?UTF-8?q?ent=20de=20zenity=20progress=20sur=20borg=20create=20(test?= =?UTF-8?q?=C3=A9)?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- borg-gui.sh | 86 ++++++++++++++++++++++++++++------------------------- 1 file changed, 46 insertions(+), 40 deletions(-) diff --git a/borg-gui.sh b/borg-gui.sh index 669e04a..2a8dd9f 100755 --- a/borg-gui.sh +++ b/borg-gui.sh @@ -1,5 +1,11 @@ #! /bin/bash +which zenity +if [ "$?" != "0" ]; then + echo "Zenity n'est pas installé.";exit + exit +fi + # META VARIABLES ################################################################################# export BORG_UNKNOWN_UNENCRYPTED_REPO_ACCESS_IS_OK=yes @@ -8,54 +14,51 @@ export BORG_RELOCATED_REPO_ACCESS_IS_OK=yes # FONCTIONS ################################################################################# TestBorgRepo () { -if [ ! -f "config" ]; then -TestBorgErr=1 -infoerr=$(echo "Impossible de trouver le fichier de configuration borg.") -zenity --width=500 --error --text="$infoerr" -exit -fi + if [ ! -f "config" ]; then + TestBorgErr=1 + infoerr=$(echo "Impossible de trouver le fichier de configuration borg.") + zenity --width=500 --error --text="$infoerr" + exit + fi -if [ ! -d "data" ]; then -TestBorgErr=1 -infoerr=$(echo "Impossible de trouver le fichier de configuration borg.") -zenity --width=500 --error --text="$infoerr" -exit -fi + if [ ! -d "data" ]; then + TestBorgErr=1 + infoerr=$(echo "Impossible de trouver le fichier de configuration borg.") + zenity --width=500 --error --text="$infoerr" + exit + fi -if [ -d "lock.exclusive" ]; then -TestBorgErr=1 -infoerr=$(echo "Le dépôt est bloqué, une opération est peut-être en cours") -zenity --width=500 --error --text="$infoerr" -exit -fi + if [ -d "lock.exclusive" ]; then + TestBorgErr=1 + infoerr=$(echo "Le dépôt est bloqué, une opération est peut-être en cours") + zenity --width=500 --error --text="$infoerr" + exit + fi } bobainfoa () { -TestBorgRepo -borg info ./::$borg_repo + TestBorgRepo + borg info ./::$borg_repo } DossierPresent () { -if [ ! -d "$1" ]; then -inforerror=$(echo "Erreur, le dossier $1 est absent.\nFin du script.") -zenity --width=500 --error --text="$inforerror" -exit -fi + if [ ! -d "$1" ]; then + inforerror=$(echo "Erreur, le dossier $1 est absent.\nFin du script.") + zenity --width=500 --error --text="$inforerror" + exit + fi } SauvegardeBorg () { -DossierPresent $borg_repo + DossierPresent $borg_repo + DossierPresent $borg_dir -zenity --width=500 --info --text=" -Nom du dépôt : $borg_repo\n\ -Nom archive : $borg_archive\n\ -Compression : $borg_compress\n\ -" + zenity --width=500 --height=600 --info --text="$(cd $dossierprofil && cat $fichierprofil)" -borg create $borg_excludes $borg_compress $borg_repo::$borg_archive $borg_dir | zenity --width=400 --progress --pulsate --auto-close --title="Sauvegarde en cours..." -sync | zenity --width=400 --progress --pulsate --auto-close --title="Syncronisation des écritures..." -zenity --notification --text "Sauvegarde $nomsauvegarde terminée" -zenity --width=300 --info --text "Sauvegarde $nomsauvegarde terminée" + borg create $borg_excludes $borg_compress $borg_repo::$borg_archive $borg_dir | zenity --width=400 --progress --pulsate --auto-close --title="Sauvegarde en cours..." + sync | zenity --width=400 --progress --pulsate --auto-close --title="Synchronisation des écritures..." + zenity --notification --text "Sauvegarde $nomsauvegarde terminée" + zenity --width=300 --info --text "Sauvegarde $nomsauvegarde terminée" } # Profils et tests @@ -70,11 +73,11 @@ else fi if [ "$nomsauvegarde" = "" ]; then - infoerr=$(echo "Profil non défini ou incomplet.") + infoerr=$(echo "Nom de sauvegarde non défini.") zenity --width=200 --error --text="$infoerr" exit elif [ "$borg_repo" = "" ]; then - infoerr=$(echo "Profil non défini ou incomplet.") + infoerr=$(echo "Variable \$borg_repo absente") zenity --width=200 --error --text="$infoerr" exit fi @@ -100,7 +103,7 @@ info_sauvegarde\n\ info_depot\n\ afficher_variables_profil\n\ QUITTER\ -" | zenity --list --height=400 --width=400 --title "BORG GUI" --column "Dépôt : $nomsauvegarde") +" | zenity --list --height=400 --width=400 --title "BORG GUI" --column "Nom : $nomsauvegarde") if [ "$choixmenu" = "creer_sauvegarde" ] ;then TestBorgRepo @@ -120,7 +123,7 @@ elif [ "$choixmenu" = "demonter_sauvegarde" ];then elif [ "$choixmenu" = "supprimmer_sauvegarde" ];then borg_archive=$(borg list --short $borg_repo | zenity --height=500 --list --title "Listes des archives" --column "Archive") - borg delete $borg_repo::$borg_archive | zenity --width=400 --progress --pulsate --auto-close --title="Suppression en cours" + borg delete $borg_repo::$borg_archive | zenity --width=400 --progress --pulsate --auto-close --title="Suppression en cours..." zenity --width=200 --info --text="Suppresion terminée" elif [ "$choixmenu" = "info_sauvegarde" ];then @@ -134,6 +137,9 @@ elif [ "$choixmenu" = "info_depot" ];then elif [ "$choixmenu" = "afficher_variables_profil" ];then info=$(cd $dossierprofil && cat $fichierprofil) - zenity --width=500 --info --text="$info" + zenity --width=500 --height=600 --info --text="$info" + +elif [ "$choixmenu" = "" ];then + zenity --width=500 --info --text="Aucun choix, retour au menu." fi done From 1fe8145d837bb385c90cdcb3d85f00d91e3e4a63 Mon Sep 17 00:00:00 2001 From: Djan GICQUEL <> Date: Tue, 9 Mar 2021 20:14:03 +0100 Subject: [PATCH 03/77] affichage des profils en chasse fixe avec --- borg-gui.sh | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/borg-gui.sh b/borg-gui.sh index 2a8dd9f..ffd141b 100755 --- a/borg-gui.sh +++ b/borg-gui.sh @@ -53,7 +53,7 @@ SauvegardeBorg () { DossierPresent $borg_repo DossierPresent $borg_dir - zenity --width=500 --height=600 --info --text="$(cd $dossierprofil && cat $fichierprofil)" + zenity --width=500 --height=600 --info --text="$(cd $dossierprofil && cat $fichierprofil)" borg create $borg_excludes $borg_compress $borg_repo::$borg_archive $borg_dir | zenity --width=400 --progress --pulsate --auto-close --title="Sauvegarde en cours..." sync | zenity --width=400 --progress --pulsate --auto-close --title="Synchronisation des écritures..." @@ -137,7 +137,7 @@ elif [ "$choixmenu" = "info_depot" ];then elif [ "$choixmenu" = "afficher_variables_profil" ];then info=$(cd $dossierprofil && cat $fichierprofil) - zenity --width=500 --height=600 --info --text="$info" + zenity --width=600 --height=400 --info --text="$info" elif [ "$choixmenu" = "" ];then zenity --width=500 --info --text="Aucun choix, retour au menu." From 4ac6dd7c78b7e67b2884d1d9cfeb113f8a80d7ef Mon Sep 17 00:00:00 2001 From: Djan GICQUEL <> Date: Tue, 9 Mar 2021 20:17:30 +0100 Subject: [PATCH 04/77] changement de afficher_variables_profil en afficher_profil --- borg-gui.sh | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/borg-gui.sh b/borg-gui.sh index ffd141b..8db8fc1 100755 --- a/borg-gui.sh +++ b/borg-gui.sh @@ -101,7 +101,7 @@ demonter_sauvegarde\n\ supprimmer_sauvegarde\n\ info_sauvegarde\n\ info_depot\n\ -afficher_variables_profil\n\ +afficher_profil\n\ QUITTER\ " | zenity --list --height=400 --width=400 --title "BORG GUI" --column "Nom : $nomsauvegarde") @@ -135,7 +135,7 @@ elif [ "$choixmenu" = "info_depot" ];then info=$(borg info $borg_repo) zenity --width=600 --info --text="$info" -elif [ "$choixmenu" = "afficher_variables_profil" ];then +elif [ "$choixmenu" = "afficher_profil" ];then info=$(cd $dossierprofil && cat $fichierprofil) zenity --width=600 --height=400 --info --text="$info" From 5a929d5cdaca9380d208b03acb25da3e1ced01a6 Mon Sep 17 00:00:00 2001 From: Djan GICQUEL <> Date: Wed, 10 Mar 2021 18:40:12 +0100 Subject: [PATCH 05/77] nom de profil raccourcis --- borg-gui.sh | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/borg-gui.sh b/borg-gui.sh index 8db8fc1..c154e91 100755 --- a/borg-gui.sh +++ b/borg-gui.sh @@ -69,7 +69,8 @@ if [ ! $1 = "" ]; then fichierprofil="$1" . "$1" else - fichierprofil=$(ls -1 $HOME/.config/borg/*.txt | zenity --height=500 --width=600 --list --title "Profils" --column "profil") && . $fichierprofil + cd $HOME/.config/borg/ + fichierprofil=$(ls -1 *.txt | zenity --height=500 --width=400 --list --title "Profils" --column "profil") && . $fichierprofil fi if [ "$nomsauvegarde" = "" ]; then From 19cbd61a0de52733269e4ab5e385fd4924ef1ac2 Mon Sep 17 00:00:00 2001 From: Djan GICQUEL <> Date: Wed, 10 Mar 2021 18:42:57 +0100 Subject: [PATCH 06/77] info sauvegarde et info depot entre --- borg-gui.sh | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/borg-gui.sh b/borg-gui.sh index c154e91..58441f2 100755 --- a/borg-gui.sh +++ b/borg-gui.sh @@ -130,11 +130,11 @@ elif [ "$choixmenu" = "supprimmer_sauvegarde" ];then elif [ "$choixmenu" = "info_sauvegarde" ];then borg_archive=$(borg list --short $borg_repo | zenity --height=500 --list --title "Listes des archives" --column "Archive") info=$(borg info $borg_repo::$borg_archive) - zenity --width=600 --info --text="$info" + zenity --width=600 --info --text="$info" elif [ "$choixmenu" = "info_depot" ];then info=$(borg info $borg_repo) - zenity --width=600 --info --text="$info" + zenity --width=600 --info --text="$info" elif [ "$choixmenu" = "afficher_profil" ];then info=$(cd $dossierprofil && cat $fichierprofil) From f53cdbd2b854e65bad5e08b1636ed3dd570b1b67 Mon Sep 17 00:00:00 2001 From: Djan GICQUEL <> Date: Wed, 10 Mar 2021 18:54:06 +0100 Subject: [PATCH 07/77] variable dossierprofil --- borg-gui.sh | 1 + 1 file changed, 1 insertion(+) diff --git a/borg-gui.sh b/borg-gui.sh index 58441f2..c4b0161 100755 --- a/borg-gui.sh +++ b/borg-gui.sh @@ -10,6 +10,7 @@ fi ################################################################################# export BORG_UNKNOWN_UNENCRYPTED_REPO_ACCESS_IS_OK=yes export BORG_RELOCATED_REPO_ACCESS_IS_OK=yes +dossierprofil="$HOME/.config/borg/" # FONCTIONS ################################################################################# From 6b8395a81bca97950d79b5bf2cb2aa323c611249 Mon Sep 17 00:00:00 2001 From: Djan GICQUEL <> Date: Wed, 10 Mar 2021 19:47:29 +0100 Subject: [PATCH 08/77] =?UTF-8?q?item=20de=20menu=20agr=C3=A9able=20=C3=A0?= =?UTF-8?q?=20libre=20assignation=20de=20variables=20courtes=20pour=20le?= =?UTF-8?q?=20menu=20cacher=20la=20premi=C3=A8re=20collonne?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- borg-gui.sh | 37 ++++++++++++++++++++----------------- 1 file changed, 20 insertions(+), 17 deletions(-) diff --git a/borg-gui.sh b/borg-gui.sh index c4b0161..e33005b 100755 --- a/borg-gui.sh +++ b/borg-gui.sh @@ -94,50 +94,53 @@ TestBorgRepo ################################################################################# # Gestion des options du menu ################################################################################# -while [ ! "$choixmenu" = "QUITTER" ] +while [ ! "$choixmenu" = "qu" ] do choixmenu=$(echo -e "\ -creer_sauvegarde\n\ -monter_sauvegarde\n\ -demonter_sauvegarde\n\ -supprimmer_sauvegarde\n\ -info_sauvegarde\n\ -info_depot\n\ -afficher_profil\n\ -QUITTER\ -" | zenity --list --height=400 --width=400 --title "BORG GUI" --column "Nom : $nomsauvegarde") +cs\nCréer une archive\n\ +ms\nMonter une archive\n\ +dm\nDemonter une archive\n\ +ss\nSupprimmer une archive\n\ +is\nInformation archive\n\ +id\nInformation sur le dépôt\n\ +ap\nAfficher le profil\n\ +qu\nQuitter\ +" | zenity --list \ +--height=400 --width=400 \ +--title "BORG GUI : $nomsauvegarde" \ +--hide-header --hide-column=1 --column "id" --column "choix") -if [ "$choixmenu" = "creer_sauvegarde" ] ;then +if [ "$choixmenu" = "cs" ] ;then TestBorgRepo SauvegardeBorg -elif [ "$choixmenu" = "monter_sauvegarde" ];then +elif [ "$choixmenu" = "ms" ];then borg_archive=$(borg list --short $borg_repo | zenity --height=500 --list --title "Listes des archives" --column "Archive") mkdir $HOME/$borg_archive borg mount $borg_repo::$borg_archive $HOME/$borg_archive zenity --width=400 --info --text="La sauvegarde est disponible dans le dossier\n$HOME/$borg_archive" -elif [ "$choixmenu" = "demonter_sauvegarde" ];then +elif [ "$choixmenu" = "dm" ];then ptnmontage=$(mount | grep borgfs | cut -d" " -f3 | zenity --width=500 --height=400 --list --title "Liste des points de montages" --column "") fusermount -u $ptnmontage sleep 5 rmdir $ptnmontage -elif [ "$choixmenu" = "supprimmer_sauvegarde" ];then +elif [ "$choixmenu" = "ss" ];then borg_archive=$(borg list --short $borg_repo | zenity --height=500 --list --title "Listes des archives" --column "Archive") borg delete $borg_repo::$borg_archive | zenity --width=400 --progress --pulsate --auto-close --title="Suppression en cours..." zenity --width=200 --info --text="Suppresion terminée" -elif [ "$choixmenu" = "info_sauvegarde" ];then +elif [ "$choixmenu" = "is" ];then borg_archive=$(borg list --short $borg_repo | zenity --height=500 --list --title "Listes des archives" --column "Archive") info=$(borg info $borg_repo::$borg_archive) zenity --width=600 --info --text="$info" -elif [ "$choixmenu" = "info_depot" ];then +elif [ "$choixmenu" = "id" ];then info=$(borg info $borg_repo) zenity --width=600 --info --text="$info" -elif [ "$choixmenu" = "afficher_profil" ];then +elif [ "$choixmenu" = "ap" ];then info=$(cd $dossierprofil && cat $fichierprofil) zenity --width=600 --height=400 --info --text="$info" From ddba8939e636ecb5a92d0e36bf1af4d680e360d8 Mon Sep 17 00:00:00 2001 From: Djan GICQUEL <> Date: Wed, 10 Mar 2021 19:56:52 +0100 Subject: [PATCH 09/77] masquage des collonnes au premier menu --- borg-gui.sh | 15 ++++++--------- 1 file changed, 6 insertions(+), 9 deletions(-) diff --git a/borg-gui.sh b/borg-gui.sh index e33005b..40c72e4 100755 --- a/borg-gui.sh +++ b/borg-gui.sh @@ -70,8 +70,8 @@ if [ ! $1 = "" ]; then fichierprofil="$1" . "$1" else - cd $HOME/.config/borg/ - fichierprofil=$(ls -1 *.txt | zenity --height=500 --width=400 --list --title "Profils" --column "profil") && . $fichierprofil + cd $dossierprofil + fichierprofil=$(ls -1 *.txt | zenity --height=500 --width=400 --list --title "Profils" --hide-header --column "profil") && . $fichierprofil fi if [ "$nomsauvegarde" = "" ]; then @@ -118,7 +118,7 @@ elif [ "$choixmenu" = "ms" ];then borg_archive=$(borg list --short $borg_repo | zenity --height=500 --list --title "Listes des archives" --column "Archive") mkdir $HOME/$borg_archive borg mount $borg_repo::$borg_archive $HOME/$borg_archive - zenity --width=400 --info --text="La sauvegarde est disponible dans le dossier\n$HOME/$borg_archive" + zenity --width=400 --info --text="La sauvegarde est disponible dans le dossier\n$HOME/$borg_archive" elif [ "$choixmenu" = "dm" ];then ptnmontage=$(mount | grep borgfs | cut -d" " -f3 | zenity --width=500 --height=400 --list --title "Liste des points de montages" --column "") @@ -133,16 +133,13 @@ elif [ "$choixmenu" = "ss" ];then elif [ "$choixmenu" = "is" ];then borg_archive=$(borg list --short $borg_repo | zenity --height=500 --list --title "Listes des archives" --column "Archive") - info=$(borg info $borg_repo::$borg_archive) - zenity --width=600 --info --text="$info" + zenity --width=600 --info --text="$(borg info $borg_repo::$borg_archive)" elif [ "$choixmenu" = "id" ];then - info=$(borg info $borg_repo) - zenity --width=600 --info --text="$info" + zenity --width=600 --info --text="$(borg info $borg_repo)" elif [ "$choixmenu" = "ap" ];then - info=$(cd $dossierprofil && cat $fichierprofil) - zenity --width=600 --height=400 --info --text="$info" + zenity --width=600 --height=400 --info --text="$(cd $dossierprofil && cat $fichierprofil)" elif [ "$choixmenu" = "" ];then zenity --width=500 --info --text="Aucun choix, retour au menu." From 336b04ca277f94a875c5a0b291bc4c0aaf8d69cc Mon Sep 17 00:00:00 2001 From: Djan GICQUEL <> Date: Wed, 10 Mar 2021 20:07:52 +0100 Subject: [PATCH 10/77] uniformisation des longueurs des boites de dialogue --- borg-gui.sh | 34 ++++++++++++++++------------------ 1 file changed, 16 insertions(+), 18 deletions(-) diff --git a/borg-gui.sh b/borg-gui.sh index 40c72e4..09cf3da 100755 --- a/borg-gui.sh +++ b/borg-gui.sh @@ -18,21 +18,21 @@ TestBorgRepo () { if [ ! -f "config" ]; then TestBorgErr=1 infoerr=$(echo "Impossible de trouver le fichier de configuration borg.") - zenity --width=500 --error --text="$infoerr" + zenity --width=600 --error --text="$infoerr" exit fi if [ ! -d "data" ]; then TestBorgErr=1 infoerr=$(echo "Impossible de trouver le fichier de configuration borg.") - zenity --width=500 --error --text="$infoerr" + zenity --width=600 --error --text="$infoerr" exit fi if [ -d "lock.exclusive" ]; then TestBorgErr=1 infoerr=$(echo "Le dépôt est bloqué, une opération est peut-être en cours") - zenity --width=500 --error --text="$infoerr" + zenity --width=600 --error --text="$infoerr" exit fi } @@ -45,7 +45,7 @@ bobainfoa () { DossierPresent () { if [ ! -d "$1" ]; then inforerror=$(echo "Erreur, le dossier $1 est absent.\nFin du script.") - zenity --width=500 --error --text="$inforerror" + zenity --width=600 --error --text="$inforerror" exit fi } @@ -54,12 +54,12 @@ SauvegardeBorg () { DossierPresent $borg_repo DossierPresent $borg_dir - zenity --width=500 --height=600 --info --text="$(cd $dossierprofil && cat $fichierprofil)" + zenity --width=600 --height=500 --info --text="$(cd $dossierprofil && cat $fichierprofil)" - borg create $borg_excludes $borg_compress $borg_repo::$borg_archive $borg_dir | zenity --width=400 --progress --pulsate --auto-close --title="Sauvegarde en cours..." - sync | zenity --width=400 --progress --pulsate --auto-close --title="Synchronisation des écritures..." + borg create $borg_excludes $borg_compress $borg_repo::$borg_archive $borg_dir | zenity --width=600 --progress --pulsate --auto-close --title="Sauvegarde en cours..." + sync | zenity --width=600 --progress --pulsate --auto-close --title="Synchronisation des écritures..." zenity --notification --text "Sauvegarde $nomsauvegarde terminée" - zenity --width=300 --info --text "Sauvegarde $nomsauvegarde terminée" + zenity --width=600 --info --text "Sauvegarde $nomsauvegarde terminée" } # Profils et tests @@ -71,16 +71,16 @@ if [ ! $1 = "" ]; then . "$1" else cd $dossierprofil - fichierprofil=$(ls -1 *.txt | zenity --height=500 --width=400 --list --title "Profils" --hide-header --column "profil") && . $fichierprofil + fichierprofil=$(ls -1 *.txt | zenity --height=500 --width=600 --list --title "Profils" --hide-header --column "profil") && . $fichierprofil fi if [ "$nomsauvegarde" = "" ]; then infoerr=$(echo "Nom de sauvegarde non défini.") - zenity --width=200 --error --text="$infoerr" + zenity --width=600 --error --text="$infoerr" exit elif [ "$borg_repo" = "" ]; then infoerr=$(echo "Variable \$borg_repo absente") - zenity --width=200 --error --text="$infoerr" + zenity --width=600 --error --text="$infoerr" exit fi @@ -118,18 +118,16 @@ elif [ "$choixmenu" = "ms" ];then borg_archive=$(borg list --short $borg_repo | zenity --height=500 --list --title "Listes des archives" --column "Archive") mkdir $HOME/$borg_archive borg mount $borg_repo::$borg_archive $HOME/$borg_archive - zenity --width=400 --info --text="La sauvegarde est disponible dans le dossier\n$HOME/$borg_archive" + zenity --width=600 --info --text="La sauvegarde est disponible dans le dossier\n$HOME/$borg_archive" elif [ "$choixmenu" = "dm" ];then ptnmontage=$(mount | grep borgfs | cut -d" " -f3 | zenity --width=500 --height=400 --list --title "Liste des points de montages" --column "") - fusermount -u $ptnmontage - sleep 5 - rmdir $ptnmontage + fusermount -u $ptnmontage && sleep 5 && rmdir $ptnmontage elif [ "$choixmenu" = "ss" ];then borg_archive=$(borg list --short $borg_repo | zenity --height=500 --list --title "Listes des archives" --column "Archive") - borg delete $borg_repo::$borg_archive | zenity --width=400 --progress --pulsate --auto-close --title="Suppression en cours..." - zenity --width=200 --info --text="Suppresion terminée" + borg delete $borg_repo::$borg_archive | zenity --width=600 --progress --pulsate --auto-close --title="Suppression en cours..." + zenity --width=600 --info --text="Suppresion de l'archive $borg_archive terminée" elif [ "$choixmenu" = "is" ];then borg_archive=$(borg list --short $borg_repo | zenity --height=500 --list --title "Listes des archives" --column "Archive") @@ -142,6 +140,6 @@ elif [ "$choixmenu" = "ap" ];then zenity --width=600 --height=400 --info --text="$(cd $dossierprofil && cat $fichierprofil)" elif [ "$choixmenu" = "" ];then - zenity --width=500 --info --text="Aucun choix, retour au menu." + zenity --width=600 --info --text="Aucun choix, retour au menu." fi done From b7b96b693d8bf45ca8dd7b41701287884a5473ba Mon Sep 17 00:00:00 2001 From: Djan GICQUEL <> Date: Fri, 19 Mar 2021 20:08:27 +0100 Subject: [PATCH 11/77] =?UTF-8?q?ajout=20du=20menu=20=C2=ABespace=20disque?= =?UTF-8?q?=20utilis=C3=A9=C2=BB=20ajout=20d'une=20notification=20=C2=ABes?= =?UTF-8?q?pace=20disque=20utilis=C3=A9=C2=BB=20lors=20d'un=20lancement=20?= =?UTF-8?q?d'une=20sauvegarde?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- borg-gui.sh | 8 ++++++++ 1 file changed, 8 insertions(+) diff --git a/borg-gui.sh b/borg-gui.sh index 09cf3da..b486f1c 100755 --- a/borg-gui.sh +++ b/borg-gui.sh @@ -56,6 +56,9 @@ SauvegardeBorg () { zenity --width=600 --height=500 --info --text="$(cd $dossierprofil && cat $fichierprofil)" + espacedisqueutil=$(df -k --output=pcent $borg_repo | tail -n +2) + zenity --width=600 --notification --text "Espace disque utilisé\n\n $espacedisqueutil" + borg create $borg_excludes $borg_compress $borg_repo::$borg_archive $borg_dir | zenity --width=600 --progress --pulsate --auto-close --title="Sauvegarde en cours..." sync | zenity --width=600 --progress --pulsate --auto-close --title="Synchronisation des écritures..." zenity --notification --text "Sauvegarde $nomsauvegarde terminée" @@ -104,6 +107,7 @@ ss\nSupprimmer une archive\n\ is\nInformation archive\n\ id\nInformation sur le dépôt\n\ ap\nAfficher le profil\n\ +ed\nEspace disque utilisé\n\ qu\nQuitter\ " | zenity --list \ --height=400 --width=400 \ @@ -114,6 +118,10 @@ if [ "$choixmenu" = "cs" ] ;then TestBorgRepo SauvegardeBorg +elif [ "$choixmenu" = "ed" ] ;then + espacedisqueutil=$(df -k --output=pcent $borg_repo | tail -n +2) + zenity --width=600 --info --text "Espace disque utilisé\n\n $espacedisqueutil" + elif [ "$choixmenu" = "ms" ];then borg_archive=$(borg list --short $borg_repo | zenity --height=500 --list --title "Listes des archives" --column "Archive") mkdir $HOME/$borg_archive From 33f7c11279ac0426470618dfb01a598127fcf0d8 Mon Sep 17 00:00:00 2001 From: Djan GICQUEL <> Date: Fri, 19 Mar 2021 20:10:42 +0100 Subject: [PATCH 12/77] =?UTF-8?q?suppression=20de=20la=20fonction=20=C2=AB?= =?UTF-8?q?SauvegardeBorg=C2=BB=20int=C3=A9gration=20des=20commandes=20dan?= =?UTF-8?q?s=20le=20menu?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- borg-gui.sh | 29 +++++++++++++---------------- 1 file changed, 13 insertions(+), 16 deletions(-) diff --git a/borg-gui.sh b/borg-gui.sh index b486f1c..3bb7eb0 100755 --- a/borg-gui.sh +++ b/borg-gui.sh @@ -50,21 +50,6 @@ DossierPresent () { fi } -SauvegardeBorg () { - DossierPresent $borg_repo - DossierPresent $borg_dir - - zenity --width=600 --height=500 --info --text="$(cd $dossierprofil && cat $fichierprofil)" - - espacedisqueutil=$(df -k --output=pcent $borg_repo | tail -n +2) - zenity --width=600 --notification --text "Espace disque utilisé\n\n $espacedisqueutil" - - borg create $borg_excludes $borg_compress $borg_repo::$borg_archive $borg_dir | zenity --width=600 --progress --pulsate --auto-close --title="Sauvegarde en cours..." - sync | zenity --width=600 --progress --pulsate --auto-close --title="Synchronisation des écritures..." - zenity --notification --text "Sauvegarde $nomsauvegarde terminée" - zenity --width=600 --info --text "Sauvegarde $nomsauvegarde terminée" -} - # Profils et tests ################################################################################# # si $1 n'est pas vide fichier de profil = $1 @@ -116,7 +101,19 @@ qu\nQuitter\ if [ "$choixmenu" = "cs" ] ;then TestBorgRepo - SauvegardeBorg + + DossierPresent $borg_repo + DossierPresent $borg_dir + + zenity --width=600 --height=500 --info --text="$(cd $dossierprofil && cat $fichierprofil)" + + espacedisqueutil=$(df -k --output=pcent $borg_repo | tail -n +2) + zenity --width=600 --notification --text "Espace disque utilisé\n\n $espacedisqueutil" + + borg create $borg_excludes $borg_compress $borg_repo::$borg_archive $borg_dir | zenity --width=600 --progress --pulsate --auto-close --title="Sauvegarde en cours..." + sync | zenity --width=600 --progress --pulsate --auto-close --title="Synchronisation des écritures..." + zenity --notification --text "Sauvegarde $nomsauvegarde terminée" + zenity --width=600 --info --text "Sauvegarde $nomsauvegarde terminée" elif [ "$choixmenu" = "ed" ] ;then espacedisqueutil=$(df -k --output=pcent $borg_repo | tail -n +2) From 7065305f3818a3d33fa76fe866191709a137bcda Mon Sep 17 00:00:00 2001 From: Djan GICQUEL <> Date: Fri, 19 Mar 2021 20:13:15 +0100 Subject: [PATCH 13/77] =?UTF-8?q?r=C3=A9ctification=20des=20commandes=20d'?= =?UTF-8?q?affichage=20espacedisqueutil?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- borg-gui.sh | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/borg-gui.sh b/borg-gui.sh index 3bb7eb0..d230689 100755 --- a/borg-gui.sh +++ b/borg-gui.sh @@ -108,7 +108,7 @@ if [ "$choixmenu" = "cs" ] ;then zenity --width=600 --height=500 --info --text="$(cd $dossierprofil && cat $fichierprofil)" espacedisqueutil=$(df -k --output=pcent $borg_repo | tail -n +2) - zenity --width=600 --notification --text "Espace disque utilisé\n\n $espacedisqueutil" + zenity --width=600 --notification --text "Espace disque utilisé : $espacedisqueutil" borg create $borg_excludes $borg_compress $borg_repo::$borg_archive $borg_dir | zenity --width=600 --progress --pulsate --auto-close --title="Sauvegarde en cours..." sync | zenity --width=600 --progress --pulsate --auto-close --title="Synchronisation des écritures..." @@ -117,7 +117,7 @@ if [ "$choixmenu" = "cs" ] ;then elif [ "$choixmenu" = "ed" ] ;then espacedisqueutil=$(df -k --output=pcent $borg_repo | tail -n +2) - zenity --width=600 --info --text "Espace disque utilisé\n\n $espacedisqueutil" + zenity --width=600 --info --text "Espace disque utilisé : $espacedisqueutil" elif [ "$choixmenu" = "ms" ];then borg_archive=$(borg list --short $borg_repo | zenity --height=500 --list --title "Listes des archives" --column "Archive") From 62ef533b80764d6ff2fdda02af22684f6352ada6 Mon Sep 17 00:00:00 2001 From: Djan GICQUEL <> Date: Fri, 19 Mar 2021 20:14:18 +0100 Subject: [PATCH 14/77] suppression de l'affichage du profil au lancement de la sauvegarde --- borg-gui.sh | 2 -- 1 file changed, 2 deletions(-) diff --git a/borg-gui.sh b/borg-gui.sh index d230689..59f1468 100755 --- a/borg-gui.sh +++ b/borg-gui.sh @@ -105,8 +105,6 @@ if [ "$choixmenu" = "cs" ] ;then DossierPresent $borg_repo DossierPresent $borg_dir - zenity --width=600 --height=500 --info --text="$(cd $dossierprofil && cat $fichierprofil)" - espacedisqueutil=$(df -k --output=pcent $borg_repo | tail -n +2) zenity --width=600 --notification --text "Espace disque utilisé : $espacedisqueutil" From f24d140659c6ad76a1c0e0a42add0d53df588cb8 Mon Sep 17 00:00:00 2001 From: Djan GICQUEL <> Date: Sat, 20 Mar 2021 14:44:55 +0100 Subject: [PATCH 15/77] ajout de l'icone ajout du fichier desktop --- borg.svg | 75 +++++++++++++++++++++++++++++++++++++++++ sauvegarde-borg.desktop | 6 ++++ 2 files changed, 81 insertions(+) create mode 100644 borg.svg create mode 100644 sauvegarde-borg.desktop diff --git a/borg.svg b/borg.svg new file mode 100644 index 0000000..cf15b4a --- /dev/null +++ b/borg.svg @@ -0,0 +1,75 @@ + + + + + + + + image/svg+xml + + + + + + + + + + + + + diff --git a/sauvegarde-borg.desktop b/sauvegarde-borg.desktop new file mode 100644 index 0000000..2a027a5 --- /dev/null +++ b/sauvegarde-borg.desktop @@ -0,0 +1,6 @@ +[Desktop Entry] +Name=Sauvegarde BORG GUI +Exec=sh bin/git/borg-zenity/borg-gui.sh +Icon=borg +Type=Application +Categories=Utility; From 69e899de0ba056aa8f19254870e8760fae8d77d2 Mon Sep 17 00:00:00 2001 From: Djan GICQUEL <> Date: Sun, 21 Mar 2021 10:03:10 +0100 Subject: [PATCH 16/77] =?UTF-8?q?ajout=20du=20fichier=20de=20profil=20par?= =?UTF-8?q?=20d=C3=A9faut?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- profil.txt | 6 ++++++ 1 file changed, 6 insertions(+) create mode 100755 profil.txt diff --git a/profil.txt b/profil.txt new file mode 100755 index 0000000..90a6e20 --- /dev/null +++ b/profil.txt @@ -0,0 +1,6 @@ +nomsauvegarde="" +borg_repo="" +borg_archive="$(date +%d_%B_%Y)" +borg_dir="" +borg_excludes="" +borg_compress="--compress zlib,5" From 8a8e5eb2aeff1591ca356a202dd5723830ef8f8a Mon Sep 17 00:00:00 2001 From: Djan GICQUEL <> Date: Sun, 21 Mar 2021 10:03:26 +0100 Subject: [PATCH 17/77] =?UTF-8?q?premi=C3=A8re=20version=20du=20readme?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- readme.md | 7 +++++++ 1 file changed, 7 insertions(+) create mode 100644 readme.md diff --git a/readme.md b/readme.md new file mode 100644 index 0000000..bac6c7b --- /dev/null +++ b/readme.md @@ -0,0 +1,7 @@ +# Borg Zenity + +Une interface graphique en français pour BorgBackup. + +Le fichier de profil doit être placé dans le dossier de configuration de borg (`~/.config/borg/`). + +Le dépôt doit déjà être initialisé via une commande borgbackup. From 383bbf87ba04b7d852b6a52c4d144f5d5e65e640 Mon Sep 17 00:00:00 2001 From: Djan GICQUEL <> Date: Sat, 8 May 2021 13:27:24 +0200 Subject: [PATCH 18/77] =?UTF-8?q?cr=C3=A9ation=20install.sh?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- install.sh | 10 ++++++++++ 1 file changed, 10 insertions(+) create mode 100644 install.sh diff --git a/install.sh b/install.sh new file mode 100644 index 0000000..4118b1f --- /dev/null +++ b/install.sh @@ -0,0 +1,10 @@ +#! /bin/bash + +# Borg zenity install + +mkdir $HOME/bin/ $HOME/icons/ + +cp -v borg-gui.sh $HOME/bin/ +cp -v borg.svg $HOME/icons/ +cp -v profil.txt $HOME/.config/borg/ +cp -v sauvegarde-borg.desktop $HOME/.local/share/applications/ From 911395701fceab6be6bccf9492dae021e669b8b0 Mon Sep 17 00:00:00 2001 From: Djan GICQUEL <> Date: Sat, 8 May 2021 14:35:22 +0200 Subject: [PATCH 19/77] =?UTF-8?q?Modification=20du=20fichier=20desktop=20:?= =?UTF-8?q?=20suppression=20du=20"sh"=20Ajout=20de=20zenity=20pulsate=20po?= =?UTF-8?q?ur=20les=20op=C3=A9rations=20longues=20(monter/d=C3=A9monter/in?= =?UTF-8?q?formations=20archives)?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- borg-gui.sh | 42 ++++++++++++++++++++++++++++++++++------- sauvegarde-borg.desktop | 2 +- 2 files changed, 36 insertions(+), 8 deletions(-) diff --git a/borg-gui.sh b/borg-gui.sh index 59f1468..47cc7da 100755 --- a/borg-gui.sh +++ b/borg-gui.sh @@ -6,6 +6,12 @@ if [ "$?" != "0" ]; then exit fi +which borg +if [ "$?" != "0" ]; then + echo "borgbackup n'est pas installé.";exit + exit +fi + # META VARIABLES ################################################################################# export BORG_UNKNOWN_UNENCRYPTED_REPO_ACCESS_IS_OK=yes @@ -59,10 +65,14 @@ if [ ! $1 = "" ]; then . "$1" else cd $dossierprofil - fichierprofil=$(ls -1 *.txt | zenity --height=500 --width=600 --list --title "Profils" --hide-header --column "profil") && . $fichierprofil + fichierprofil=$(ls -1 *.txt | zenity --height=500 --width=600 --list --title "Liste des profils" --hide-header --column "profil") && . $fichierprofil fi -if [ "$nomsauvegarde" = "" ]; then +if [ "$fichierprofil" = "" ]; then + infoerr=$(echo "Aucun profil choisi.") + zenity --width=600 --error --text="$infoerr" + exit +elif [ "$nomsauvegarde" = "" ]; then infoerr=$(echo "Nom de sauvegarde non défini.") zenity --width=600 --error --text="$infoerr" exit @@ -100,6 +110,8 @@ qu\nQuitter\ --hide-header --hide-column=1 --column "id" --column "choix") if [ "$choixmenu" = "cs" ] ;then +# Créer une archive + TestBorgRepo DossierPresent $borg_repo @@ -114,32 +126,48 @@ if [ "$choixmenu" = "cs" ] ;then zenity --width=600 --info --text "Sauvegarde $nomsauvegarde terminée" elif [ "$choixmenu" = "ed" ] ;then +# Espace disque utilisé + espacedisqueutil=$(df -k --output=pcent $borg_repo | tail -n +2) zenity --width=600 --info --text "Espace disque utilisé : $espacedisqueutil" elif [ "$choixmenu" = "ms" ];then +# Monter une archive + borg_archive=$(borg list --short $borg_repo | zenity --height=500 --list --title "Listes des archives" --column "Archive") mkdir $HOME/$borg_archive - borg mount $borg_repo::$borg_archive $HOME/$borg_archive + borg mount $borg_repo::$borg_archive $HOME/$borg_archive | zenity --width=600 --progress --pulsate --auto-close zenity --width=600 --info --text="La sauvegarde est disponible dans le dossier\n$HOME/$borg_archive" elif [ "$choixmenu" = "dm" ];then +# Demonter une archive + ptnmontage=$(mount | grep borgfs | cut -d" " -f3 | zenity --width=500 --height=400 --list --title "Liste des points de montages" --column "") - fusermount -u $ptnmontage && sleep 5 && rmdir $ptnmontage + fusermount -u $ptnmontage | zenity --width=600 --progress --pulsate --auto-close + sleep 5 | zenity --width=600 --progress --pulsate --auto-close + rmdir $ptnmontage | zenity --width=600 --progress --pulsate --auto-close elif [ "$choixmenu" = "ss" ];then +# Supprimmer une archive + borg_archive=$(borg list --short $borg_repo | zenity --height=500 --list --title "Listes des archives" --column "Archive") - borg delete $borg_repo::$borg_archive | zenity --width=600 --progress --pulsate --auto-close --title="Suppression en cours..." + borg delete $borg_repo::$borg_archive | zenity --width=600 --progress --pulsate --auto-close zenity --width=600 --info --text="Suppresion de l'archive $borg_archive terminée" elif [ "$choixmenu" = "is" ];then +# Information archive + borg_archive=$(borg list --short $borg_repo | zenity --height=500 --list --title "Listes des archives" --column "Archive") - zenity --width=600 --info --text="$(borg info $borg_repo::$borg_archive)" + zenity --width=600 --info --text="$(borg info $borg_repo::$borg_archive)" | zenity --width=600 --progress --pulsate --auto-close elif [ "$choixmenu" = "id" ];then - zenity --width=600 --info --text="$(borg info $borg_repo)" +# Information sur le dépôt + + zenity --width=600 --info --text="$(borg info $borg_repo)" | zenity --width=600 --progress --pulsate --auto-close --title="Récupération des informations..." elif [ "$choixmenu" = "ap" ];then +# Afficher le profil + zenity --width=600 --height=400 --info --text="$(cd $dossierprofil && cat $fichierprofil)" elif [ "$choixmenu" = "" ];then diff --git a/sauvegarde-borg.desktop b/sauvegarde-borg.desktop index 2a027a5..ed9007e 100644 --- a/sauvegarde-borg.desktop +++ b/sauvegarde-borg.desktop @@ -1,6 +1,6 @@ [Desktop Entry] Name=Sauvegarde BORG GUI -Exec=sh bin/git/borg-zenity/borg-gui.sh +Exec=bin/borg-zenity/borg-gui.sh Icon=borg Type=Application Categories=Utility; From 0c3332fd2e0d611da851157fdd37f85bffae01e7 Mon Sep 17 00:00:00 2001 From: Djan GICQUEL <> Date: Sun, 27 Jun 2021 19:50:09 +0200 Subject: [PATCH 20/77] ajout d'un if en cas d'absence de choix pour info et suppression archivex --- borg-gui.sh | 17 ++++++++++++++--- 1 file changed, 14 insertions(+), 3 deletions(-) diff --git a/borg-gui.sh b/borg-gui.sh index 47cc7da..959636e 100755 --- a/borg-gui.sh +++ b/borg-gui.sh @@ -151,14 +151,25 @@ elif [ "$choixmenu" = "ss" ];then # Supprimmer une archive borg_archive=$(borg list --short $borg_repo | zenity --height=500 --list --title "Listes des archives" --column "Archive") - borg delete $borg_repo::$borg_archive | zenity --width=600 --progress --pulsate --auto-close - zenity --width=600 --info --text="Suppresion de l'archive $borg_archive terminée" + if [ "$borg_archive" = "" ];then + zenity --width=600 --info --text "Aucune archive choisie, retour au menu" + else + borg delete $borg_repo::$borg_archive | zenity --width=600 --progress --pulsate --auto-close + zenity --width=600 --info --text="Suppresion de l'archive $borg_archive terminée" + fi + elif [ "$choixmenu" = "is" ];then # Information archive borg_archive=$(borg list --short $borg_repo | zenity --height=500 --list --title "Listes des archives" --column "Archive") - zenity --width=600 --info --text="$(borg info $borg_repo::$borg_archive)" | zenity --width=600 --progress --pulsate --auto-close + if [ "$borg_archive" = "" ];then + zenity --width=600 --info --text "Aucune archive choisie, retour au menu" + else + borg_archive=$(borg list --short $borg_repo | zenity --height=500 --list --title "Listes des archives" --column "Archive") + zenity --width=600 --info --text="$(borg info $borg_repo::$borg_archive)" | zenity --width=600 --progress --pulsate --auto-close + fi + elif [ "$choixmenu" = "id" ];then # Information sur le dépôt From e4b7e2d4e63cebae05ddc8ca247e3079b157cad9 Mon Sep 17 00:00:00 2001 From: Djan GICQUEL <> Date: Sun, 4 Jul 2021 19:40:13 +0200 Subject: [PATCH 21/77] Ajout du titre de colonne dans le choix dm --- borg-gui.sh | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/borg-gui.sh b/borg-gui.sh index 959636e..210fcc6 100755 --- a/borg-gui.sh +++ b/borg-gui.sh @@ -142,7 +142,7 @@ elif [ "$choixmenu" = "ms" ];then elif [ "$choixmenu" = "dm" ];then # Demonter une archive - ptnmontage=$(mount | grep borgfs | cut -d" " -f3 | zenity --width=500 --height=400 --list --title "Liste des points de montages" --column "") + ptnmontage=$(mount | grep borgfs | cut -d" " -f3 | zenity --width=500 --height=400 --list --title "Liste des points de montages" --column "Archive") fusermount -u $ptnmontage | zenity --width=600 --progress --pulsate --auto-close sleep 5 | zenity --width=600 --progress --pulsate --auto-close rmdir $ptnmontage | zenity --width=600 --progress --pulsate --auto-close From bd2819a6a5c221a994f5ff34b7fcc794c0084b5b Mon Sep 17 00:00:00 2001 From: Djan GICQUEL <> Date: Sun, 4 Jul 2021 19:45:16 +0200 Subject: [PATCH 22/77] correction d'une erreur dans 'Information archive' --- borg-gui.sh | 1 - 1 file changed, 1 deletion(-) diff --git a/borg-gui.sh b/borg-gui.sh index 210fcc6..1531f1d 100755 --- a/borg-gui.sh +++ b/borg-gui.sh @@ -166,7 +166,6 @@ elif [ "$choixmenu" = "is" ];then if [ "$borg_archive" = "" ];then zenity --width=600 --info --text "Aucune archive choisie, retour au menu" else - borg_archive=$(borg list --short $borg_repo | zenity --height=500 --list --title "Listes des archives" --column "Archive") zenity --width=600 --info --text="$(borg info $borg_repo::$borg_archive)" | zenity --width=600 --progress --pulsate --auto-close fi From b5add4a158b59bab880725296f08e953e48accdb Mon Sep 17 00:00:00 2001 From: Djan GICQUEL <> Date: Sun, 4 Jul 2021 20:00:29 +0200 Subject: [PATCH 23/77] =?UTF-8?q?Int=C3=A9gration=20du=20syst=C3=A8me=20de?= =?UTF-8?q?=20filtre?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- borg-gui.sh | 24 +++++++++++++++--------- 1 file changed, 15 insertions(+), 9 deletions(-) diff --git a/borg-gui.sh b/borg-gui.sh index 1531f1d..65a10b3 100755 --- a/borg-gui.sh +++ b/borg-gui.sh @@ -100,6 +100,8 @@ ms\nMonter une archive\n\ dm\nDemonter une archive\n\ ss\nSupprimmer une archive\n\ is\nInformation archive\n\ +fi\nFiltre : "$filter"\n\ +--\n------------------------------------------\n\ id\nInformation sur le dépôt\n\ ap\nAfficher le profil\n\ ed\nEspace disque utilisé\n\ @@ -125,16 +127,10 @@ if [ "$choixmenu" = "cs" ] ;then zenity --notification --text "Sauvegarde $nomsauvegarde terminée" zenity --width=600 --info --text "Sauvegarde $nomsauvegarde terminée" -elif [ "$choixmenu" = "ed" ] ;then -# Espace disque utilisé - - espacedisqueutil=$(df -k --output=pcent $borg_repo | tail -n +2) - zenity --width=600 --info --text "Espace disque utilisé : $espacedisqueutil" - elif [ "$choixmenu" = "ms" ];then # Monter une archive - borg_archive=$(borg list --short $borg_repo | zenity --height=500 --list --title "Listes des archives" --column "Archive") + borg_archive=$(borg list --short $borg_repo | grep $filter | zenity --height=500 --list --title "Listes des archives" --column "Archive") mkdir $HOME/$borg_archive borg mount $borg_repo::$borg_archive $HOME/$borg_archive | zenity --width=600 --progress --pulsate --auto-close zenity --width=600 --info --text="La sauvegarde est disponible dans le dossier\n$HOME/$borg_archive" @@ -150,7 +146,7 @@ elif [ "$choixmenu" = "dm" ];then elif [ "$choixmenu" = "ss" ];then # Supprimmer une archive - borg_archive=$(borg list --short $borg_repo | zenity --height=500 --list --title "Listes des archives" --column "Archive") + borg_archive=$(borg list --short $borg_repo | grep $filter | zenity --height=500 --list --title "Listes des archives" --column "Archive") if [ "$borg_archive" = "" ];then zenity --width=600 --info --text "Aucune archive choisie, retour au menu" else @@ -162,13 +158,17 @@ elif [ "$choixmenu" = "ss" ];then elif [ "$choixmenu" = "is" ];then # Information archive - borg_archive=$(borg list --short $borg_repo | zenity --height=500 --list --title "Listes des archives" --column "Archive") + borg_archive=$(borg list --short $borg_repo | grep $filter | zenity --height=500 --list --title "Listes des archives" --column "Archive") if [ "$borg_archive" = "" ];then zenity --width=600 --info --text "Aucune archive choisie, retour au menu" else zenity --width=600 --info --text="$(borg info $borg_repo::$borg_archive)" | zenity --width=600 --progress --pulsate --auto-close fi +elif [ "$choixmenu" = "fi" ];then +#Filtre + + filter=$(zenity --entry) elif [ "$choixmenu" = "id" ];then # Information sur le dépôt @@ -180,6 +180,12 @@ elif [ "$choixmenu" = "ap" ];then zenity --width=600 --height=400 --info --text="$(cd $dossierprofil && cat $fichierprofil)" +elif [ "$choixmenu" = "ed" ] ;then +# Espace disque utilisé + + espacedisqueutil=$(df -k --output=pcent $borg_repo | tail -n +2) + zenity --width=600 --info --text "Espace disque utilisé : $espacedisqueutil" + elif [ "$choixmenu" = "" ];then zenity --width=600 --info --text="Aucun choix, retour au menu." fi From 890f28a1d2b50f98ad32058a41109384a7f6e66f Mon Sep 17 00:00:00 2001 From: Djan GICQUEL <> Date: Sun, 4 Jul 2021 21:54:04 +0200 Subject: [PATCH 24/77] correction sur la fonction filtre --- borg-gui.sh | 16 ++++++++++++++++ 1 file changed, 16 insertions(+) diff --git a/borg-gui.sh b/borg-gui.sh index 65a10b3..e274978 100755 --- a/borg-gui.sh +++ b/borg-gui.sh @@ -130,7 +130,12 @@ if [ "$choixmenu" = "cs" ] ;then elif [ "$choixmenu" = "ms" ];then # Monter une archive + if [ "$filter" = "" ];then + borg_archive=$(borg list --short $borg_repo | zenity --height=500 --list --title "Listes des archives" --column "Archive") + else borg_archive=$(borg list --short $borg_repo | grep $filter | zenity --height=500 --list --title "Listes des archives" --column "Archive") + fi + mkdir $HOME/$borg_archive borg mount $borg_repo::$borg_archive $HOME/$borg_archive | zenity --width=600 --progress --pulsate --auto-close zenity --width=600 --info --text="La sauvegarde est disponible dans le dossier\n$HOME/$borg_archive" @@ -146,7 +151,13 @@ elif [ "$choixmenu" = "dm" ];then elif [ "$choixmenu" = "ss" ];then # Supprimmer une archive + if [ "$filter" = "" ];then + borg_archive=$(borg list --short $borg_repo | zenity --height=500 --list --title "Listes des archives" --column "Archive") + else borg_archive=$(borg list --short $borg_repo | grep $filter | zenity --height=500 --list --title "Listes des archives" --column "Archive") + fi + + if [ "$borg_archive" = "" ];then zenity --width=600 --info --text "Aucune archive choisie, retour au menu" else @@ -158,7 +169,12 @@ elif [ "$choixmenu" = "ss" ];then elif [ "$choixmenu" = "is" ];then # Information archive + if [ "$filter" = "" ];then + borg_archive=$(borg list --short $borg_repo | zenity --height=500 --list --title "Listes des archives" --column "Archive") + else borg_archive=$(borg list --short $borg_repo | grep $filter | zenity --height=500 --list --title "Listes des archives" --column "Archive") + fi + if [ "$borg_archive" = "" ];then zenity --width=600 --info --text "Aucune archive choisie, retour au menu" else From 366d9f9aee32907d4f1e8004a0c9625a8429c9c1 Mon Sep 17 00:00:00 2001 From: Djan GICQUEL <> Date: Sun, 4 Jul 2021 21:56:35 +0200 Subject: [PATCH 25/77] =?UTF-8?q?suppresion=20des=20la=20boite=20de=20dial?= =?UTF-8?q?ogue=20'espace=20disque=20utilis=C3=A9'.=20Affichage=20direct?= =?UTF-8?q?=20dans=20le=20menu.?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- borg-gui.sh | 9 ++------- 1 file changed, 2 insertions(+), 7 deletions(-) diff --git a/borg-gui.sh b/borg-gui.sh index e274978..9cddb7e 100755 --- a/borg-gui.sh +++ b/borg-gui.sh @@ -104,7 +104,8 @@ fi\nFiltre : "$filter"\n\ --\n------------------------------------------\n\ id\nInformation sur le dépôt\n\ ap\nAfficher le profil\n\ -ed\nEspace disque utilisé\n\ +--\n------------------------------------------\n\ +ed\nEspace disque utilisé : $(df -k --output=pcent $borg_repo | tail -n +2)\n\ qu\nQuitter\ " | zenity --list \ --height=400 --width=400 \ @@ -196,12 +197,6 @@ elif [ "$choixmenu" = "ap" ];then zenity --width=600 --height=400 --info --text="$(cd $dossierprofil && cat $fichierprofil)" -elif [ "$choixmenu" = "ed" ] ;then -# Espace disque utilisé - - espacedisqueutil=$(df -k --output=pcent $borg_repo | tail -n +2) - zenity --width=600 --info --text "Espace disque utilisé : $espacedisqueutil" - elif [ "$choixmenu" = "" ];then zenity --width=600 --info --text="Aucun choix, retour au menu." fi From 1bd8701e783933c7126f65db7d8fd7a28dcfcb2c Mon Sep 17 00:00:00 2001 From: Djan GICQUEL <> Date: Sun, 18 Jul 2021 20:21:49 +0200 Subject: [PATCH 26/77] =?UTF-8?q?ajout=20de=20l'option=20--update=20=C3=A0?= =?UTF-8?q?=20install.sh?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- install.sh | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/install.sh b/install.sh index 4118b1f..9dcccb6 100644 --- a/install.sh +++ b/install.sh @@ -8,3 +8,9 @@ cp -v borg-gui.sh $HOME/bin/ cp -v borg.svg $HOME/icons/ cp -v profil.txt $HOME/.config/borg/ cp -v sauvegarde-borg.desktop $HOME/.local/share/applications/ + +if [ "$1" = "--update" ];then + cp -fv borg-gui.sh $HOME/bin/ + cp -fv borg.svg $HOME/icons/ + cp -fv sauvegarde-borg.desktop $HOME/.local/share/applications/ +fi From a9b50e79adcbfb48def9d2dccb59a96ab6a846a3 Mon Sep 17 00:00:00 2001 From: Djan GICQUEL <> Date: Sun, 18 Jul 2021 20:24:07 +0200 Subject: [PATCH 27/77] =?UTF-8?q?supression=20du=20message=20espace=20disq?= =?UTF-8?q?ue=20utilis=C3=A9=20lors=20de=20la=20cr=C3=A9ation=20d'une=20ar?= =?UTF-8?q?chive?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- borg-gui.sh | 3 --- 1 file changed, 3 deletions(-) diff --git a/borg-gui.sh b/borg-gui.sh index 9cddb7e..ffb07d1 100755 --- a/borg-gui.sh +++ b/borg-gui.sh @@ -120,9 +120,6 @@ if [ "$choixmenu" = "cs" ] ;then DossierPresent $borg_repo DossierPresent $borg_dir - espacedisqueutil=$(df -k --output=pcent $borg_repo | tail -n +2) - zenity --width=600 --notification --text "Espace disque utilisé : $espacedisqueutil" - borg create $borg_excludes $borg_compress $borg_repo::$borg_archive $borg_dir | zenity --width=600 --progress --pulsate --auto-close --title="Sauvegarde en cours..." sync | zenity --width=600 --progress --pulsate --auto-close --title="Synchronisation des écritures..." zenity --notification --text "Sauvegarde $nomsauvegarde terminée" From 27c9b1dd89ef92f2ffa87e0a8a0e4200cfd0584c Mon Sep 17 00:00:00 2001 From: Djan GICQUEL <> Date: Sun, 18 Jul 2021 20:33:01 +0200 Subject: [PATCH 28/77] Si le dossier source est absent, retour au menu --- borg-gui.sh | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) diff --git a/borg-gui.sh b/borg-gui.sh index ffb07d1..7c46568 100755 --- a/borg-gui.sh +++ b/borg-gui.sh @@ -50,9 +50,9 @@ bobainfoa () { DossierPresent () { if [ ! -d "$1" ]; then - inforerror=$(echo "Erreur, le dossier $1 est absent.\nFin du script.") + inforerror=$(echo "Erreur, le dossier $1 est absent.") zenity --width=600 --error --text="$inforerror" - exit + VarDossierPresent="false" fi } @@ -120,10 +120,12 @@ if [ "$choixmenu" = "cs" ] ;then DossierPresent $borg_repo DossierPresent $borg_dir + if [ "$VarDossierPresent" != "false" ];then borg create $borg_excludes $borg_compress $borg_repo::$borg_archive $borg_dir | zenity --width=600 --progress --pulsate --auto-close --title="Sauvegarde en cours..." sync | zenity --width=600 --progress --pulsate --auto-close --title="Synchronisation des écritures..." zenity --notification --text "Sauvegarde $nomsauvegarde terminée" zenity --width=600 --info --text "Sauvegarde $nomsauvegarde terminée" + fi elif [ "$choixmenu" = "ms" ];then # Monter une archive From 07daeaf25741a1af542672ae115dc1a715df6ef8 Mon Sep 17 00:00:00 2001 From: Djan GICQUEL <> Date: Mon, 19 Jul 2021 20:16:02 +0200 Subject: [PATCH 29/77] prise en charge du bouton annuler dans les menus --- borg-gui.sh | 35 +++++++++++++++++++++++------------ 1 file changed, 23 insertions(+), 12 deletions(-) diff --git a/borg-gui.sh b/borg-gui.sh index 7c46568..4e7c9b1 100755 --- a/borg-gui.sh +++ b/borg-gui.sh @@ -130,23 +130,34 @@ if [ "$choixmenu" = "cs" ] ;then elif [ "$choixmenu" = "ms" ];then # Monter une archive - if [ "$filter" = "" ];then - borg_archive=$(borg list --short $borg_repo | zenity --height=500 --list --title "Listes des archives" --column "Archive") - else - borg_archive=$(borg list --short $borg_repo | grep $filter | zenity --height=500 --list --title "Listes des archives" --column "Archive") - fi + if [ "$filter" = "" ];then + borg_archive=$(borg list --short $borg_repo | zenity --height=500 --list --title "Listes des archives" --column "Archive") + else + borg_archive=$(borg list --short $borg_repo | grep $filter | zenity --height=500 --list --title "Listes des archives" --column "Archive") + fi + + if [ "$borg_archive" = "" ];then + zenity --width=600 --info --text "Aucune archive choisie, retour au menu" + else + + mkdir $HOME/$borg_archive + borg mount $borg_repo::$borg_archive $HOME/$borg_archive | zenity --width=600 --progress --pulsate --auto-close + zenity --width=600 --info --text="La sauvegarde est disponible dans le dossier\n$HOME/$borg_archive" + fi - mkdir $HOME/$borg_archive - borg mount $borg_repo::$borg_archive $HOME/$borg_archive | zenity --width=600 --progress --pulsate --auto-close - zenity --width=600 --info --text="La sauvegarde est disponible dans le dossier\n$HOME/$borg_archive" elif [ "$choixmenu" = "dm" ];then # Demonter une archive ptnmontage=$(mount | grep borgfs | cut -d" " -f3 | zenity --width=500 --height=400 --list --title "Liste des points de montages" --column "Archive") - fusermount -u $ptnmontage | zenity --width=600 --progress --pulsate --auto-close - sleep 5 | zenity --width=600 --progress --pulsate --auto-close - rmdir $ptnmontage | zenity --width=600 --progress --pulsate --auto-close + + if [ "$ptnmontage" = "" ];then + zenity --width=600 --info --text "Aucune option choisie, retour au menu" + else + fusermount -u $ptnmontage | zenity --width=600 --progress --pulsate --auto-close + sleep 5 | zenity --width=600 --progress --pulsate --auto-close + rmdir $ptnmontage | zenity --width=600 --progress --pulsate --auto-close + fi elif [ "$choixmenu" = "ss" ];then # Supprimmer une archive @@ -197,6 +208,6 @@ elif [ "$choixmenu" = "ap" ];then zenity --width=600 --height=400 --info --text="$(cd $dossierprofil && cat $fichierprofil)" elif [ "$choixmenu" = "" ];then - zenity --width=600 --info --text="Aucun choix, retour au menu." + exit fi done From 710bbe08b9a47066a681ce3763d6afc22492293a Mon Sep 17 00:00:00 2001 From: Djan GICQUEL <> Date: Wed, 21 Jul 2021 17:45:46 +0200 Subject: [PATCH 30/77] indentation du code --- borg-gui.sh | 37 +++++++++++++++++-------------------- 1 file changed, 17 insertions(+), 20 deletions(-) diff --git a/borg-gui.sh b/borg-gui.sh index 4e7c9b1..0dace44 100755 --- a/borg-gui.sh +++ b/borg-gui.sh @@ -92,8 +92,7 @@ TestBorgRepo ################################################################################# # Gestion des options du menu ################################################################################# -while [ ! "$choixmenu" = "qu" ] -do + choixmenu=$(echo -e "\ cs\nCréer une archive\n\ ms\nMonter une archive\n\ @@ -106,13 +105,16 @@ id\nInformation sur le dépôt\n\ ap\nAfficher le profil\n\ --\n------------------------------------------\n\ ed\nEspace disque utilisé : $(df -k --output=pcent $borg_repo | tail -n +2)\n\ -qu\nQuitter\ " | zenity --list \ --height=400 --width=400 \ --title "BORG GUI : $nomsauvegarde" \ +--cancel-label "Quitter" \ --hide-header --hide-column=1 --column "id" --column "choix") -if [ "$choixmenu" = "cs" ] ;then +if [ "$choixmenu" = "" ];then + + +elif [ "$choixmenu" = "cs" ] ;then # Créer une archive TestBorgRepo @@ -121,10 +123,10 @@ if [ "$choixmenu" = "cs" ] ;then DossierPresent $borg_dir if [ "$VarDossierPresent" != "false" ];then - borg create $borg_excludes $borg_compress $borg_repo::$borg_archive $borg_dir | zenity --width=600 --progress --pulsate --auto-close --title="Sauvegarde en cours..." - sync | zenity --width=600 --progress --pulsate --auto-close --title="Synchronisation des écritures..." - zenity --notification --text "Sauvegarde $nomsauvegarde terminée" - zenity --width=600 --info --text "Sauvegarde $nomsauvegarde terminée" + borg create $borg_excludes $borg_compress $borg_repo::$borg_archive $borg_dir | zenity --width=600 --progress --pulsate --auto-close --title="Sauvegarde en cours..." + sync | zenity --width=600 --progress --pulsate --auto-close --title="Synchronisation des écritures..." + zenity --notification --text "Sauvegarde $nomsauvegarde terminée" + zenity --width=600 --info --text "Sauvegarde $nomsauvegarde terminée" fi elif [ "$choixmenu" = "ms" ];then @@ -139,7 +141,6 @@ elif [ "$choixmenu" = "ms" ];then if [ "$borg_archive" = "" ];then zenity --width=600 --info --text "Aucune archive choisie, retour au menu" else - mkdir $HOME/$borg_archive borg mount $borg_repo::$borg_archive $HOME/$borg_archive | zenity --width=600 --progress --pulsate --auto-close zenity --width=600 --info --text="La sauvegarde est disponible dans le dossier\n$HOME/$borg_archive" @@ -151,13 +152,13 @@ elif [ "$choixmenu" = "dm" ];then ptnmontage=$(mount | grep borgfs | cut -d" " -f3 | zenity --width=500 --height=400 --list --title "Liste des points de montages" --column "Archive") - if [ "$ptnmontage" = "" ];then - zenity --width=600 --info --text "Aucune option choisie, retour au menu" - else - fusermount -u $ptnmontage | zenity --width=600 --progress --pulsate --auto-close - sleep 5 | zenity --width=600 --progress --pulsate --auto-close - rmdir $ptnmontage | zenity --width=600 --progress --pulsate --auto-close - fi + if [ "$ptnmontage" = "" ];then + zenity --width=600 --info --text "Aucune option choisie, retour au menu" + else + fusermount -u $ptnmontage | zenity --width=600 --progress --pulsate --auto-close + sleep 5 | zenity --width=600 --progress --pulsate --auto-close + rmdir $ptnmontage | zenity --width=600 --progress --pulsate --auto-close + fi elif [ "$choixmenu" = "ss" ];then # Supprimmer une archive @@ -206,8 +207,4 @@ elif [ "$choixmenu" = "ap" ];then # Afficher le profil zenity --width=600 --height=400 --info --text="$(cd $dossierprofil && cat $fichierprofil)" - -elif [ "$choixmenu" = "" ];then - exit fi -done From 1aa05122be6db6cf72bfee65548df98a1a963f8e Mon Sep 17 00:00:00 2001 From: Djan GICQUEL <> Date: Fri, 23 Jul 2021 20:43:24 +0200 Subject: [PATCH 31/77] =?UTF-8?q?ajout=20des=20ic=C3=B4nes=20borg?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- borg-gui.sh | 22 +++++++++++----------- 1 file changed, 11 insertions(+), 11 deletions(-) diff --git a/borg-gui.sh b/borg-gui.sh index 7c46568..40b5753 100755 --- a/borg-gui.sh +++ b/borg-gui.sh @@ -65,7 +65,7 @@ if [ ! $1 = "" ]; then . "$1" else cd $dossierprofil - fichierprofil=$(ls -1 *.txt | zenity --height=500 --width=600 --list --title "Liste des profils" --hide-header --column "profil") && . $fichierprofil + fichierprofil=$(ls -1 *.txt | zenity --height=500 --width=600 --window-icon=$HOME/.icons/borg.svg --list --title "Liste des profils" --hide-header --column "profil") && . $fichierprofil fi if [ "$fichierprofil" = "" ]; then @@ -107,7 +107,7 @@ ap\nAfficher le profil\n\ --\n------------------------------------------\n\ ed\nEspace disque utilisé : $(df -k --output=pcent $borg_repo | tail -n +2)\n\ qu\nQuitter\ -" | zenity --list \ +" | zenity --window-icon=$HOME/.icons/borg.svg --list \ --height=400 --width=400 \ --title "BORG GUI : $nomsauvegarde" \ --hide-header --hide-column=1 --column "id" --column "choix") @@ -121,8 +121,8 @@ if [ "$choixmenu" = "cs" ] ;then DossierPresent $borg_dir if [ "$VarDossierPresent" != "false" ];then - borg create $borg_excludes $borg_compress $borg_repo::$borg_archive $borg_dir | zenity --width=600 --progress --pulsate --auto-close --title="Sauvegarde en cours..." - sync | zenity --width=600 --progress --pulsate --auto-close --title="Synchronisation des écritures..." + borg create $borg_excludes $borg_compress $borg_repo::$borg_archive $borg_dir | zenity --width=600 --window-icon=$HOME/.icons/borg.svg --progress --pulsate --auto-close --title="Sauvegarde en cours..." + sync | zenity --width=600 --window-icon=$HOME/.icons/borg.svg --progress --pulsate --auto-close --title="Synchronisation des écritures..." zenity --notification --text "Sauvegarde $nomsauvegarde terminée" zenity --width=600 --info --text "Sauvegarde $nomsauvegarde terminée" fi @@ -131,9 +131,9 @@ elif [ "$choixmenu" = "ms" ];then # Monter une archive if [ "$filter" = "" ];then - borg_archive=$(borg list --short $borg_repo | zenity --height=500 --list --title "Listes des archives" --column "Archive") + borg_archive=$(borg list --short $borg_repo | zenity --height=500 --window-icon=$HOME/.icons/borg.svg --list --title "Listes des archives" --column "Archive") else - borg_archive=$(borg list --short $borg_repo | grep $filter | zenity --height=500 --list --title "Listes des archives" --column "Archive") + borg_archive=$(borg list --short $borg_repo | grep $filter | zenity --height=500 --window-icon=$HOME/.icons/borg.svg --list --title "Listes des archives" --column "Archive") fi mkdir $HOME/$borg_archive @@ -143,7 +143,7 @@ elif [ "$choixmenu" = "ms" ];then elif [ "$choixmenu" = "dm" ];then # Demonter une archive - ptnmontage=$(mount | grep borgfs | cut -d" " -f3 | zenity --width=500 --height=400 --list --title "Liste des points de montages" --column "Archive") + ptnmontage=$(mount | grep borgfs | cut -d" " -f3 | zenity --width=500 --height=400 --window-icon=$HOME/.icons/borg.svg --list --title "Liste des points de montages" --column "Archive") fusermount -u $ptnmontage | zenity --width=600 --progress --pulsate --auto-close sleep 5 | zenity --width=600 --progress --pulsate --auto-close rmdir $ptnmontage | zenity --width=600 --progress --pulsate --auto-close @@ -152,9 +152,9 @@ elif [ "$choixmenu" = "ss" ];then # Supprimmer une archive if [ "$filter" = "" ];then - borg_archive=$(borg list --short $borg_repo | zenity --height=500 --list --title "Listes des archives" --column "Archive") + borg_archive=$(borg list --short $borg_repo | zenity --height=500 --window-icon=$HOME/.icons/borg.svg --list --title "Listes des archives" --column "Archive") else - borg_archive=$(borg list --short $borg_repo | grep $filter | zenity --height=500 --list --title "Listes des archives" --column "Archive") + borg_archive=$(borg list --short $borg_repo | grep $filter | zenity --height=500 --window-icon=$HOME/.icons/borg.svg --list --title "Listes des archives" --column "Archive") fi @@ -170,9 +170,9 @@ elif [ "$choixmenu" = "is" ];then # Information archive if [ "$filter" = "" ];then - borg_archive=$(borg list --short $borg_repo | zenity --height=500 --list --title "Listes des archives" --column "Archive") + borg_archive=$(borg list --short $borg_repo | zenity --height=500 --window-icon=$HOME/.icons/borg.svg --list --title "Listes des archives" --column "Archive") else - borg_archive=$(borg list --short $borg_repo | grep $filter | zenity --height=500 --list --title "Listes des archives" --column "Archive") + borg_archive=$(borg list --short $borg_repo | grep $filter | zenity --height=500 --window-icon=$HOME/.icons/borg.svg --list --title "Listes des archives" --column "Archive") fi if [ "$borg_archive" = "" ];then From bde056f5ee47fcc22a45195c32f2aeb99b45a505 Mon Sep 17 00:00:00 2001 From: Djan GICQUEL <> Date: Fri, 23 Jul 2021 20:54:38 +0200 Subject: [PATCH 32/77] mention 'choisir un profil dans la liste' dans le selecteur de profils --- borg-gui.sh | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/borg-gui.sh b/borg-gui.sh index 40b5753..3fed271 100755 --- a/borg-gui.sh +++ b/borg-gui.sh @@ -65,7 +65,7 @@ if [ ! $1 = "" ]; then . "$1" else cd $dossierprofil - fichierprofil=$(ls -1 *.txt | zenity --height=500 --width=600 --window-icon=$HOME/.icons/borg.svg --list --title "Liste des profils" --hide-header --column "profil") && . $fichierprofil + fichierprofil=$(ls -1 *.txt | zenity --height=500 --width=600 --window-icon=$HOME/.icons/borg.svg --list --title "Liste des profils" --text "Choisir un profil dans la liste" --hide-header --column "profil") && . $fichierprofil fi if [ "$fichierprofil" = "" ]; then From bc05a6cb0ab9fca451698dc9f5e9d3faf8ef1b18 Mon Sep 17 00:00:00 2001 From: Djan GICQUEL <> Date: Sat, 24 Jul 2021 12:24:38 +0200 Subject: [PATCH 33/77] ajout des variables pour la hauteur et la largeur des boites de dialogue --- borg-gui.sh | 66 +++++++++++++++++++++++++++-------------------------- 1 file changed, 34 insertions(+), 32 deletions(-) diff --git a/borg-gui.sh b/borg-gui.sh index 3fed271..330cb9d 100755 --- a/borg-gui.sh +++ b/borg-gui.sh @@ -17,6 +17,8 @@ fi export BORG_UNKNOWN_UNENCRYPTED_REPO_ACCESS_IS_OK=yes export BORG_RELOCATED_REPO_ACCESS_IS_OK=yes dossierprofil="$HOME/.config/borg/" +W="600" +H="500" # FONCTIONS ################################################################################# @@ -24,21 +26,21 @@ TestBorgRepo () { if [ ! -f "config" ]; then TestBorgErr=1 infoerr=$(echo "Impossible de trouver le fichier de configuration borg.") - zenity --width=600 --error --text="$infoerr" + zenity --width=$W --error --text="$infoerr" exit fi if [ ! -d "data" ]; then TestBorgErr=1 infoerr=$(echo "Impossible de trouver le fichier de configuration borg.") - zenity --width=600 --error --text="$infoerr" + zenity --width=$W --error --text="$infoerr" exit fi if [ -d "lock.exclusive" ]; then TestBorgErr=1 infoerr=$(echo "Le dépôt est bloqué, une opération est peut-être en cours") - zenity --width=600 --error --text="$infoerr" + zenity --width=$W --error --text="$infoerr" exit fi } @@ -51,7 +53,7 @@ bobainfoa () { DossierPresent () { if [ ! -d "$1" ]; then inforerror=$(echo "Erreur, le dossier $1 est absent.") - zenity --width=600 --error --text="$inforerror" + zenity --width=$W --error --text="$inforerror" VarDossierPresent="false" fi } @@ -65,20 +67,20 @@ if [ ! $1 = "" ]; then . "$1" else cd $dossierprofil - fichierprofil=$(ls -1 *.txt | zenity --height=500 --width=600 --window-icon=$HOME/.icons/borg.svg --list --title "Liste des profils" --text "Choisir un profil dans la liste" --hide-header --column "profil") && . $fichierprofil + fichierprofil=$(ls -1 *.txt | zenity --height=$H --width=$W --window-icon=$HOME/.icons/borg.svg --list --title "Liste des profils" --text "Choisir un profil dans la liste" --hide-header --column "profil") && . $fichierprofil fi if [ "$fichierprofil" = "" ]; then infoerr=$(echo "Aucun profil choisi.") - zenity --width=600 --error --text="$infoerr" + zenity --width=$W --error --text="$infoerr" exit elif [ "$nomsauvegarde" = "" ]; then infoerr=$(echo "Nom de sauvegarde non défini.") - zenity --width=600 --error --text="$infoerr" + zenity --width=$W --error --text="$infoerr" exit elif [ "$borg_repo" = "" ]; then infoerr=$(echo "Variable \$borg_repo absente") - zenity --width=600 --error --text="$infoerr" + zenity --width=$W --error --text="$infoerr" exit fi @@ -108,7 +110,7 @@ ap\nAfficher le profil\n\ ed\nEspace disque utilisé : $(df -k --output=pcent $borg_repo | tail -n +2)\n\ qu\nQuitter\ " | zenity --window-icon=$HOME/.icons/borg.svg --list \ ---height=400 --width=400 \ +--height=$H --width=$W \ --title "BORG GUI : $nomsauvegarde" \ --hide-header --hide-column=1 --column "id" --column "choix") @@ -121,48 +123,48 @@ if [ "$choixmenu" = "cs" ] ;then DossierPresent $borg_dir if [ "$VarDossierPresent" != "false" ];then - borg create $borg_excludes $borg_compress $borg_repo::$borg_archive $borg_dir | zenity --width=600 --window-icon=$HOME/.icons/borg.svg --progress --pulsate --auto-close --title="Sauvegarde en cours..." - sync | zenity --width=600 --window-icon=$HOME/.icons/borg.svg --progress --pulsate --auto-close --title="Synchronisation des écritures..." + borg create $borg_excludes $borg_compress $borg_repo::$borg_archive $borg_dir | zenity --width=$W --window-icon=$HOME/.icons/borg.svg --progress --pulsate --auto-close --title="Sauvegarde en cours..." + sync | zenity --width=$W --window-icon=$HOME/.icons/borg.svg --progress --pulsate --auto-close --title="Synchronisation des écritures..." zenity --notification --text "Sauvegarde $nomsauvegarde terminée" - zenity --width=600 --info --text "Sauvegarde $nomsauvegarde terminée" + zenity --width=$W --info --text "Sauvegarde $nomsauvegarde terminée" fi elif [ "$choixmenu" = "ms" ];then # Monter une archive if [ "$filter" = "" ];then - borg_archive=$(borg list --short $borg_repo | zenity --height=500 --window-icon=$HOME/.icons/borg.svg --list --title "Listes des archives" --column "Archive") + borg_archive=$(borg list --short $borg_repo | zenity --height=$H --window-icon=$HOME/.icons/borg.svg --list --title "Listes des archives" --column "Archive") else - borg_archive=$(borg list --short $borg_repo | grep $filter | zenity --height=500 --window-icon=$HOME/.icons/borg.svg --list --title "Listes des archives" --column "Archive") + borg_archive=$(borg list --short $borg_repo | grep $filter | zenity --height=$H --window-icon=$HOME/.icons/borg.svg --list --title "Listes des archives" --column "Archive") fi mkdir $HOME/$borg_archive - borg mount $borg_repo::$borg_archive $HOME/$borg_archive | zenity --width=600 --progress --pulsate --auto-close - zenity --width=600 --info --text="La sauvegarde est disponible dans le dossier\n$HOME/$borg_archive" + borg mount $borg_repo::$borg_archive $HOME/$borg_archive | zenity --width=$W --progress --pulsate --auto-close + zenity --width=$W --info --text="La sauvegarde est disponible dans le dossier\n$HOME/$borg_archive" elif [ "$choixmenu" = "dm" ];then # Demonter une archive - ptnmontage=$(mount | grep borgfs | cut -d" " -f3 | zenity --width=500 --height=400 --window-icon=$HOME/.icons/borg.svg --list --title "Liste des points de montages" --column "Archive") - fusermount -u $ptnmontage | zenity --width=600 --progress --pulsate --auto-close - sleep 5 | zenity --width=600 --progress --pulsate --auto-close - rmdir $ptnmontage | zenity --width=600 --progress --pulsate --auto-close + ptnmontage=$(mount | grep borgfs | cut -d" " -f3 | zenity --width=500 --height=$H --window-icon=$HOME/.icons/borg.svg --list --title "Liste des points de montages" --column "Archive") + fusermount -u $ptnmontage | zenity --width=$W --progress --pulsate --auto-close + sleep 5 | zenity --width=$W --progress --pulsate --auto-close + rmdir $ptnmontage | zenity --width=$W --progress --pulsate --auto-close elif [ "$choixmenu" = "ss" ];then # Supprimmer une archive if [ "$filter" = "" ];then - borg_archive=$(borg list --short $borg_repo | zenity --height=500 --window-icon=$HOME/.icons/borg.svg --list --title "Listes des archives" --column "Archive") + borg_archive=$(borg list --short $borg_repo | zenity --height=$H --window-icon=$HOME/.icons/borg.svg --list --title "Listes des archives" --column "Archive") else - borg_archive=$(borg list --short $borg_repo | grep $filter | zenity --height=500 --window-icon=$HOME/.icons/borg.svg --list --title "Listes des archives" --column "Archive") + borg_archive=$(borg list --short $borg_repo | grep $filter | zenity --height=$H --window-icon=$HOME/.icons/borg.svg --list --title "Listes des archives" --column "Archive") fi if [ "$borg_archive" = "" ];then - zenity --width=600 --info --text "Aucune archive choisie, retour au menu" + zenity --width=$W --info --text "Aucune archive choisie, retour au menu" else - borg delete $borg_repo::$borg_archive | zenity --width=600 --progress --pulsate --auto-close - zenity --width=600 --info --text="Suppresion de l'archive $borg_archive terminée" + borg delete $borg_repo::$borg_archive | zenity --width=$W --progress --pulsate --auto-close + zenity --width=$W --info --text="Suppresion de l'archive $borg_archive terminée" fi @@ -170,15 +172,15 @@ elif [ "$choixmenu" = "is" ];then # Information archive if [ "$filter" = "" ];then - borg_archive=$(borg list --short $borg_repo | zenity --height=500 --window-icon=$HOME/.icons/borg.svg --list --title "Listes des archives" --column "Archive") + borg_archive=$(borg list --short $borg_repo | zenity --height=$H --window-icon=$HOME/.icons/borg.svg --list --title "Listes des archives" --column "Archive") else - borg_archive=$(borg list --short $borg_repo | grep $filter | zenity --height=500 --window-icon=$HOME/.icons/borg.svg --list --title "Listes des archives" --column "Archive") + borg_archive=$(borg list --short $borg_repo | grep $filter | zenity --height=$H --window-icon=$HOME/.icons/borg.svg --list --title "Listes des archives" --column "Archive") fi if [ "$borg_archive" = "" ];then - zenity --width=600 --info --text "Aucune archive choisie, retour au menu" + zenity --width=$W --info --text "Aucune archive choisie, retour au menu" else - zenity --width=600 --info --text="$(borg info $borg_repo::$borg_archive)" | zenity --width=600 --progress --pulsate --auto-close + zenity --width=$W --info --text="$(borg info $borg_repo::$borg_archive)" | zenity --width=$W --progress --pulsate --auto-close fi elif [ "$choixmenu" = "fi" ];then @@ -189,14 +191,14 @@ elif [ "$choixmenu" = "fi" ];then elif [ "$choixmenu" = "id" ];then # Information sur le dépôt - zenity --width=600 --info --text="$(borg info $borg_repo)" | zenity --width=600 --progress --pulsate --auto-close --title="Récupération des informations..." + zenity --width=$W --info --text="$(borg info $borg_repo)" | zenity --width=$W --progress --pulsate --auto-close --title="Récupération des informations..." elif [ "$choixmenu" = "ap" ];then # Afficher le profil - zenity --width=600 --height=400 --info --text="$(cd $dossierprofil && cat $fichierprofil)" + zenity --width=$W --height=$H --info --text="$(cd $dossierprofil && cat $fichierprofil)" elif [ "$choixmenu" = "" ];then - zenity --width=600 --info --text="Aucun choix, retour au menu." + zenity --width=$W --info --text="Aucun choix, retour au menu." fi done From 2dd733908adce7f7997f45e192f2ec791096aa0f Mon Sep 17 00:00:00 2001 From: Djan GICQUEL <> Date: Sat, 24 Jul 2021 12:35:09 +0200 Subject: [PATCH 34/77] =?UTF-8?q?si=20aucun=20choix=20de=20chemin=20dans?= =?UTF-8?q?=20le=20menu=20de=20d=C3=A9montage,=20retour=20au=20menu?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- borg-gui.sh | 8 +++++--- 1 file changed, 5 insertions(+), 3 deletions(-) diff --git a/borg-gui.sh b/borg-gui.sh index 330cb9d..92ca90e 100755 --- a/borg-gui.sh +++ b/borg-gui.sh @@ -146,9 +146,11 @@ elif [ "$choixmenu" = "dm" ];then # Demonter une archive ptnmontage=$(mount | grep borgfs | cut -d" " -f3 | zenity --width=500 --height=$H --window-icon=$HOME/.icons/borg.svg --list --title "Liste des points de montages" --column "Archive") - fusermount -u $ptnmontage | zenity --width=$W --progress --pulsate --auto-close - sleep 5 | zenity --width=$W --progress --pulsate --auto-close - rmdir $ptnmontage | zenity --width=$W --progress --pulsate --auto-close + if [ "$ptnmontage" != "" ];then + fusermount -u $ptnmontage | zenity --width=$W --progress --pulsate --auto-close + sleep 2 | zenity --width=$W --progress --pulsate --auto-close + rmdir $ptnmontage | zenity --width=$W --progress --pulsate --auto-close + fi elif [ "$choixmenu" = "ss" ];then # Supprimmer une archive From 554b2c9c75df5993f9d60cc7e0d62bd340a8350c Mon Sep 17 00:00:00 2001 From: Djan GICQUEL <> Date: Sat, 24 Jul 2021 14:06:49 +0200 Subject: [PATCH 35/77] remplacement des zenity pulsate par une fonction 'ZenityPulsate' --- borg-gui.sh | 27 ++++++++++++++------------- 1 file changed, 14 insertions(+), 13 deletions(-) diff --git a/borg-gui.sh b/borg-gui.sh index 92ca90e..871ffa5 100755 --- a/borg-gui.sh +++ b/borg-gui.sh @@ -58,6 +58,10 @@ DossierPresent () { fi } +ZenityPulsate () { + zenity --width=$W --window-icon=$HOME/.icons/borg.svg --progress --pulsate --auto-close +} + # Profils et tests ################################################################################# # si $1 n'est pas vide fichier de profil = $1 @@ -88,12 +92,9 @@ cd $borg_repo TestBorgRepo ################################################################################# -# MENU PRINCIPAL +# MENU PRINCIPAL Gestion des options du menu ################################################################################# -################################################################################# -# Gestion des options du menu -################################################################################# while [ ! "$choixmenu" = "qu" ] do choixmenu=$(echo -e "\ @@ -123,8 +124,8 @@ if [ "$choixmenu" = "cs" ] ;then DossierPresent $borg_dir if [ "$VarDossierPresent" != "false" ];then - borg create $borg_excludes $borg_compress $borg_repo::$borg_archive $borg_dir | zenity --width=$W --window-icon=$HOME/.icons/borg.svg --progress --pulsate --auto-close --title="Sauvegarde en cours..." - sync | zenity --width=$W --window-icon=$HOME/.icons/borg.svg --progress --pulsate --auto-close --title="Synchronisation des écritures..." + borg create $borg_excludes $borg_compress $borg_repo::$borg_archive $borg_dir | ZenityPulsate + sync | ZenityPulsate zenity --notification --text "Sauvegarde $nomsauvegarde terminée" zenity --width=$W --info --text "Sauvegarde $nomsauvegarde terminée" fi @@ -139,7 +140,7 @@ elif [ "$choixmenu" = "ms" ];then fi mkdir $HOME/$borg_archive - borg mount $borg_repo::$borg_archive $HOME/$borg_archive | zenity --width=$W --progress --pulsate --auto-close + borg mount $borg_repo::$borg_archive $HOME/$borg_archive | ZenityPulsate zenity --width=$W --info --text="La sauvegarde est disponible dans le dossier\n$HOME/$borg_archive" elif [ "$choixmenu" = "dm" ];then @@ -147,9 +148,9 @@ elif [ "$choixmenu" = "dm" ];then ptnmontage=$(mount | grep borgfs | cut -d" " -f3 | zenity --width=500 --height=$H --window-icon=$HOME/.icons/borg.svg --list --title "Liste des points de montages" --column "Archive") if [ "$ptnmontage" != "" ];then - fusermount -u $ptnmontage | zenity --width=$W --progress --pulsate --auto-close - sleep 2 | zenity --width=$W --progress --pulsate --auto-close - rmdir $ptnmontage | zenity --width=$W --progress --pulsate --auto-close + fusermount -u $ptnmontage | ZenityPulsate + sleep 2 | ZenityPulsate + rmdir $ptnmontage | ZenityPulsate fi elif [ "$choixmenu" = "ss" ];then @@ -165,7 +166,7 @@ elif [ "$choixmenu" = "ss" ];then if [ "$borg_archive" = "" ];then zenity --width=$W --info --text "Aucune archive choisie, retour au menu" else - borg delete $borg_repo::$borg_archive | zenity --width=$W --progress --pulsate --auto-close + borg delete $borg_repo::$borg_archive | ZenityPulsate zenity --width=$W --info --text="Suppresion de l'archive $borg_archive terminée" fi @@ -182,7 +183,7 @@ elif [ "$choixmenu" = "is" ];then if [ "$borg_archive" = "" ];then zenity --width=$W --info --text "Aucune archive choisie, retour au menu" else - zenity --width=$W --info --text="$(borg info $borg_repo::$borg_archive)" | zenity --width=$W --progress --pulsate --auto-close + zenity --width=$W --info --text="$(borg info $borg_repo::$borg_archive)" | ZenityPulsate fi elif [ "$choixmenu" = "fi" ];then @@ -193,7 +194,7 @@ elif [ "$choixmenu" = "fi" ];then elif [ "$choixmenu" = "id" ];then # Information sur le dépôt - zenity --width=$W --info --text="$(borg info $borg_repo)" | zenity --width=$W --progress --pulsate --auto-close --title="Récupération des informations..." + zenity --width=$W --info --text="$(borg info $borg_repo)" | ZenityPulsate elif [ "$choixmenu" = "ap" ];then # Afficher le profil From 211c718cad082ad5acabc16a96ec7645f05e664d Mon Sep 17 00:00:00 2001 From: Djan GICQUEL <> Date: Sun, 25 Jul 2021 16:13:42 +0200 Subject: [PATCH 36/77] suppression de la section 'upgrade', correction des chemins --- install.sh | 16 +++++----------- 1 file changed, 5 insertions(+), 11 deletions(-) diff --git a/install.sh b/install.sh index 9dcccb6..25f7dbb 100644 --- a/install.sh +++ b/install.sh @@ -2,15 +2,9 @@ # Borg zenity install -mkdir $HOME/bin/ $HOME/icons/ +mkdir -p $HOME/bin/ $HOME/.icons/ $HOME/.local/share/applications/ -cp -v borg-gui.sh $HOME/bin/ -cp -v borg.svg $HOME/icons/ -cp -v profil.txt $HOME/.config/borg/ -cp -v sauvegarde-borg.desktop $HOME/.local/share/applications/ - -if [ "$1" = "--update" ];then - cp -fv borg-gui.sh $HOME/bin/ - cp -fv borg.svg $HOME/icons/ - cp -fv sauvegarde-borg.desktop $HOME/.local/share/applications/ -fi +cp -fv borg-gui.sh $HOME/bin/ +cp -fv borg.svg $HOME/.icons/ +cp -fv profil.txt $HOME/.config/borg/ +cp -fv sauvegarde-borg.desktop $HOME/.local/share/applications/ From 28184ac916f0b3fbeb4f703aecf2698060c9c9d2 Mon Sep 17 00:00:00 2001 From: Djan GICQUEL <> Date: Sun, 25 Jul 2021 16:15:05 +0200 Subject: [PATCH 37/77] correction du chemin de l'executable --- sauvegarde-borg.desktop | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/sauvegarde-borg.desktop b/sauvegarde-borg.desktop index ed9007e..ef30bed 100644 --- a/sauvegarde-borg.desktop +++ b/sauvegarde-borg.desktop @@ -1,6 +1,6 @@ [Desktop Entry] Name=Sauvegarde BORG GUI -Exec=bin/borg-zenity/borg-gui.sh +Exec=bin/borg-gui.sh Icon=borg Type=Application Categories=Utility; From 1b4c04052479b666cad765513ddffb6fd7bfec35 Mon Sep 17 00:00:00 2001 From: Djan GICQUEL <> Date: Tue, 27 Jul 2021 20:34:58 +0200 Subject: [PATCH 38/77] =?UTF-8?q?cr=C3=A9ation=20du=20gestionnaire=20de=20?= =?UTF-8?q?profils?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- profile-manager.sh | 30 ++++++++++++++++++++++++++++++ 1 file changed, 30 insertions(+) create mode 100644 profile-manager.sh diff --git a/profile-manager.sh b/profile-manager.sh new file mode 100644 index 0000000..2d8580c --- /dev/null +++ b/profile-manager.sh @@ -0,0 +1,30 @@ +#! /bin/bash + +W="600" +H="500" +dossierprofil="$HOME/.config/borg/" +cd $dossierprofil +choixmenu=$(echo -e "\ +cp\nCréer un nouveau profil\n\ +ap\nAfficher les profils\ +" | zenity --height=$H --width=$W --window-icon=$HOME/.icons/borg.svg --list \ +--column "id" --column "choix") + +if [ "$choixmenu" = "cp" ];then +choixdossier=$(zenity --file-selection --directory) + +if [ -z "$(ls -A $choixdossier)" ]; then +zenity --width=$W --window-icon=$HOME/.icons/borg.svg --progress --pulsate --auto-close | zenity --notification --text "Initialisation du dépôt..." +else +zenity --width=$W --error --text="Erreur, le dossier n'est pas vide." +fi + + +elif [ "$choixmenu" = "ap" ];then +fichierprofil=$(ls -1 *.txt | zenity --height=$H --width=$W --window-icon=$HOME/.icons/borg.svg --list --title "Liste des profils" --text "Choisir un profil dans la liste" --hide-header --column "profil") +zenity --width=$W --height=$H --info --text="$(cd $dossierprofil && cat $fichierprofil)" + + +elif [ "$choixmenu" = "" ];then +zenity --width=$W --info --text="Aucun choix, retour au menu." +fi From 131ba2f4001d8790d78a4f80b621be5039690617 Mon Sep 17 00:00:00 2001 From: Djan GICQUEL <> Date: Tue, 3 Aug 2021 16:55:22 +0200 Subject: [PATCH 39/77] =?UTF-8?q?variables=20courte=20pour=20la=20hauteur?= =?UTF-8?q?=20et=20la=20largeur=20gestion=20du=20choix=20Cr=C3=A9er=20un?= =?UTF-8?q?=20nouveau=20profil/d=C3=A9p=C3=B4t=20gestion=20du=20choix=20Af?= =?UTF-8?q?ficher=20les=20profils?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- profile-manager.sh | 74 ++++++++++++++++++++++++++++++++++++---------- 1 file changed, 59 insertions(+), 15 deletions(-) diff --git a/profile-manager.sh b/profile-manager.sh index 2d8580c..a7a2a4d 100644 --- a/profile-manager.sh +++ b/profile-manager.sh @@ -1,30 +1,74 @@ #! /bin/bash -W="600" -H="500" +ZenityPulsate () { +zenity $W --window-icon=$HOME/.icons/borg.svg --progress --pulsate --auto-close +} + +W="--width=600" +H="--height=500" + dossierprofil="$HOME/.config/borg/" cd $dossierprofil + +# affichage du menu + choixmenu=$(echo -e "\ -cp\nCréer un nouveau profil\n\ -ap\nAfficher les profils\ -" | zenity --height=$H --width=$W --window-icon=$HOME/.icons/borg.svg --list \ +cp\nCréer un nouveau profil/dépôt\n\ +ap\nAfficher les profils\n\ +" | zenity $H $W --window-icon=$HOME/.icons/borg.svg --list \ --column "id" --column "choix") -if [ "$choixmenu" = "cp" ];then -choixdossier=$(zenity --file-selection --directory) +# gestion des choix du menu -if [ -z "$(ls -A $choixdossier)" ]; then -zenity --width=$W --window-icon=$HOME/.icons/borg.svg --progress --pulsate --auto-close | zenity --notification --text "Initialisation du dépôt..." -else -zenity --width=$W --error --text="Erreur, le dossier n'est pas vide." +if [ "$choixmenu" = "cp" ];then +# Créer un nouveau profil/dépôt +borg_repo=$(zenity --file-selection --directory) +if [ ! -z "$(ls -A $borg_repo)" ]; then +zenity $W --error --text="Erreur, le dossier n'est pas vide." +exit fi +zenity $W --question --text "Chiffrer le dépôt ? (fortement recommandé)" -elif [ "$choixmenu" = "ap" ];then -fichierprofil=$(ls -1 *.txt | zenity --height=$H --width=$W --window-icon=$HOME/.icons/borg.svg --list --title "Liste des profils" --text "Choisir un profil dans la liste" --hide-header --column "profil") -zenity --width=$W --height=$H --info --text="$(cd $dossierprofil && cat $fichierprofil)" +if [ "$?" = "0" ];then + zenity $W --warning --text \ + "Le fichier-clé du dépot sera stocké dans le dossier $HOME/.config/borg/keys/.\n\n\ + Veuillez à sauvegarder ce dossier dans un endroit sûr.\n\n\ + Si cette clé ne peut être lue les données ne seront pas récupérables.\n\n\ + Notez qu'il n'existe aucun mécanisme de récupération de clé." + borg init $borg_repo | ZenityPulsate + zenity $W --info --text "Un nouveau dépot chiffré a été généré dans $borg_repo" +elif [ "$?" = "1" ];then + zenity $W --warning --text \ + "Je comprends qu'en ne sécurisant pas mon dépot les données qu'il contient seront librement accessible par toute personne ayant accès aux fichiers du dépôt." + borg init --encryption none $borg_repo | ZenityPulsate + zenity $W --info --text "Un nouveau dépot en clair a été généré dans $borg_repo" +fi +borg_dir=$(zenity --title "Dossier à sauvegarder" --file-selection --directory) + +vars=$(zenity --forms \ +--text "Laisser les champs vides pour les options par défaut" \ +--add-entry "Nom de sauvegarde" \ +--add-entry "Nom de profil (pas d'espace ni caractères spéciaux)") +nomsauvegarde=$(echo $vars | cut -d\| -f1) +profilename=$(echo $vars | cut -d\| -f2) + +cat << EOF >> $HOME/.config/borg/"$profilename".txt +nomsauvegarde="$nomsauvegarde" +borg_repo="$borg_repo" +borg_archive="\$(date +%d_%B_%Y)" +borg_dir="$borg_dir" +borg_excludes="" +borg_compress="" +dryrun="" +EOF + +elif [ "$choixmenu" = "ap" ];then +# Afficher les profils +fichierprofil=$(ls -1 *.txt | zenity $H $W --window-icon=$HOME/.icons/borg.svg --list --title "Liste des profils" --text "Choisir un profil dans la liste" --hide-header --column "profil") +zenity $W $H --info --text="$(cd $dossierprofil && cat $fichierprofil)" elif [ "$choixmenu" = "" ];then -zenity --width=$W --info --text="Aucun choix, retour au menu." +exit fi From 1ddcfcd88fa9900ca63a07b2095be120634b7fff Mon Sep 17 00:00:00 2001 From: Djan GICQUEL <> Date: Wed, 4 Aug 2021 14:14:43 +0200 Subject: [PATCH 40/77] =?UTF-8?q?r=C3=A9solution=20de=20bugs=20li=C3=A9=20?= =?UTF-8?q?au=20merge?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- borg-gui.sh | 18 ++++++++---------- 1 file changed, 8 insertions(+), 10 deletions(-) diff --git a/borg-gui.sh b/borg-gui.sh index e1f1b1d..9521d93 100755 --- a/borg-gui.sh +++ b/borg-gui.sh @@ -70,8 +70,8 @@ if [ ! $1 = "" ]; then fichierprofil="$1" . "$1" else - cd $dossierprofil - fichierprofil=$(ls -1 *.txt | zenity --height=$H --width=$W --window-icon=$HOME/.icons/borg.svg --list --title "Liste des profils" --text "Choisir un profil dans la liste" --hide-header --column "profil") && . $fichierprofil + fichierprofil=$(ls -1 "$dossierprofil"*.conf | zenity --height=$H --width=$W --window-icon=$HOME/.icons/borg.svg --list --title "Liste des profils" --text "Choisir un profil dans la liste" --hide-header --column "profil") + . $fichierprofil fi if [ "$fichierprofil" = "" ]; then @@ -106,18 +106,16 @@ fi\nFiltre : "$filter"\n\ id\nInformation sur le dépôt\n\ ap\nAfficher le profil\n\ --\n------------------------------------------\n\ -ed\nEspace disque utilisé : $(df -k --output=pcent $borg_repo | tail -n +2)\n\ -<<<<<<< HEAD -qu\nQuitter\ -" | zenity --window-icon=$HOME/.icons/borg.svg --list \ +ed\nEspace disque utilisé : $(df -k --output=pcent $borg_repo | tail -n +2)" \ +| zenity --window-icon=$HOME/.icons/borg.svg --list \ --height=$H --width=$W \ --title "BORG GUI : $nomsauvegarde" \ --hide-header --hide-column=1 --column "id" --column "choix") if [ "$choixmenu" = "" ];then +exit - -elif [ "$choixmenu" = "cs" ] ;then +elif [ "$choixmenu" = "cs" ];then # Créer une archive TestBorgRepo @@ -203,6 +201,6 @@ elif [ "$choixmenu" = "ap" ];then zenity --width=$W --height=$H --info --text="$(cd $dossierprofil && cat $fichierprofil)" -elif [ "$choixmenu" = "" ];then - zenity --width=$W --info --text="Aucun choix, retour au menu." +elif [ "$choixmenu" = "qu" ];then + exit fi From 15b08837a4fc790f041b4425145a56d218788880 Mon Sep 17 00:00:00 2001 From: Djan GICQUEL <> Date: Wed, 4 Aug 2021 14:19:59 +0200 Subject: [PATCH 41/77] =?UTF-8?q?variable=20courte=20pour=20les=20hauteur?= =?UTF-8?q?=20et=20largeur=20variable=20courte=20pour=20l'ic=C3=B4ne=20de?= =?UTF-8?q?=20borg?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- borg-gui.sh | 58 +++++++++++++++++++++++++++-------------------------- 1 file changed, 30 insertions(+), 28 deletions(-) diff --git a/borg-gui.sh b/borg-gui.sh index 9521d93..da79b4d 100755 --- a/borg-gui.sh +++ b/borg-gui.sh @@ -1,5 +1,6 @@ #! /bin/bash +# tests de base which zenity if [ "$?" != "0" ]; then echo "Zenity n'est pas installé.";exit @@ -17,8 +18,9 @@ fi export BORG_UNKNOWN_UNENCRYPTED_REPO_ACCESS_IS_OK=yes export BORG_RELOCATED_REPO_ACCESS_IS_OK=yes dossierprofil="$HOME/.config/borg/" -W="600" -H="500" +W="--width=600" +H="--height=500" +iconborg="--window-icon=$HOME/.icons/borg.svg" # FONCTIONS ################################################################################# @@ -26,21 +28,21 @@ TestBorgRepo () { if [ ! -f "config" ]; then TestBorgErr=1 infoerr=$(echo "Impossible de trouver le fichier de configuration borg.") - zenity --width=$W --error --text="$infoerr" + zenity $W --error --text="$infoerr" exit fi if [ ! -d "data" ]; then TestBorgErr=1 infoerr=$(echo "Impossible de trouver le fichier de configuration borg.") - zenity --width=$W --error --text="$infoerr" + zenity $W --error --text="$infoerr" exit fi if [ -d "lock.exclusive" ]; then TestBorgErr=1 infoerr=$(echo "Le dépôt est bloqué, une opération est peut-être en cours") - zenity --width=$W --error --text="$infoerr" + zenity $W --error --text="$infoerr" exit fi } @@ -53,13 +55,13 @@ bobainfoa () { DossierPresent () { if [ ! -d "$1" ]; then inforerror=$(echo "Erreur, le dossier $1 est absent.") - zenity --width=$W --error --text="$inforerror" + zenity $W --error --text="$inforerror" VarDossierPresent="false" fi } ZenityPulsate () { - zenity --width=$W --window-icon=$HOME/.icons/borg.svg --progress --pulsate --auto-close + zenity $W $iconborg --progress --pulsate --auto-close } # Profils et tests @@ -70,21 +72,21 @@ if [ ! $1 = "" ]; then fichierprofil="$1" . "$1" else - fichierprofil=$(ls -1 "$dossierprofil"*.conf | zenity --height=$H --width=$W --window-icon=$HOME/.icons/borg.svg --list --title "Liste des profils" --text "Choisir un profil dans la liste" --hide-header --column "profil") + fichierprofil=$(ls -1 "$dossierprofil"*.conf | zenity $H $W $iconborg --list --title "Liste des profils" --text "Choisir un profil dans la liste" --hide-header --column "profil") . $fichierprofil fi if [ "$fichierprofil" = "" ]; then infoerr=$(echo "Aucun profil choisi.") - zenity --width=$W --error --text="$infoerr" + zenity $W --error --text="$infoerr" exit elif [ "$nomsauvegarde" = "" ]; then infoerr=$(echo "Nom de sauvegarde non défini.") - zenity --width=$W --error --text="$infoerr" + zenity $W --error --text="$infoerr" exit elif [ "$borg_repo" = "" ]; then infoerr=$(echo "Variable \$borg_repo absente") - zenity --width=$W --error --text="$infoerr" + zenity $W --error --text="$infoerr" exit fi @@ -107,8 +109,8 @@ id\nInformation sur le dépôt\n\ ap\nAfficher le profil\n\ --\n------------------------------------------\n\ ed\nEspace disque utilisé : $(df -k --output=pcent $borg_repo | tail -n +2)" \ -| zenity --window-icon=$HOME/.icons/borg.svg --list \ ---height=$H --width=$W \ +| zenity $iconborg --list \ +$H $W \ --title "BORG GUI : $nomsauvegarde" \ --hide-header --hide-column=1 --column "id" --column "choix") @@ -127,26 +129,26 @@ elif [ "$choixmenu" = "cs" ];then borg create $borg_excludes $borg_compress $borg_repo::$borg_archive $borg_dir | ZenityPulsate sync | ZenityPulsate zenity --notification --text "Sauvegarde $nomsauvegarde terminée" - zenity --width=$W --info --text "Sauvegarde $nomsauvegarde terminée" + zenity $W --info --text "Sauvegarde $nomsauvegarde terminée" fi elif [ "$choixmenu" = "ms" ];then # Monter une archive if [ "$filter" = "" ];then - borg_archive=$(borg list --short $borg_repo | zenity --height=$H --window-icon=$HOME/.icons/borg.svg --list --title "Listes des archives" --column "Archive") + borg_archive=$(borg list --short $borg_repo | zenity $H $iconborg --list --title "Listes des archives" --column "Archive") else - borg_archive=$(borg list --short $borg_repo | grep $filter | zenity --height=$H --window-icon=$HOME/.icons/borg.svg --list --title "Listes des archives" --column "Archive") + borg_archive=$(borg list --short $borg_repo | grep $filter | zenity $H $iconborg --list --title "Listes des archives" --column "Archive") fi mkdir $HOME/$borg_archive borg mount $borg_repo::$borg_archive $HOME/$borg_archive | ZenityPulsate - zenity --width=$W --info --text="La sauvegarde est disponible dans le dossier\n$HOME/$borg_archive" + zenity $W --info --text="La sauvegarde est disponible dans le dossier\n$HOME/$borg_archive" elif [ "$choixmenu" = "dm" ];then # Demonter une archive - ptnmontage=$(mount | grep borgfs | cut -d" " -f3 | zenity --width=500 --height=$H --window-icon=$HOME/.icons/borg.svg --list --title "Liste des points de montages" --column "Archive") + ptnmontage=$(mount | grep borgfs | cut -d" " -f3 | zenity --width=500 $H $iconborg --list --title "Liste des points de montages" --column "Archive") if [ "$ptnmontage" != "" ];then fusermount -u $ptnmontage | ZenityPulsate sleep 2 | ZenityPulsate @@ -157,17 +159,17 @@ elif [ "$choixmenu" = "ss" ];then # Supprimmer une archive if [ "$filter" = "" ];then - borg_archive=$(borg list --short $borg_repo | zenity --height=$H --window-icon=$HOME/.icons/borg.svg --list --title "Listes des archives" --column "Archive") + borg_archive=$(borg list --short $borg_repo | zenity $H $iconborg --list --title "Listes des archives" --column "Archive") else - borg_archive=$(borg list --short $borg_repo | grep $filter | zenity --height=$H --window-icon=$HOME/.icons/borg.svg --list --title "Listes des archives" --column "Archive") + borg_archive=$(borg list --short $borg_repo | grep $filter | zenity $H $iconborg --list --title "Listes des archives" --column "Archive") fi if [ "$borg_archive" = "" ];then - zenity --width=$W --info --text "Aucune archive choisie, retour au menu" + zenity $W --info --text "Aucune archive choisie, retour au menu" else borg delete $borg_repo::$borg_archive | ZenityPulsate - zenity --width=$W --info --text="Suppresion de l'archive $borg_archive terminée" + zenity $W --info --text="Suppresion de l'archive $borg_archive terminée" fi @@ -175,15 +177,15 @@ elif [ "$choixmenu" = "is" ];then # Information archive if [ "$filter" = "" ];then - borg_archive=$(borg list --short $borg_repo | zenity --height=$H --window-icon=$HOME/.icons/borg.svg --list --title "Listes des archives" --column "Archive") + borg_archive=$(borg list --short $borg_repo | zenity $H $iconborg --list --title "Listes des archives" --column "Archive") else - borg_archive=$(borg list --short $borg_repo | grep $filter | zenity --height=$H --window-icon=$HOME/.icons/borg.svg --list --title "Listes des archives" --column "Archive") + borg_archive=$(borg list --short $borg_repo | grep $filter | zenity $H $iconborg --list --title "Listes des archives" --column "Archive") fi if [ "$borg_archive" = "" ];then - zenity --width=$W --info --text "Aucune archive choisie, retour au menu" + zenity $W --info --text "Aucune archive choisie, retour au menu" else - zenity --width=$W --info --text="$(borg info $borg_repo::$borg_archive)" | ZenityPulsate + zenity $W --info --text="$(borg info $borg_repo::$borg_archive)" | ZenityPulsate fi elif [ "$choixmenu" = "fi" ];then @@ -194,12 +196,12 @@ elif [ "$choixmenu" = "fi" ];then elif [ "$choixmenu" = "id" ];then # Information sur le dépôt - zenity --width=$W --info --text="$(borg info $borg_repo)" | ZenityPulsate + zenity $W --info --text="$(borg info $borg_repo)" | ZenityPulsate elif [ "$choixmenu" = "ap" ];then # Afficher le profil - zenity --width=$W --height=$H --info --text="$(cd $dossierprofil && cat $fichierprofil)" + zenity $W $H --info --text="$(cd $dossierprofil && cat $fichierprofil)" elif [ "$choixmenu" = "qu" ];then exit From d3681acba66f1e4ef1fac29ecc5ea1187843c15a Mon Sep 17 00:00:00 2001 From: Djan GICQUEL <> Date: Wed, 4 Aug 2021 15:46:06 +0200 Subject: [PATCH 42/77] =?UTF-8?q?correction=20menu=20principal=20du=20d?= =?UTF-8?q?=C3=A9p=C3=B4t=20avec=20boucle=20while?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- borg-gui.sh | 181 ++++++++++++++++++++++++++-------------------------- 1 file changed, 90 insertions(+), 91 deletions(-) diff --git a/borg-gui.sh b/borg-gui.sh index da79b4d..93a75cc 100755 --- a/borg-gui.sh +++ b/borg-gui.sh @@ -97,6 +97,7 @@ TestBorgRepo # MENU PRINCIPAL Gestion des options du menu ################################################################################# +while [ ! "$choixmenu" = "qu" ];do choixmenu=$(echo -e "\ cs\nCréer une archive\n\ ms\nMonter une archive\n\ @@ -108,101 +109,99 @@ fi\nFiltre : "$filter"\n\ id\nInformation sur le dépôt\n\ ap\nAfficher le profil\n\ --\n------------------------------------------\n\ -ed\nEspace disque utilisé : $(df -k --output=pcent $borg_repo | tail -n +2)" \ -| zenity $iconborg --list \ -$H $W \ ---title "BORG GUI : $nomsauvegarde" \ +ed\nEspace disque utilisé : $(df -k --output=pcent $borg_repo | tail -n +2)\n\ +qu\nQUITTER\ +" | zenity $iconborg --list $H $W --title "BORG GUI : $nomsauvegarde" \ --hide-header --hide-column=1 --column "id" --column "choix") -if [ "$choixmenu" = "" ];then -exit + if [ "$choixmenu" = "" ];then + echo "" -elif [ "$choixmenu" = "cs" ];then -# Créer une archive + elif [ "$choixmenu" = "cs" ];then + # Créer une archive - TestBorgRepo + TestBorgRepo - DossierPresent $borg_repo - DossierPresent $borg_dir + DossierPresent $borg_repo + DossierPresent $borg_dir + + if [ "$VarDossierPresent" != "false" ];then + borg create $borg_excludes $borg_compress $borg_repo::$borg_archive $borg_dir | ZenityPulsate + sync | ZenityPulsate + zenity --notification --text "Sauvegarde $nomsauvegarde terminée" + zenity $W --info --text "Sauvegarde $nomsauvegarde terminée" + fi + + elif [ "$choixmenu" = "ms" ];then + # Monter une archive + + if [ "$filter" = "" ];then + borg_archive=$(borg list --short $borg_repo | zenity $H $iconborg --list --title "Listes des archives" --column "Archive") + else + borg_archive=$(borg list --short $borg_repo | grep $filter | zenity $H $iconborg --list --title "Listes des archives" --column "Archive") + fi + + mkdir $HOME/$borg_archive + borg mount $borg_repo::$borg_archive $HOME/$borg_archive | ZenityPulsate + zenity $W --info --text="La sauvegarde est disponible dans le dossier\n$HOME/$borg_archive" + + elif [ "$choixmenu" = "dm" ];then + # Demonter une archive + + ptnmontage=$(mount | grep borgfs | cut -d" " -f3 | zenity --width=500 $H $iconborg --list --title "Liste des points de montages" --column "Archive") + if [ "$ptnmontage" != "" ];then + fusermount -u $ptnmontage | ZenityPulsate + sleep 2 | ZenityPulsate + rmdir $ptnmontage | ZenityPulsate + fi + + elif [ "$choixmenu" = "ss" ];then + # Supprimmer une archive + + if [ "$filter" = "" ];then + borg_archive=$(borg list --short $borg_repo | zenity $H $iconborg --list --title "Listes des archives" --column "Archive") + else + borg_archive=$(borg list --short $borg_repo | grep $filter | zenity $H $iconborg --list --title "Listes des archives" --column "Archive") + fi + + + if [ "$borg_archive" = "" ];then + zenity $W --info --text "Aucune archive choisie, retour au menu" + else + borg delete $borg_repo::$borg_archive | ZenityPulsate + zenity $W --info --text="Suppresion de l'archive $borg_archive terminée" + fi + + + elif [ "$choixmenu" = "is" ];then + # Information archive + + if [ "$filter" = "" ];then + borg_archive=$(borg list --short $borg_repo | zenity $H $iconborg --list --title "Listes des archives" --column "Archive") + else + borg_archive=$(borg list --short $borg_repo | grep $filter | zenity $H $iconborg --list --title "Listes des archives" --column "Archive") + fi + + if [ "$borg_archive" = "" ];then + zenity $W --info --text "Aucune archive choisie, retour au menu" + else + zenity $W --info --text="$(borg info $borg_repo::$borg_archive)" | ZenityPulsate + fi + + elif [ "$choixmenu" = "fi" ];then + #Filtre + + filter=$(zenity --entry) + + elif [ "$choixmenu" = "id" ];then + # Information sur le dépôt + + zenity $W --info --text="$(borg info $borg_repo)" | ZenityPulsate + + elif [ "$choixmenu" = "ap" ];then + # Afficher le profil + + zenity $W $H --info --text="$(cd $dossierprofil && cat $fichierprofil)" - if [ "$VarDossierPresent" != "false" ];then - borg create $borg_excludes $borg_compress $borg_repo::$borg_archive $borg_dir | ZenityPulsate - sync | ZenityPulsate - zenity --notification --text "Sauvegarde $nomsauvegarde terminée" - zenity $W --info --text "Sauvegarde $nomsauvegarde terminée" fi - -elif [ "$choixmenu" = "ms" ];then -# Monter une archive - - if [ "$filter" = "" ];then - borg_archive=$(borg list --short $borg_repo | zenity $H $iconborg --list --title "Listes des archives" --column "Archive") - else - borg_archive=$(borg list --short $borg_repo | grep $filter | zenity $H $iconborg --list --title "Listes des archives" --column "Archive") - fi - - mkdir $HOME/$borg_archive - borg mount $borg_repo::$borg_archive $HOME/$borg_archive | ZenityPulsate - zenity $W --info --text="La sauvegarde est disponible dans le dossier\n$HOME/$borg_archive" - -elif [ "$choixmenu" = "dm" ];then -# Demonter une archive - - ptnmontage=$(mount | grep borgfs | cut -d" " -f3 | zenity --width=500 $H $iconborg --list --title "Liste des points de montages" --column "Archive") - if [ "$ptnmontage" != "" ];then - fusermount -u $ptnmontage | ZenityPulsate - sleep 2 | ZenityPulsate - rmdir $ptnmontage | ZenityPulsate - fi - -elif [ "$choixmenu" = "ss" ];then -# Supprimmer une archive - - if [ "$filter" = "" ];then - borg_archive=$(borg list --short $borg_repo | zenity $H $iconborg --list --title "Listes des archives" --column "Archive") - else - borg_archive=$(borg list --short $borg_repo | grep $filter | zenity $H $iconborg --list --title "Listes des archives" --column "Archive") - fi - - - if [ "$borg_archive" = "" ];then - zenity $W --info --text "Aucune archive choisie, retour au menu" - else - borg delete $borg_repo::$borg_archive | ZenityPulsate - zenity $W --info --text="Suppresion de l'archive $borg_archive terminée" - fi - - -elif [ "$choixmenu" = "is" ];then -# Information archive - - if [ "$filter" = "" ];then - borg_archive=$(borg list --short $borg_repo | zenity $H $iconborg --list --title "Listes des archives" --column "Archive") - else - borg_archive=$(borg list --short $borg_repo | grep $filter | zenity $H $iconborg --list --title "Listes des archives" --column "Archive") - fi - - if [ "$borg_archive" = "" ];then - zenity $W --info --text "Aucune archive choisie, retour au menu" - else - zenity $W --info --text="$(borg info $borg_repo::$borg_archive)" | ZenityPulsate - fi - -elif [ "$choixmenu" = "fi" ];then -#Filtre - - filter=$(zenity --entry) - -elif [ "$choixmenu" = "id" ];then -# Information sur le dépôt - - zenity $W --info --text="$(borg info $borg_repo)" | ZenityPulsate - -elif [ "$choixmenu" = "ap" ];then -# Afficher le profil - - zenity $W $H --info --text="$(cd $dossierprofil && cat $fichierprofil)" - -elif [ "$choixmenu" = "qu" ];then - exit -fi +done From 79e1c4c520cfb7054747e31bbb13b3e4255aa7c0 Mon Sep 17 00:00:00 2001 From: Djan GICQUEL <> Date: Wed, 4 Aug 2021 18:49:43 +0200 Subject: [PATCH 43/77] Nouvelle version du selecteur de profils --- borg-gui.sh | 31 ++++++++++++++++++++----------- 1 file changed, 20 insertions(+), 11 deletions(-) diff --git a/borg-gui.sh b/borg-gui.sh index 93a75cc..613a535 100755 --- a/borg-gui.sh +++ b/borg-gui.sh @@ -72,8 +72,13 @@ if [ ! $1 = "" ]; then fichierprofil="$1" . "$1" else - fichierprofil=$(ls -1 "$dossierprofil"*.conf | zenity $H $W $iconborg --list --title "Liste des profils" --text "Choisir un profil dans la liste" --hide-header --column "profil") - . $fichierprofil + cd $dossierprofil + fichierprofil=$(ls -1 *.conf | cut -d. -f1 | \ + zenity $W $H $iconborg --list \ + --title "Liste des profils" \ + --text "Choisir un profil dans la liste" \ + --column "Fichier de profil"\ + ) && . "$dossierprofil"/"$fichierprofil".conf fi if [ "$fichierprofil" = "" ]; then @@ -133,23 +138,27 @@ qu\nQUITTER\ fi elif [ "$choixmenu" = "ms" ];then - # Monter une archive - + # Monter une archive if [ "$filter" = "" ];then - borg_archive=$(borg list --short $borg_repo | zenity $H $iconborg --list --title "Listes des archives" --column "Archive") + BorgList="borg list --short $borg_repo" else - borg_archive=$(borg list --short $borg_repo | grep $filter | zenity $H $iconborg --list --title "Listes des archives" --column "Archive") + BorgList="borg list --short $borg_repo | grep $filter" fi - mkdir $HOME/$borg_archive - borg mount $borg_repo::$borg_archive $HOME/$borg_archive | ZenityPulsate - zenity $W --info --text="La sauvegarde est disponible dans le dossier\n$HOME/$borg_archive" + echo $BorgList + #borg_archive=$($BorgList | zenity $H $iconborg --list --title "Listes des archives" --column "Archive") + + #if [ ! "$borg_archive" = "" ];then + #mkdir $HOME/$borg_archive + #borg mount $borg_repo::$borg_archive $HOME/$borg_archive | ZenityPulsate + #zenity $W --info --text="La sauvegarde est disponible dans le dossier\n$HOME/$borg_archive" + #fi elif [ "$choixmenu" = "dm" ];then # Demonter une archive - ptnmontage=$(mount | grep borgfs | cut -d" " -f3 | zenity --width=500 $H $iconborg --list --title "Liste des points de montages" --column "Archive") - if [ "$ptnmontage" != "" ];then + ptnmontage=$(mount | grep borgfs | cut -d" " -f3 | zenity $W $H $iconborg --list --title "Liste des points de montages" --column "Archive") + if [ ! "$ptnmontage" = "" ];then fusermount -u $ptnmontage | ZenityPulsate sleep 2 | ZenityPulsate rmdir $ptnmontage | ZenityPulsate From a0b56b55f0ff56c28a67742bbd07fc946632990d Mon Sep 17 00:00:00 2001 From: Djan GICQUEL <> Date: Wed, 4 Aug 2021 20:32:21 +0200 Subject: [PATCH 44/77] filtre dans une fonction BorgFilter --- borg-gui.sh | 63 +++++++++++++++++++---------------------------------- 1 file changed, 23 insertions(+), 40 deletions(-) diff --git a/borg-gui.sh b/borg-gui.sh index 613a535..20d4076 100755 --- a/borg-gui.sh +++ b/borg-gui.sh @@ -64,6 +64,14 @@ ZenityPulsate () { zenity $W $iconborg --progress --pulsate --auto-close } +BorgFilter () { + if [ "$filter" = "" ];then + borg_archive=$(borg list --short $borg_repo | zenity $H $iconborg --list --title "Listes des archives" --column "Archive") + else + borg_archive=$(borg list --short $borg_repo| grep $filter | zenity $H $iconborg --list --title "Listes des archives" --column "Archive") + fi +} + # Profils et tests ################################################################################# # si $1 n'est pas vide fichier de profil = $1 @@ -139,24 +147,15 @@ qu\nQUITTER\ elif [ "$choixmenu" = "ms" ];then # Monter une archive - if [ "$filter" = "" ];then - BorgList="borg list --short $borg_repo" - else - BorgList="borg list --short $borg_repo | grep $filter" + BorgFilter + if [ ! "$borg_archive" = "" ];then + mkdir $HOME/$borg_archive + borg mount $borg_repo::$borg_archive $HOME/$borg_archive | ZenityPulsate + zenity $W --info --text="La sauvegarde est disponible dans le dossier\n$HOME/$borg_archive" fi - echo $BorgList - #borg_archive=$($BorgList | zenity $H $iconborg --list --title "Listes des archives" --column "Archive") - - #if [ ! "$borg_archive" = "" ];then - #mkdir $HOME/$borg_archive - #borg mount $borg_repo::$borg_archive $HOME/$borg_archive | ZenityPulsate - #zenity $W --info --text="La sauvegarde est disponible dans le dossier\n$HOME/$borg_archive" - #fi - elif [ "$choixmenu" = "dm" ];then - # Demonter une archive - + # Demonter une archive ptnmontage=$(mount | grep borgfs | cut -d" " -f3 | zenity $W $H $iconborg --list --title "Liste des points de montages" --column "Archive") if [ ! "$ptnmontage" = "" ];then fusermount -u $ptnmontage | ZenityPulsate @@ -165,15 +164,8 @@ qu\nQUITTER\ fi elif [ "$choixmenu" = "ss" ];then - # Supprimmer une archive - - if [ "$filter" = "" ];then - borg_archive=$(borg list --short $borg_repo | zenity $H $iconborg --list --title "Listes des archives" --column "Archive") - else - borg_archive=$(borg list --short $borg_repo | grep $filter | zenity $H $iconborg --list --title "Listes des archives" --column "Archive") - fi - - + # Supprimmer une archive + BorgFilter if [ "$borg_archive" = "" ];then zenity $W --info --text "Aucune archive choisie, retour au menu" else @@ -183,33 +175,24 @@ qu\nQUITTER\ elif [ "$choixmenu" = "is" ];then - # Information archive - - if [ "$filter" = "" ];then - borg_archive=$(borg list --short $borg_repo | zenity $H $iconborg --list --title "Listes des archives" --column "Archive") - else - borg_archive=$(borg list --short $borg_repo | grep $filter | zenity $H $iconborg --list --title "Listes des archives" --column "Archive") - fi - + # Information archive + BorgFilter if [ "$borg_archive" = "" ];then - zenity $W --info --text "Aucune archive choisie, retour au menu" + zenity $W --info --text "Aucune archive choisie, retour au menu" else - zenity $W --info --text="$(borg info $borg_repo::$borg_archive)" | ZenityPulsate + zenity $W --info --text="$(borg info $borg_repo::$borg_archive)" | ZenityPulsate fi elif [ "$choixmenu" = "fi" ];then - #Filtre - + #Filtre filter=$(zenity --entry) elif [ "$choixmenu" = "id" ];then - # Information sur le dépôt - + # Information sur le dépôt zenity $W --info --text="$(borg info $borg_repo)" | ZenityPulsate elif [ "$choixmenu" = "ap" ];then - # Afficher le profil - + # Afficher le profil zenity $W $H --info --text="$(cd $dossierprofil && cat $fichierprofil)" fi From 2f6a79d5dff75e17921f56f9bccebd87675c8f5e Mon Sep 17 00:00:00 2001 From: Djan GICQUEL <> Date: Wed, 4 Aug 2021 20:37:06 +0200 Subject: [PATCH 45/77] l'installation ne copie plus le profil vierge cela sera fait par le gestionnaire de profil nouveau format des fichiers de configuration --- install.sh | 3 +-- profil.txt => profil.conf | 0 2 files changed, 1 insertion(+), 2 deletions(-) rename profil.txt => profil.conf (100%) diff --git a/install.sh b/install.sh index 25f7dbb..e7400ad 100644 --- a/install.sh +++ b/install.sh @@ -1,10 +1,9 @@ #! /bin/bash -# Borg zenity install +# Borg zenity install and update mkdir -p $HOME/bin/ $HOME/.icons/ $HOME/.local/share/applications/ cp -fv borg-gui.sh $HOME/bin/ cp -fv borg.svg $HOME/.icons/ -cp -fv profil.txt $HOME/.config/borg/ cp -fv sauvegarde-borg.desktop $HOME/.local/share/applications/ diff --git a/profil.txt b/profil.conf similarity index 100% rename from profil.txt rename to profil.conf From c27baf783a83777b283d1c091e79f5a690d05981 Mon Sep 17 00:00:00 2001 From: Djan GICQUEL <> Date: Thu, 5 Aug 2021 09:24:35 +0200 Subject: [PATCH 46/77] modification du titre de l'application dans les menus --- sauvegarde-borg.desktop | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/sauvegarde-borg.desktop b/sauvegarde-borg.desktop index ef30bed..ac91e49 100644 --- a/sauvegarde-borg.desktop +++ b/sauvegarde-borg.desktop @@ -1,5 +1,5 @@ [Desktop Entry] -Name=Sauvegarde BORG GUI +Name=Borg Zenity Sauvegarde Exec=bin/borg-gui.sh Icon=borg Type=Application From 8f166a3c21bf7423cb26db520bbee69007b738be Mon Sep 17 00:00:00 2001 From: Djan GICQUEL <> Date: Thu, 5 Aug 2021 09:25:58 +0200 Subject: [PATCH 47/77] ajout de l'icone gestionnaire de profils dans les menus --- gestprofilsborgzenity.desktop | 6 ++++++ 1 file changed, 6 insertions(+) create mode 100644 gestprofilsborgzenity.desktop diff --git a/gestprofilsborgzenity.desktop b/gestprofilsborgzenity.desktop new file mode 100644 index 0000000..13d7aad --- /dev/null +++ b/gestprofilsborgzenity.desktop @@ -0,0 +1,6 @@ +[Desktop Entry] +Name=Borg Zenity Profils +Exec=bin/profile-manager.sh +Icon=borg +Type=Application +Categories=Utility; From 9f0113faedfeb28f1830a7e27b8f78305d9ef165 Mon Sep 17 00:00:00 2001 From: Djan GICQUEL <> Date: Thu, 5 Aug 2021 09:39:45 +0200 Subject: [PATCH 48/77] maj du script d'installation : ajout gestionnaire de profils --- install.sh | 2 ++ 1 file changed, 2 insertions(+) diff --git a/install.sh b/install.sh index e7400ad..a64fe01 100644 --- a/install.sh +++ b/install.sh @@ -7,3 +7,5 @@ mkdir -p $HOME/bin/ $HOME/.icons/ $HOME/.local/share/applications/ cp -fv borg-gui.sh $HOME/bin/ cp -fv borg.svg $HOME/.icons/ cp -fv sauvegarde-borg.desktop $HOME/.local/share/applications/ +cp -fv gestprofilsborgzenity.desktop $HOME/.local/share/applications/ +cp -fv profile-manager.sh $HOME/bin/ \ No newline at end of file From 43498e2ed229c4c445cf7e192bae1ef535444f70 Mon Sep 17 00:00:00 2001 From: Djan GICQUEL <> Date: Thu, 5 Aug 2021 10:12:28 +0200 Subject: [PATCH 49/77] =?UTF-8?q?ajout=20de=20commentaires,r=C3=A9glages?= =?UTF-8?q?=20des=20droits?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- install.sh | 7 ++++++- 1 file changed, 6 insertions(+), 1 deletion(-) diff --git a/install.sh b/install.sh index a64fe01..a9b8efb 100644 --- a/install.sh +++ b/install.sh @@ -4,8 +4,13 @@ mkdir -p $HOME/bin/ $HOME/.icons/ $HOME/.local/share/applications/ +# copie des fichiers cp -fv borg-gui.sh $HOME/bin/ cp -fv borg.svg $HOME/.icons/ cp -fv sauvegarde-borg.desktop $HOME/.local/share/applications/ cp -fv gestprofilsborgzenity.desktop $HOME/.local/share/applications/ -cp -fv profile-manager.sh $HOME/bin/ \ No newline at end of file +cp -fv profile-manager.sh $HOME/bin/ + +# réglages des droits +chmod 700 $HOME/bin/borg-gui.sh +chmod 700 $HOME/bin/profile-manager.sh \ No newline at end of file From 6432ba159a11d783261b3c1c2c6639e58180fc37 Mon Sep 17 00:00:00 2001 From: Djan GICQUEL <> Date: Thu, 5 Aug 2021 13:57:14 +0200 Subject: [PATCH 50/77] modification des profils en .conf --- profile-manager.sh | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/profile-manager.sh b/profile-manager.sh index a7a2a4d..e41720e 100644 --- a/profile-manager.sh +++ b/profile-manager.sh @@ -54,7 +54,7 @@ vars=$(zenity --forms \ nomsauvegarde=$(echo $vars | cut -d\| -f1) profilename=$(echo $vars | cut -d\| -f2) -cat << EOF >> $HOME/.config/borg/"$profilename".txt +cat << EOF >> $HOME/.config/borg/"$profilename".conf nomsauvegarde="$nomsauvegarde" borg_repo="$borg_repo" borg_archive="\$(date +%d_%B_%Y)" @@ -66,7 +66,7 @@ EOF elif [ "$choixmenu" = "ap" ];then # Afficher les profils -fichierprofil=$(ls -1 *.txt | zenity $H $W --window-icon=$HOME/.icons/borg.svg --list --title "Liste des profils" --text "Choisir un profil dans la liste" --hide-header --column "profil") +fichierprofil=$(ls -1 *.conf | zenity $H $W --window-icon=$HOME/.icons/borg.svg --list --title "Liste des profils" --text "Choisir un profil dans la liste" --hide-header --column "profil") zenity $W $H --info --text="$(cd $dossierprofil && cat $fichierprofil)" elif [ "$choixmenu" = "" ];then From 0f490c59a148990ac3d0e2177b79e710a9e5d4b8 Mon Sep 17 00:00:00 2001 From: Djan GICQUEL <> Date: Thu, 5 Aug 2021 18:09:22 +0200 Subject: [PATCH 51/77] =?UTF-8?q?script=20de=20test=20de=20distribution=20?= =?UTF-8?q?fonctionnel=20=C3=A0=2095%?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- testdistro.sh | 64 +++++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 64 insertions(+) create mode 100755 testdistro.sh diff --git a/testdistro.sh b/testdistro.sh new file mode 100755 index 0000000..fd11ab7 --- /dev/null +++ b/testdistro.sh @@ -0,0 +1,64 @@ +#!/bin/bash + +if [ -f /etc/os-release ]; then + # freedesktop.org and systemd + . /etc/os-release + OS=$NAME + VER=$VERSION_ID +elif type lsb_release >/dev/null 2>&1; then + # linuxbase.org + OS=$(lsb_release -si) + VER=$(lsb_release -sr) +elif [ -f /etc/lsb-release ]; then + # For some versions of Debian/Ubuntu without lsb_release command + . /etc/lsb-release + OS=$DISTRIB_ID + VER=$DISTRIB_RELEASE +elif [ -f /etc/debian_version ]; then + # Older Debian/Ubuntu/etc. + OS=Debian + VER=$(cat /etc/debian_version) +elif [ -f /etc/SuSe-release ]; then + # Older SuSE/etc. + OS=Suse +elif [ -f /etc/redhat-release ]; then + # Older Red Hat, CentOS, etc. + OS=Redhat +else + echo "La distribution n'a pas été détecté." + echo "Installez les paquets \"borgbackup\" et \"zenity\" manuellement." + exit +fi + +echo "OS = $OS" + +if [[ "$OS" =~ "Fedora" ]];then #OK +echo "Fedora detecté" +sudo dnf install borgbackup zenity + +elif [[ "$OS" =~ Mageia ]];then #OK +# non fonctionnel sur Mageia 8, le paquet borgbackup n'existe pas encore +echo "Mageia detecté" +su -c "dnf install borgbackup zenity" + +elif [[ "$OS" =~ Debian ]];then #OK +echo "Debian detecté" +sudo apt-get install borgbackup zenity + +elif [[ "$OS" =~ Ubuntu ]];then #?? +echo "Ubuntu detecté" +#sudo apt-get install borgbackup zenity + +elif [[ "$OS" =~ "Linux Mint" ]];then #OK +echo "Linux Mint detecté" +sudo apt-get install borgbackup zenity + +elif [[ "$OS" =~ Manjaro ]];then #OK +echo "Manjaro detecté" +sudo pacman -Sy borgbackup zenity + +else + echo "La distribution n'a pas été détecté." + echo "Installez les paquets \"borgbackup\" et \"zenity\" manuellement." + exit +fi \ No newline at end of file From 0d2f3ea82c73dab5dd6be54c6f6a34d2b2744a32 Mon Sep 17 00:00:00 2001 From: Djan GICQUEL <> Date: Thu, 5 Aug 2021 18:23:19 +0200 Subject: [PATCH 52/77] =?UTF-8?q?mise=20=C3=A0=20jour=20du=20script=20d'in?= =?UTF-8?q?stallation=20avec=20test=20des=20paquets=20install=C3=A9s?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- install.sh | 10 ++++++++++ 1 file changed, 10 insertions(+) diff --git a/install.sh b/install.sh index a9b8efb..1eee5ac 100644 --- a/install.sh +++ b/install.sh @@ -1,6 +1,16 @@ #! /bin/bash # Borg zenity install and update +which zenity +if [ "$?" != "0" ]; then + bash testdistro.sh || exit +fi + +which borg +if [ "$?" != "0" ]; then + bash testdistro.sh || exit +fi + mkdir -p $HOME/bin/ $HOME/.icons/ $HOME/.local/share/applications/ From 9f0f782ff0d52f30f989d963cedb1b1a976516fc Mon Sep 17 00:00:00 2001 From: Djan GICQUEL <> Date: Thu, 5 Aug 2021 18:25:13 +0200 Subject: [PATCH 53/77] ajout des sections installation et utilisation --- readme.md | 43 ++++++++++++++++++++++++++++++++++++++++--- 1 file changed, 40 insertions(+), 3 deletions(-) diff --git a/readme.md b/readme.md index bac6c7b..fc36a6f 100644 --- a/readme.md +++ b/readme.md @@ -1,7 +1,44 @@ -# Borg Zenity +# Borg Zenity Une interface graphique en français pour BorgBackup. -Le fichier de profil doit être placé dans le dossier de configuration de borg (`~/.config/borg/`). +Pre-requis : Borg-zeniy utilise `borgbackup` et `zenity` pour fonctionner. +Le script devrait les installer automatiquement en détectant votre distribution. +S'il n'y parvient pas vous devrez les installer manuellement. -Le dépôt doit déjà être initialisé via une commande borgbackup. +## Installation (version de développement) +Avant tout sachez que la version dans la branche `dev` est encore en test. +L'installation devrait pouvoir se faire en une ligne de commande. Copiez ceci dans votre terminal. +``` +wget -O borg-zenity.zip https://git.djan-gicquel.fr/borg-zenity/zipball/dev && unzip -d borg-zenity borg-zenity.zip && cd borg-zenity && bash install.sh +``` +Cette commande va télécharger les fichiers d'installation et exécuter le script d'installation. + +Vous devrez entrer votre mot de passe administrateur et répondre oui ou Y lorsque le gestionnaire de paquet de votre distribution vous demandera d'installer les paquets `borgbackup` et `zenity`. + +Une fois l’installation terminée taper ceci sans fermer votre terminal pour nettoyer les fichiers d’installation. +``` +rm borg-zenity.zip && rm -r borg-zenity +``` + +## Gestionnaire de profils + +Si vous n'utilisez pas encore `borgbackup` (ce qui normalement est le cas), il faudra tout d'abord créer un profil de sauvegarde. +Pour cela utiliser l’icône "Borg Zenity Profils" dans votre menu principal et sélectionnez «Créer un nouveau profil/dépôt». +Sélectionnez le dossier dans lequel sera créé le dépôt. C'est l'emplacement de votre sauvegarde, en général on utilise un disque dur externe. +Puis répondez à la question concernant le chiffrement du dépôt. Les fichiers du dépôt sont initialisés. +Sélectionnez ensuite un dossier à sauvegarder puis choisissez un nom de profil. Celui-ci sera stocké comme fichier donc évitez si possible les espaces et les caractères spéciaux. + +Il n'est pour l'instant pas possible de supprimer un profil via l'interface car la suppression laisserait des traces dans la configuration de borgbackup. +Pour supprimer un dépôt, rendez-vous dans le dossier du dépôt, ouvrez un terminal et tapez `borg delete .` puis validez avec "YES" si vous êtes sur de vous. Le dépôt sera supprimé proprement. Il faudra également supprimer le fichier de profil dans `~/.config/borg/` pour qu'il n'apparaisse plus dans borg-zenity. + + +## Interface principale +Pour lancer l'interface principale cliquez sur l'icône «Borg Zenity Sauvegarde» dans le menu et sélectionnez le profil voulu. +En vocabulaire borg, une archive est une sauvegarde. + +Pour créer une sauvegarde cliquez sur «Créer une archive». La première sauvegarde prendra du temps, les suivantes seront plus rapide. + +Pour voir le contenu d'une archive déjà sauvegardée cliquez sur «Monter une archive». Un nouveau dossier sera créé en lecture seule dans votre dossier maison. Il contiendra les fichiers de l'archive. Pensez à démonter l'archive dans le menu correspondant avant de quitter Borg Zenity. + +Pour quitter Borg Zenity sélectionnez «QUITTER» puis validez ceci afin pouvoir faire quelques tests avant de quitter le logiciel. From 0c9f723989266a3a0dd0d5b5288e862695e88f43 Mon Sep 17 00:00:00 2001 From: Djan GICQUEL <> Date: Fri, 6 Aug 2021 12:09:12 +0200 Subject: [PATCH 54/77] =?UTF-8?q?for=C3=A7age=20des=20installation=20pour?= =?UTF-8?q?=20les=20distros=20test=C3=A9es?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- testdistro.sh | 18 +++++++++--------- 1 file changed, 9 insertions(+), 9 deletions(-) diff --git a/testdistro.sh b/testdistro.sh index fd11ab7..98bcff0 100755 --- a/testdistro.sh +++ b/testdistro.sh @@ -32,28 +32,28 @@ fi echo "OS = $OS" -if [[ "$OS" =~ "Fedora" ]];then #OK +if [[ "$OS" =~ "Fedora" ]];then echo "Fedora detecté" sudo dnf install borgbackup zenity -elif [[ "$OS" =~ Mageia ]];then #OK +elif [[ "$OS" =~ Mageia ]];then # non fonctionnel sur Mageia 8, le paquet borgbackup n'existe pas encore echo "Mageia detecté" su -c "dnf install borgbackup zenity" -elif [[ "$OS" =~ Debian ]];then #OK +elif [[ "$OS" =~ Debian ]];then echo "Debian detecté" -sudo apt-get install borgbackup zenity +su -c apt install -y borgbackup zenity -elif [[ "$OS" =~ Ubuntu ]];then #?? +elif [[ "$OS" =~ Ubuntu ]];then echo "Ubuntu detecté" -#sudo apt-get install borgbackup zenity +sudo apt install -y borgbackup zenity -elif [[ "$OS" =~ "Linux Mint" ]];then #OK +elif [[ "$OS" =~ "Linux Mint" ]];then echo "Linux Mint detecté" -sudo apt-get install borgbackup zenity +sudo apt install -y borgbackup zenity -elif [[ "$OS" =~ Manjaro ]];then #OK +elif [[ "$OS" =~ Manjaro ]];then echo "Manjaro detecté" sudo pacman -Sy borgbackup zenity From a3eb68eb6a78547d076df6929670fd3064e0ae4c Mon Sep 17 00:00:00 2001 From: Djan GICQUEL <> Date: Fri, 6 Aug 2021 13:14:52 +0200 Subject: [PATCH 55/77] correction dans "afficher le profil" pour les profils en .conf --- borg-gui.sh | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/borg-gui.sh b/borg-gui.sh index 20d4076..75c5aee 100755 --- a/borg-gui.sh +++ b/borg-gui.sh @@ -193,7 +193,7 @@ qu\nQUITTER\ elif [ "$choixmenu" = "ap" ];then # Afficher le profil - zenity $W $H --info --text="$(cd $dossierprofil && cat $fichierprofil)" + zenity $W $H --info --text="$(cd $dossierprofil && cat "$fichierprofil".conf)" fi done From dd2ffe93eea5ef2fc8de6a014fd6bbcc2777a9df Mon Sep 17 00:00:00 2001 From: Djan GICQUEL <> Date: Fri, 6 Aug 2021 13:18:29 +0200 Subject: [PATCH 56/77] =?UTF-8?q?renommage=20de=20profil.conf,=20le=20fich?= =?UTF-8?q?ier=20n'est=20pas=20utilis=C3=A9=20par=20les=20scripts?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- profil.conf => profil_exemple.conf | 0 1 file changed, 0 insertions(+), 0 deletions(-) rename profil.conf => profil_exemple.conf (100%) diff --git a/profil.conf b/profil_exemple.conf similarity index 100% rename from profil.conf rename to profil_exemple.conf From 57ac176f45a7cc1a5efae069dad6e58e5ee2bc36 Mon Sep 17 00:00:00 2001 From: Djan GICQUEL <> Date: Fri, 6 Aug 2021 13:19:09 +0200 Subject: [PATCH 57/77] =?UTF-8?q?changement=20du=20de=20l'archive=20par=20?= =?UTF-8?q?d=C3=A9faut?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- profile-manager.sh | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/profile-manager.sh b/profile-manager.sh index e41720e..cfca38c 100644 --- a/profile-manager.sh +++ b/profile-manager.sh @@ -57,7 +57,7 @@ profilename=$(echo $vars | cut -d\| -f2) cat << EOF >> $HOME/.config/borg/"$profilename".conf nomsauvegarde="$nomsauvegarde" borg_repo="$borg_repo" -borg_archive="\$(date +%d_%B_%Y)" +borg_archive="\$(date +%d_%B_%Y_%H-%M-%S)" borg_dir="$borg_dir" borg_excludes="" borg_compress="" From b8751f9ed17ec373de2e22a4eb8d2c00bf475845 Mon Sep 17 00:00:00 2001 From: Djan GICQUEL <> Date: Sat, 7 Aug 2021 11:04:40 +0200 Subject: [PATCH 58/77] affichage du titre de l'archive dans le menu --- borg-gui.sh | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/borg-gui.sh b/borg-gui.sh index 75c5aee..3254790 100755 --- a/borg-gui.sh +++ b/borg-gui.sh @@ -112,7 +112,7 @@ TestBorgRepo while [ ! "$choixmenu" = "qu" ];do choixmenu=$(echo -e "\ -cs\nCréer une archive\n\ +cs\nCréer l'archive : $(echo $borg_archive)\n\ ms\nMonter une archive\n\ dm\nDemonter une archive\n\ ss\nSupprimmer une archive\n\ From 08766f3c73459e9c7b3f043032b1900e01674036 Mon Sep 17 00:00:00 2001 From: Djan GICQUEL <> Date: Sat, 7 Aug 2021 11:13:13 +0200 Subject: [PATCH 59/77] =?UTF-8?q?ajout=20des=20captures=20d'=C3=A9cran?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- captures/interfaceprincipale.png | Bin 0 -> 31399 bytes captures/listedesarchives.png | Bin 0 -> 22172 bytes captures/selecteurdeprofils.png | Bin 0 -> 23514 bytes 3 files changed, 0 insertions(+), 0 deletions(-) create mode 100644 captures/interfaceprincipale.png create mode 100644 captures/listedesarchives.png create mode 100644 captures/selecteurdeprofils.png diff --git a/captures/interfaceprincipale.png b/captures/interfaceprincipale.png new file mode 100644 index 0000000000000000000000000000000000000000..dc2bce9abb6619dbc50344a4090e9c96a1542ce8 GIT binary patch literal 31399 zcmcG$1yq$^yDy4?ARz)uhlq4{g96gh5{r^ID=MtnFq`P6!-Q68`;{W^3 zKKG2f_c-I+eH?=!W34ymJLmJO=fzK6RvaCL00jX70bNo;R1pE;Aq4zjBR>J3%%K&_ zg8v@d3QH;@gMV(w20suGULi<|zEgHe+@5jN962FvJb>m9F$8WsdfL{Zgf*WX;t0)azBotIwaOZ*JepKHIJ2tF^693Gr=p zZ(lpQb*tCeoplqO+dF&lF&{oi?p?VzLiRTkjOw&H_ct zS{9fip$ZZ9H|yPtty?dPqbAn$ecq(q<7US1;~XLxY+<~Mv5FLDpbnu7d}&uea=iDw zsilF)g=A+*Lw-(BYNyz^0I|+7XGbmMdDCFeHH}3@Ln!HSb_Bk^=ACEcYzOL=q)9rt zKt{H8edQs^+7-``p6okv?^SIfGa}3e63J3;C+e5S-RiH{@Y@9_USn)!54-O(e_&C! zy+(1L{o(7MDHKYw+%cG*EF*xtdf8)A~q?L)B&ncJqd0;k79 zsXI4WcgPO!1gox=txZBWNZ<}QSz5saH{p-FZw*AHe;{oqGfi`ZsmI+&Us&H{xQMDB zr5g1jZQk^y?47kvhisXehb$T81^V)+yCgy%GmA6&;4YF`%i(s!S79Al-+ZA(Q^KVX zk|?KC|E>-#bnn@@D>`0TYMVU!dKI@md3ClX$?JH3BHtc?n<#T5JL$VOb@>8W^fPfz z4Ps?Bo7T&|*AX_=@#fiOI~DeKO(Z2=jFT0{0%I;CVy$lmv0lfV&F#HSr~D8YZD?dt zNs{vRJgnIQbyiA6MWz0xOEu^1a8_@w{O^aYDYUXKF1+xiLfi9!hV6;EfF2pkdfpK! z3iZnx=u6Yw+!m^q632d$)18@beJ#y0-BEOM5m~)CYPndg0k~9bbm{cM}99j{=shYU_y0f_0bR1W5 zuD|r891+Uk_OmMRcGG-uQSaj5>bp?|O?dw7yynU3%`4}-n`i8OwjM@?hGDTz-)xQh ze;Xd%o$oc=?fz1xzCR)QH-d$Y4M~@3AG#Q(V&`E>M(t{~b6RMxmjp14iiNJI zZf}bzF=01;Mn*>EXUOwA6?3WDbx-JHg<=vatnlG1o{Ss#aX#?Y6c_(Z4zqz&eX3*{ zjp!&kj|aQ;Jat296qd6t3HhppSk(-%-rkQBlagpu>mLRYa%EY~RQDv`FdV=Oak+zH zYZ62GRw|cijQh5sRUS9hT9-q~UIZMAT~TzAG)g}49OgFX9Scar;qMb}&!|juO~tx* zPnr#HYk5q{Cf2eeA_#lo*Xic)agBjv*-l3~Z`|@OqYras3(}s=*UqHUh?BlG<74fZrQ>bBg z^v`~dN&DpvT`)PDjhh9t-v>ndJnoI8t?E{5{AS8de$PykF*SRy5E7lFEKP9M8 zQdFxkic$!VT3T!k@U}o*J>h~J$V?blx@{DG0 zg|SN&+qAT4>yLCW4VVm}($~BXP?ePHW~6ciM}ll~h=p8x*`cnCOE0y3aBgsSHR?@# zCu$)2b&3&h|N9Pf=1y3ER#rR4ypKOg?{9^G9`K8+yZ9zT{*OTa#fFSG+8!$}h0763 z438*ZpdfyT=gicVC+Fv{?HDq$*%&h9w7iVy_)%lo$!Bk(TqxE19aX_%y68_^GMn`; zt&Ze02CeE+T}vY)N_BNe`i_m585FBW+h-5PYbf;QO(w z8jcw1ME+I3JviKkFSBt+Sqe<%(Y3~}HwFeqHp}}B8QGbGuc$jr_z)-H^dDi6DB~3O zXmvJYW{dSt&$j3KU3VrG$~AeK%l9hw8c~@>44a`_aqPMeYaDieie$@PY>t_gMbfE8 zXQz0?@2&Q(q`132aN0THGQG0mdvcfPAf!R9T^ZBh|a^FX<*?pb5)LGn; ztt9TRT6~T}sY>m_$H^>mOmYZTv$d{4V|@)3N-&6ho@(J&;oO$iOk^0Oj8Z@#$@BK2 zoy;+OLNWPz#=}$1mcPgSqx?III;BaH_L`qZ-O&n^(l#+1(A$UUZ@R}^=;eq#9*!XX zdi4Hl%vbfdPk$mkM|tt!7s8*n(ytKr>q>5!=Cz6=nCW8U2_iRyts8pJ$DHDsq!T*Z zf(W^t=D+Bw`(aVYQ%6lp)GB;Z=dv;gsf?so?=q2ai(T<YfZeyVW)GzWc;pQ$Y)1bSVW$WXSn2yYW>6|Qi|g4CZ^@O%2uK_ z?2~eqKvw8(JF(y5ZKo^!k?cWy!ey^Ji5dYSt%Xg-tE=L)+ACc4VnaG5!;`(K_Epzf9)q;Lk+=alnlE7Ww#}aaK#_&F3i}M?<=HddrtCbsRrFW;LD!GbnPp2a# zv8!A-?#j5-)g8N7Fn{IRP|797x}*0$N`!aj^5!V$Gip}8)wDojSYR`RH76>Y~0r$^AyA=UJMv2a~g zA~uzoosEr+thO(7#JGi{)tC9MV;lD?VPbv%WFK`6U9hJ zekv#vPgO{N5)?fde`WVn*j=wvEX{;9)?;ju1{(M8d6DN=v5gTh#>b4qaYO*WCQ(gIDA!62@ z+j^0EYYfIQxqG@ZWx`HS>+Tj9z4bN4giyMa?O6*nnYjn!yFS~Xee;+iOdJK`X_t4hf`vO0hQH8OmcNeo>L=Jl`-@WmhT#= z6_>5*s)Uqnu-=*XCbIMn%vIA1aA841qp42Q-Ul4YPL*$;yYi8xlKEURifYYoLE8?E z@;R^f-A`Tf$+1W!vq(s@u&8Xgn3rYC8;^}0ba%DsO$co}$Ld(43hv3oDu0VxTG?V> zL#)GgNxvh|!+UAO?s!k*5P4q5uXWWMgB(Y&S2&G&5k4#Bf@JzSOq^(|QAV9^J4`9XSESX!&Uxr&%&;@SH^U|Np*8~H)@@B{|D@?Z89)zhlYpagdCq$ z^OJw+7rdf}K`K)1OfjsM<51{+P-;E;vX$gb)2`I&uTkdNw?yEN(>u4;>i?3QfunaB zNx0A6?qbt@lO}(&*Lvm9kd@(0xwf`8HxCbfvSqYLcK2&RK@!rr>!%gu4PEa^;QJgs;fl0o=LvKzxM9$U9JQ|ZN}rH-zy#W>?G0*1m%i;wxI z4Gud5rlzLKc`rVd)|&j*JHNcJUGUoQE!7TbNG{Yyl+WBO;cSHlX*ecNt*)&hEfai| zr#(14T^#GxFgmTJ+fyxkvFf*Sc08)Mn5w&r7tbqBG7_;w%%T;`mr85#daZKJM62eg zU(AN3)(KBJPkG`qdUQktwufLnJ9N-1GExI*o~fdlDqG`=n~Ia#;ZrRi^gAzi*E0j5 zqLGO>sgHRBKRw(Tb*dESOJFwZgC&PCI_G-J)Vy}vEg?c4P&LPmLkbnx`S)kUd6#ASU*0E;5L%zO;O*z#Cf4wviX7<#Z?17C`D%^TDv zS3f2CQ(SH#eeol=T)+;4{^g?XzG=e)pOmsmnQ$!Zr$TPAus<4A&PQ2;<+{45qVL}i zRaz^>b9u&LQA|t7!JiZ2c30bPog2?-N9auHOHH3}b3$ijwm2oWmKNy$VZ*WgTP9Q+U1ajyE)&@`et!J0(dwc_s1gaVj)nOA^9 z7&|gb+RW9CLjLIWnGV+7_LTJg80<~GD(x z(^d11VDf*4I=;Lj7Vv>G2GbdPAxZUr&BGWzWg}0QSHK$J( zE_UkD40c^nKUKO~F$|gG(b&rwF=sObwnKXydHtkla)dz~2lN^v4`XG^swKT;#5u3X zrml*QV(-0fS18zw>Py|;xr=-{OOr>zMYqn6X~1}`dS9gSRPC9RuF#wX+oh1u&^D9{ z^P2=$UUe%pOoVLm`HlwwX zM|+@M-*Nhm`HVhQd^CMvZSfCvPnGV50M*`}zrgP2Quex7S7+T6J?KtZ468kL3wBrX zu-~c2z)HFs@pw9c<1@)(?>cqf>}}`1nZh|C4YAJUDdg`?UIObGjUyt@U>DNIx`#in z24;_AQ+VB`CuvE9R)D>ox=^h?ROj|FRVRSo-N`I_+Lg|5CI;Ttv-`oK!+$YkEng^{IerK&oAM1$YRywfGpDDFR7colB)^!{7!A8#P{ zUp#;I+V7uDzWq0Eaz-(Tf;u54FW)S@ldqV2&PN}~Yi~AXSmSkme!lOhM!nJY9NMGeC|MXhG<+jdRu!8lg)w@pWIg{PVIF-Zaf0vA7}akcZVUS~>0 zQBqLE4IB3r0V^k%SjZ{{!Je1+n-3ZpD{B|ylz_j5rN&OmGL3D zbgFnTCiUVsk1o&BcLSKhGl#8rr+HR;?}7txnI6UlQIM09>u4dCvG`V0Z~~Evl*&;au)u>iYbwF8qpp%mx^UlFM%%4 zmQ67l+vWjmH(j23oP?l>OTYbKH32%mwiO@+GgA1aZz)YbHm331yg!8|f@)=pOS)Z% zNls4g2|Cf+q{*^D6ZY-#DsX@9zAE_~{(oMGCkG(H=+JyNf-8J&4U7n6d^pw~H+Db_t}e#O`w z&6Itj0ma55=nDPwjao4S83DUJB;Dk9n%i_f7qAQ8ynY=%QBvR9+uNIiCZwa|gF)C< zz+>yY6U23q(VwjhQ~d6*S7%(Bq>}%>5PqbRz!`XJhE`(K--ny7nEL5@99rpi!Ma!K z9>XLSv zpTmA{Y~lXtX`iafJ8N_j*2pb*A)Di@o6E^o0)8A&8?X6?60_B{b>cL81w{nMyGj z>r)Lv9C@ls5wmp+Z7UtNgNi8{S2f1wo+xDAUxej|FE20C;=rxwuy&JVDsWj`2RFwqSd86GIk zRErs^`_nOLES8Q?Av}8WOmDTKMB>AT6$dj~veZ-`g)AbCZ{H*(BoIFB)q7Igtf@_5 zNo$XdnENrDOilKKl9X)}L~y-7Ecb?z(&ogB9h*{C@9yg(oF$v(DzyP#4Uep-C3b>F}*8n-zau_i8Z_Vc~mH;PU*&9*)G{PHqY znf9}T^*fkKx-xBNSJ%T=jEsFb#G&p5mI5B-WBWKup_FWo({&8|~;ojDy&*>dYj#-`VK6oMggX(=M7R>zj?{z!gyvL6}Z;ouZ zZAD2@xYUukX@fp4$q0o}6$En6OiJGvjujHrz2P6CP2bxd<2-87*rV(J(IU^q#5D zaxCHm5G#~5*FUHeNpp`g8){oijqxP_406H3+UZe=i9KH* zA%RQ9ZUvI6;D=&U%4j?q^5GwaXKy z+w&tiu|T3$pCHfuF%8Q@9CHOXH-41w521TCDg>e0i zn>v@%mYJC(kV_2JsLBCMEe4_@-BQQB%=AKgh^7-#YS@(;-roA>iYYvuKJzLvJOL+ip>yNzi- zZPK%r=5%%%8X9j>fv)VEOKg06Q+sv&_8|SYcee$Q15|+eiM;Od4<0?S;o}%JK`}g9 zWdP1M^XV2#Bx91+-0cn0xz!)xgeABMJKCMzn{P@R(MiyFjVT*Q~7m3(ex8z`(JkM=Trcq;YNeG@3VxhR+`>6-A3hNZ1~u6SOb} z(-3q2M8o(+=JxU2-J6m zio4&L?T)&A)I=g=zS-;UuB5xwKLbtTb^JZv?;J!dlngA$BD+pKR(68h+20X+IP^t$ zG35QNQx#C$@l~%r=`V35Ml4SA2n2|TVUdw7fYA&CO{+{B)q3le+J{;h^LYt=(xATm zh|JqbljdGggvf;>(Fpd8m~oK((ZD~PV17o*c|$~bPfPhV?@4Qnl+ZT#_Q8Xw2bIo8 ztB-=k?wM+NsOT0MJV)VqNkdZWu7K+g|M0yoz`V#vh*9ErU);0V&yNcgDL}M&zj>1a zh${bn_#6bd_bix56eMl;zafSFYm;~X-Xv7m9Wg|XW~)I*_I}?*>*onh&20k5-|v1k zZ&g^mbWpwD@rSs7OoB%0X+*Bb-{bho|C=*Y|L3%tztnF`HC>DqdP?t)!(djy`jPgf z?jMbut3^}?y5Yo7h6H4@fuD`snpT6V`3w*9fD@ zp2<9Oee)+{mP9JPJg4(2z5nh70EkT1EJ(%5x>-MlTJ-r=^C7J&XDx92H5*9e)=zf| z)XL%m1Gnp)RyVRQGF0V~U3b+%t`8{bb*YKpXnWDQlH6e7UiOG*E~BihERldipt|iU zCLyjkES@8l$1<<;X0_)o7@hF0^2`S!KQbDnK<;xib0+i|fT{=*hC$Exfo6>Z`j8s z(@GiF_B8qZQ~mSHPbH4^w&%iu^7n7+9-YciI@Q8O?X<^*|IcH{OrVekQL>Z{lPGJGge?F-HefCb<^66~bB8BvW z&o&NeQY#2gj<=)%_{On81yR0xbz-;Mt`F$)I_?CkjyzdQTA4#`x2uYCOxmt*!3mr%T*eB)g%UYf+iqdLuFV z60(vHKFx>r%TvGbIoX-D?5@ALg2|S)d9pnT5^G*_oSaH`Riz9jmCnYf4g)^xCr<#w z0ask+L*8;%$EyRW&G))QA_dIgBCb03>}NGj25_J3Ase+Q><(e49-sfj>;h<0?wXQ>TAK5_|vbh_1*&4g;gj^N1ti zb{x={F;-9?G&K{^4XdkO8XtNeSlrr@=d03Z8wRK%Eaf&|*c!1EdFrH(n~fH{>lph0 zkdU#cH_MIZ5H(9K&f@pZ!PBQeL_Np04cg&zC_07fm`-N=CbJ@iLd&gC@3jzcuWu`y z*?#@{6?t&RRAhkwq{JpXzr8e$jmLGDD5g+Tx2tpme3$L;i2s*;xu;ft zrgRKLGzKCmQ-`3cSP0Rd>QTChA`fD=EZHpK?}t7o33u1u%=(3(PB+TG^{&enxM)8X zbOf3zIpyvK9B&;xo$F6AW{C!|DmEc*dmz*p8xvpBP6kcrx)k{gi-KC`S7PgJQK^st zRf{_knjUx%DkmXeP5XW&PDx(@)AVbZS+Pwo0l2Com`1~V>uzns5f1*; zP=AD!k!ctr`~q(ex4Cn~XeiSa;}U~F=ESUjxW-scB+hcqIbnrP<#4QK2N@k*fB(xZ zh=*FJg9nOs9&=cju*VOTTI&NxJ1q2bvtG(_nJwJPOGFsOqJ{<^AD=pEBD=Xap@JJw z1Ze#M0cbfu!NoP6b-S?#@FF&X*gc#C>Nk*aVoK?qG&CSo`JVSNZ+Yr=Wwm$z=)kZw zZ&amSW8lDR8#4=#i@|(39bShGDN%zLC0TOKz5Y~J&xkn_x8O^06`#oJu1-rT-EC}G z=K>QNqw-bJyZQO0(ucPsBqWN)Nuy7ZkY{n4PPX8%O+rwZF)(T0&3F*T+YCSlAJj1jM~9G)g?5_kX7L zgbpyvCiA`*6MN!mIT;ubfGRjUD`ssm_d6ndch_g|Wu~I!lGr;7RP?gEUgw?hvVeKZ zF)9eCC@3$xj`}p9za94kn-8IFav4%@5ePl6qIx}V-{o`7%_kgS!{W{CnHFSiY^3UQ z=kBa#0WX^|iG#pa(@AD7oDZ-fo>uc95*GqeaA+}_=XSRw_lANZ45-623TbN_o3wW~ zE-G*ZH4s1;kB9!bzP%D##KyAN#8A3I1=wsiu|oh$G>=xM-LkD%U&m|i=TTDJf){jE zBo&4*P0Cn)-TDw^8qgI*JM`P#)y>^qo;I?wk~>``A5b*|L&Fuiskwd(KrhP1)tZZc z{E&G4`t@ELmaU`f2cIXe<|LFA6|uydnoWl)G27)5frCI$SzTRh4z~jI4Kiw^QRcE_ zuWdf@5FrW@q?r1O-Gc83hyHPKL`o-ioAu#{=@WEfF)*yq3e#RtWzKUPNv)=ft~29Z z4s~?0fHSV^d1t9ah{CIVTR+iGd4?P&mQJ?NhJNjaItLxQhqE~5UBYL? zf=!Ndcc0X(EInhVbdbqf(mSpER4gp$0Wbnjh{yg?rv5}K6W{^#_)oa&WAe3c9n)H0 z&!4=Gl8 z5=M=q{;k({c2KGXu1>?^qm6#cp_pF}D#B8&6hHgBPgWa|I&M+6=I z8>U?oTrpLeWg5{|aJO^zuv_ku$q&oQ3QX(trJdbfSw+S0!Ey$TS{ajZhZ1)a|FU+v zGdub(4-qL3leX=RFv?En?f=1NAjTQAbq9YQS22xtO57qqr7_+Qf36xHRu~k(qds@0hf^M zT-`Hclc&6}Q!zQNdG~9^m3m>dt)yRtB1c!G{JZzVVDqD$sS3YfKQdlQpK&lz-q869 zr*_2TrFmaQ(N9Gwl+7{tK?(&UP~)i8%BV1Ct#p-9UTlG zU0-)=ZyOzbi4iiS8PvHu92kf;BI|h9w|{zAO5;El(7@2z!{>J<={pZbh zKqafUUEm9e&PQN+_9Wae^v1KNT1*({DAe&b`=YPZmG2dq^+HOnv;i!VFDx8yjA8@O z0JPH*QlU49flBi+FQfJ3?6n{nNtD$46SGkO%k0px$VLdq*X=dJI4t{x*Hm&zs}b4) z2dAfLGWec8Xaw@}#9voIwK(j*edIP$N9b~V?YhqVsY*`9bSNimVYjV`*L{`V&rkAr z_k!hp08T5gGtMUKMGmr)7v~%9Ak%kZdawB$cJ;>R|2$UyB?HtGvrWrdBA;ine*2!F zZ@ykDO3tVmqh{?VCAa8cRRiT0;2P4_#7P$bl7Itd!rMv1Q?Xt~%^W+&NYu-HH z7^O_IaD$-x`GxOyU|zmXXJmFWIGr&ZD_|;6%I+^RnkfvtGD34n3f6KxW!>y%kxAkG z{{3j}5ac(MXM{qgSdXqw^gHE*(gsb&f17imqBv`PkWjZ42_E zR!H;yfZMWW4^*!pDNlGZsYgebp|pIiGDtrBn8Z8{@eE50E-Omb&rC^;WRif8TAUN{ zjbpX+861fdH^s1XA+E4e_h3}D8Y3#S#-*vl?Zi*^sY0pN=}+=~s1x%WN=@ zpmJ9n*phK~ez5kQ-E5-LdpWr)1Av9#9iE24Qpp)%F~a zm?MNSugm86o3;Mrpo)qZ-HZ6B38jW3To0%4<`7pNy(@y3*?+)6`3s*F56=!f2sCP89 zY8U}<~!T@SB30Q0O2Krhj1PD zsAk^~JO(;oa;J+2f125hvQTRX##f?JN)>iS0M0bfUM76+Fd}2>O;+fB-+zSraLxYcB3DxB=aT;8RI;<&-8aTF=`h0- zdg2AqxwyEFT?7EY1@BC;8D64Q+wJ|?EZf54|0(p||Ap>)(E<>E{k4dw8#5K8221O}R#ngeEKpfl({h^aGYMX#bvv>x-y)?m7%j7*xy8ivW-#iOC2 zA^d|2V+138l9SfYtYvX_8?)bTzdcc^n>;$+ofwuknsS^qy6}&xJ+a~w7HJM#?8XEP z>!%O80#HAO9|*Z9`LFSwKIO8o^1YwZhqfK9`=H5nB?zv~QEPS4)lKwNNUAC5adYv1 z#dmym0A-bssC>`}v=lIw|Flo>=_LIZ6!5VDm6Yq*4*6@=@R5-b;fj7unX#5ocw=hH z!A@dTMpkB6e7qFETi|};Vg0OSiD6O=22Rw`aDM=}`$aQ5cI<4KmBv5cd{{+~P={h`3czP*7OE;ZLLtBDB74c?#6o*Zh1s(ASaW@abpo z&i!){^>`*(YBgQ?=Z}c5)6Hn~_C!U9B87CZ@tz=X6uK%bcXR0w5K#u!AV1q_FZl@T zXRFZ(KKM-R*kF;H(?t4TqxQBKSfcR&e=e5WiXLd6rb&gZL9;UU9G#GZIX6qeRlWr< zT6Vli8{Bqd_7I722f^*xpbJ!-p#n+l)9op7Gf4bD*WzvZ%r$sywO7M*vXTXq1X-|c zDFilnnLjxA4`T_`jRQA8LXufUfNg2(u9{wQma8^+K8RIcKNivm+-Bgx2kq{%aeOc> z#LIi4{4Q6y7?1>!J2e;0_cAgv^&a_Y?e=7yFQ8-mR~8?=2sjNiB>wd* zk%x(*O?IXlQuJE=hZa{>EoO^B#?g^OeJ>39Lj;@ZM4tjDNUAVI=nV%))QsyXaEnWpQv0DlU)nCVR^9CNR!%4ZF_S3-M!VBz=$)W{krM|N7aeTel| z$v12*rYO)Xe@qG`eS(H>cJh7G^9G6yEwgI%sw#O9%j}GDaPai{x>@+X;z4S!S)0X; z=0=TSz!*9N$xMM}edLA`<-wGX5JG`RM;-$Uuu6S6wmb}{x%AK7X9ymekKWrL+@zSD z07`m;vw~9CpTal;D1>f0YSrg#E_>8*-0r@OTJ|u!p$`Pc(Rlq0w3$PzOaX)U1-RzLR71EZ>L=-aP8=q6f2qu-_V$FyuV2wf22x_Q-NFtcD1}NpRRE$E zL+@^dDIjL|R@l~;9HKRC{jseRU}qb(|G0NJ+e2osVaLaIKp7(Z2nry-US|Poto?eT zWZZNA)t@P01Zse+H$pqj0Zb!g(%DPb7e_rh`vRaROE^{jd9^)TM3zkECiS?~R&n9Z?FU>W|lx`7rzO2*{1=LG9=)zhBb9M6$wdo;#?!=Ns; zU;Z4tJTS$17otmEKi|AN!|iy>U$WN6)uNbhgq|grBm*p%(5TFkT;h9rr2oz{WtW%V z^_1vtTj=dk)(7-%u^_x>Z?k{Rn9k+0W%nl$T8G?H3;2-g+S1cMVK_EsMRHc?cRUfN!lTI0VgO3I_|=Z^Ho-^NIhTE(D;>>vV&*i z4;t{$H{ooNxI|dO!cFK1r#o{Y{}?eBdS#S?z@Y#$=*N#hP<+byH5pi7K7$NO|6SvY<&He3)~6~oGz zaU-&QeLu1+t5hkz=PieZ6c%Dgea8Za0a8{fGrXXnz>VeV>LL}S(*MUOPl9{KFqj7^ zLy2M1dGJ>56!D<2!b-mqrz3+Ow@;%wRPb!%CGZ`VXIs0r_F+LxR4m2O!nqv{12Qry zXM@DEv)VF5T+x}`p1M0ZCnjYOf|0`Zb7(y$=~2>W@F;nc`s|2!w|E)eSn!cL?6qAZ zqMD9nJas+YA?IM|U3Ivx?jaFZtoCZz4wiYU`E6sCQwYFzLw^ezUW3YyP8g<<+eg<; z0RHv!Yqb^i{M#$=V^nrNBhUeFdw_(x?9z(S+$?@bn?)Ht$4fESU^KqWr{-z?-XDz1bAQ_0 zFNFNd&AH8gVj+<0c_Kf{AL9pMCZrUFoNOp4WEGy-)!=W=a@)Gwl@i_)A z6Bm~rHgvo+#Bl@bP|Nr4r@{ZXI^X`C1$JPEndBz8q{0ut60)+Kge4$qCHM90GZuMrpgmQ7esN** z<{DXDUEOYHD6UyNcwZre1dW(KbPP7j-jc1Di`K4xj7y%Qnfv+*gNXev3Gh%akNu!g zJ`Wn2v;I!dVELZb?~$eK38&6^CYV>+=`Zcc{3(OHz+T~lhu`i<790O~!f46q=up3u z@74Ck{$6r!P%<97JLS{ygaPnFP8j516s{j9;Fzp%0V-RPta!p04DVtE zZ_;tM3AnCtJeIT|Hcg-MC1tZ*r5D^BBnItp2^C0q9D3XcN!1S7?%Ck2GTUgt$Ctn> zt}KG)%Pk|o*3Xhjc^9)QpjPKV{0-?iTO#Z=j{g5;X@9`{+dS=L#%qtq{gfVcwO1F^ z6*rb^TS(o357~p?tz+|+*JpE{2-naf99C9Vr(7$od_Y-UPIsroMGf8nQcT%BheOZ? zZX2{ZEuQ<`_o!i&-#`(XLP*}{Dlcv==^vf`7n0w=-fax|*;6vIg(nDCr+e+Kt%x94 z%-8EMpC9Nycj(hp93BD@H3di{fQ5zjRDL$LJBCg?Xmj*pW33hRiCJ^-#``H{+04(+ zgysIf0w9YYOcfxpR2-T~0tq6<7scER>-1OUpkqJpFBNKT`2{zj$j)H)STtDey9)+& zU16tc&8cE%>UeL;cVn(kPeUSS)UZ{v#^_u-n9px+c7f}7@ZdoL4PnhW?H-$H81hq`u7446FY>445Yz$i&Fr9my5-8{kQ0z?D68&zOZIt_w@rM0qN?O;gaa-@JW9H4b~J-U)>Lf*Mi4>p~|_IbD~&*KhBNHPWI&L*G^z zcd=SetKH)yxIhpdf++TFinaic-8nOeQ2}>K)7QK29eI07?64Pm{`uYtQ_hhmp`xOi ztZ>EnF8pWK{Z6g!_8oXR=Y<5a^wwXeeY>~2H)y`uz`PeBEez(|I>}1rp&*N3>Fw@d{X-Nfu3I?C767C ziu|c{sP(?NVwXaSze8R|@qaiCNW}ghh085o=e&Cqu|-l={+Cie0wjW5+^sLt54&LY zcBcYjOU@E@#^xEW4|aD_<{!Xh0G=`k zqeN|_P+aO}v)o6`+TA|r|Kr@_BmC1$^CmlkJA+YU+T4{i>+gBx9)EAL)}e*TQzOq* z$Nk2pJY3x>T-aI)fWY(yhYTM>QFTvyHu&$RZ9)Bk)J`YL-a+^3)6=QXn1h8%Y9x_A zV++6f{_5%LR^dXI9SMw%6Ycl$uaW(SG8{u+zo(ZFfA4>sb!_$Ek4vjCRjS0pH=%EZ zvBE7J_DDO-B#@u(#x~w~^mX#o?DffG1Em2=vI}3nSN?m94sqq9bok-7U2HxC7ycTKK%)5k?-*sUHobw(gh^E&_s;bQa8nCrOrv z=vkT7s1!D3U8V!E_CUB{_X#9qmsU9^6o7C(wBbsdkke9S7>B`rp$Rd_+1=a!1!Eec zmd?j5hyD!{(Tv%o<19BfH-n0)6+7P1*Zi7*Kn*R^C~2*k4DxG!^9_>EFW&)w-6Nx7 zE-~ku@3XCoV5ZI9in)*3xV$-PzxBd1!bE&&85yC%HKc{Q~~T z2Zw!|Ox>|r1-*V(?tcsyg=xpn2T~Q;`C7iXBXw}|Jh!UVT-eS<#ooCL#_drGYoJiQ?d5tihWXxXiv8}iGde!^+whUqs%K`SS+HkB{27wi zZQb47TSj+02nhS0oyXF?8s(P5RkmvslCJd^V&Jt!6cn_c;yEqHsNtC?TGO#BQffg# zZO}3r&*qrS&(D9{cysbb>nXJ6Yn;bibr^>p2BDO&^NipDfKREbu?14k_t99#pQeFJ!NT;5z`|vF$b$z(dO+Mob)mu zX;sINNIfztE1i=3{f7v#DL1F~>TOS|EU%scLs|#C3kj*v)h}PW+YVq_Q7wqwtvS<{ z1g98m#t_JXO;ym*vnzua0)`_u*dk+Nb4Etk-Pxh_`~m`Yo^{nceV7Oc9X+MezN$$A zu45;>0s>m$#aj4JpE6Qp59iLwCfSr_W@T+oUmVfCB-%C$@b~Ytv9Q?Yfo}n4CW$ZQ z;wH-0MJl{&?xQSBqfGJh=TLf|_uAUY#S<3AYV=(l9hJM>HX1rs?FmzmTmIQlMO8Cy z_tn7so%KOvVgZ7K_G{6*-=1a=v+}i&kPvu?>)B?QFX<3d!)>0~$NY||DGffyUB#eH z)%vJPn~g>KlP5@s#-@)D5a7lx1B$b|*8RoB1|1zE?W6nQ7esyLvqqjnjg1I(EH06& z4CiXyJ_V68R`5q>@Zngvcr~nkI+&~C|LN^Jz?w|At>ZY3BeqdN6csF>0sX?iN~c7m;ri8_hIIPC2zV z2z*D!D`?{Cd1`ViG!{)uti8S66q{+3pMqBYc(iqNpo}iMxU}$fqC#}+bpYGYti&PO z?N)r4QJ#63*7D}fg|V9u=Ph_*l6ZFQ&+=QI&v7N_h>Xy4-aOcv(-d?Fob0(6ONK|2 z-1XMFMl3md+Hbz$^fo2-htzBfVzywzz<_0#n;fg)qDEvGtY;Q$815rgeuX^0<(*%L z#S?h;?Mv!NztmNM+WFwY!;!_6hK7cvr8pcVt9HhvF^d_nKoT7L{c-q`Gt!D^w0)cV(M!2T(4jZ~5+w)O38O9&$Jj;rUrwBqo{LwGS2DCS zCh9>Cg4ET?NZgel5O?~{P2`z(?%#utA>0dmvMic$N3r1$0`bazgR-*x9#3W6`X85; z_vZ45ArN)lw)*;k z)17Es%PKtXRCterRo&p$j+DrKYI(alhh40v5{+5< zffaD6V~C<VevWy^!-P63-9!wDEpzqB*9G~Bq*5K?0P67 zDk{5}XaC;3V{uIUt(s3spA?N@ zQLieOY$moUuU*{AE78!w&vPiDxnE9GSJ$)3qfuBL+fn%d(yU|kdAPzgk9+SKU%Z|I zy@!d6V!ImK7+%=xg6h!Y(FqQJbH?k}ujN;lmCRw)H>uw(Q=_|#-+B-sA|xPyw=coV zIvc1=&~l(|A)0hk{iD4!*@iz)uFyLBwsVbrsMk>Pqpp{)_gF=3M_ zO7EmT6%Hp=w0@Y{!+pRy3sx&ICa?DItB zjXiy=`@ZwSg}POq@Ml*I)H&y)c_%cq<@bcv&NFw})tjtUVW~fPTx$CPfjIr=ZNAsq z9|g~Jio4D^_~&gO{!0-&_WqOL`u+a!zjeR=Y@e0VKSj zFUq9-?+e1MsK!|b$@T5OM^<(H&9;9R62gb<+OkcO1NXKpUpYYa&%Rz=y=baYoNJup zVgE4=%0{D}!d@QaIeD^OS$a*#xL&qQWU@LEnAznyh!LBZ> zuBY6&3RLcqDESSDlUMrqihkPpjkE>#w3)>g!`tW0I6Hf1xSIjUbFvneA$pUsoX-|) z7<9_?tYORhE?iMYA)Tb`I!yKksroI=qg-5E@t-N-XzHPEU8l;i`y+`ubsM%B!0jPqRO;M_V@_?wCc|UT8YK z&0(NYKlN>OvXwTUsO(7-={Th8NHZ0}oa7=yy?j2=X9&Py68j5w#(eYshsmgl>NGG6 zzpJgi1nsb~(lAHmSZIS)p>5Mc_t=H*Uhh1N+3GZ1IT*i?QH<-)1Phl)rK#bA2(I?J z`$2pPj+LAsR_;FjRX{ZeyV!_CSGv6r6qYP{TJG*=3S*d_UE3!QmfhpJFETQ}+ElSd zenjRNs7l!xp>BsC_fA*Sb)c16fUT`#=h~`1H1Sc1%*$Vzby6R0?<%L9gA4|S)-aEW zC5=w&<|qo5vZRa3f%VTz;x)*Q*!w;q6$W37+iPh>mF<(cc0C0D2#?2?*K{Dsb`+zB zwUFOJYAo;nl3avfk2QZnx(4aYEnT_KM8Br zAlwkU`ub5%)u^31%D6~gaX`7rJW;_@xoLE=BZoFUi`$8~6ZodcrwHQi!5xp#CD?Sx zB?c8cBy1WAhP{buo;)H(SCo9_DJ27br0sFiIkrJjL%CUgGGnfzG!8&<_@Wury| z!Eb$tpFUk>F+0te+6fsMV(4tU`NV9K{6O|hSB;}=$;alp;BEgHiHkN>KfGqs^=?q! zYg$H$^}dkrtnYoa6Cx96$IRz-G zqu%sF3lgl;(azQLW+hBLxEVm5oCR_SnJw=S-cMW|_KGe5Tdo~kVS=o0ohW9dj4Eh2 z8ag`NbBFL{#w9LcaZA%@Eo!b;pWSxp@#E+rCt2=2ds0z8voNYp(^ZN@jSKn)^F6XJ zv#_ye{T}Y#vnMh(HY0STIhsItG(keiG_mLV{7T@2r2+;orl+NS{q}Jm(WFeib=9H2 z0Ld$E{!EZKP^u2VKiiC;lQ+5>wqwHByv_FjUiJSHfX|DJ`8HGxsCoX?>q|>Fo6*|% zv!!{8}cgKW(mwsAgMqa;6mC<$H5My#(zAAtSq&RTAdg8K!RzLO4Mp1TfZpt zVpBwe8@q3gI{A31e5R#fdU8@Php=|6_H>a?E43`PiSD-pQm_V>R$EwF`;B@4uy!zf z3oRLt7x=@yu2fIFqSDXjPC%iht7BMHa*4GIUFDkv2{YqJ?d7lU+JA12msY)S_b$4` z|6Za!f8Kt><8kPLx6Nin{rSD!=&UR4@nv9ZvPkf%`Fhy{ZQxWAt5 zJyq$V5=F6Ub`QYknx-bw%59sod9v3QZt$^}Y=l}XE9d+8yEwYM@|5Qv4QA0Q_mpYZJu5uPx7Y0LpLjwjY} zNca%I)&7l5(bPMw=aC6Vxe}RmA56%QF1C8src#53*)p|ls+3<)OYsJarc6O)= zG+l4-eiEfCO@-a7)LBjxKQ4IFTOeRC(0iUv0*7vlevepa*$;?M-PbhQu-$3-{;MpM z*9ZIZ8VlN~-oGOeK|<$?u_}lHpoJKJPS>=G@W4o$vDx2lIJR2;G6F-8heCQgA6(nV zh3hezQL)H$8J;kjvC?KyCY16R;RA_jKFl&TU=iELRr225s7Gd9-$Y%WlW^;puG>n% zeLB24IUs;6_;m~GTfa6)ABJ#ctNX~B;CMBHzX~?gj|%XqcsvDFFgIw+7LJHhY)?C` zK0PyIIFBmN_8`VKI?1{Xz1yW7cSaK$Tb?yrbw+KcOHL6>SmqVQOT$z@K2H9>(UetV z=jH8W&XVg?%;6q4M0%6r^zU!eI^Wi-yya-!uuJsbkYEyc)J2ahT( zG6`hA^L7Ea{1SBnmVo#tS?P{7zJP( zNmreH+Pn)?OO@9?YjP5q&9C>59u3Jd?L006qx4>$MrN6t3ivKO2cqLHBBFuQipd1! zv4z}P%upzTfCpWiwzP-A)6>%idRLR)T)c!#^_J3pp$vKTv4*yGr`pU&Q)g$byIkj( z8+JZXNuF<4^3c%GLAwU+fR7(5Z{>*o@?EAZ9<8D0xs+EJ2sL}JZLF)W7ZnmxbscF5 zfAr`Pe`!s>cJmR~Zz_&eZu<^$r=bCYqnQ4A#ldkhIeu~7u_d2wd}PcivN%u>g1Qb~ z?h97ITk@h>=;hLWHC43=3qnS^Mi?xm5!`xzB*Lt73!z_9Qwr@{Avr!XXL%BV=3q#N zc06jSuM>uPw|%R?Zr@v#H3{;=SWRthO4-aPQe)eB>QXapwrEYpw7Yf)fiMyoFs0r951Q>75*|2p^{Y$y$6Ru zpW2(AzUu7jF)Fj|*o@D9gSpxt;k{#e1EZR)3}GmaB<^*6PvtGU3e1wok-W%@(91arJDFuSAg9nYzlD@GtrQfE5#v8GYp+*&2@`JgVj(@^1+UfMjSf ze~=nN1qBZ%5Z%blDA5jvnJ+du%-bkUPhJu+Nc&CMwD2;Nw3}y3mcpet0v3JR%<(VP zs{Y9jdrs(#*H`&a$ePvwAA~`~-`iX(Wj&|GBQX&@Iz_V&*pAO6DKJlo0;VH-FR1_q ztC;sqU{vpV{=BCophn(vJPnwfhY! zf`MTd!KX%rW-ma=_)&Ss;u_uVT>Vx@T9FlnixRMMW_y5N(eB*^E$v9?+YJY85^S+# z8@4%!Vp(cTWtmD-0R)0u@p5{jR6_pLV=wuWnWZ(?U4GtLIz6LgCX+{fb>tF@;W;qs z2^{Z}#Ltsc?Jr7ayyTC+EZwOh0`kJuKe_Pq{ARY}4FJsEmDj$kh(nGVI<}r{{$$SI z>tBBe0srB^k2<^7Y4#r~!s9wC@`xwAJEBBL^I`4t0jYIHUF!BTeBe*Dhu3q|gYN|d z`-$E(IY$4q2!=y)@J1%}iw|*1PJWA{0$c-o5 z!YME~3Byd)#lsDn8Z6y2-4+!aD}p%xde5gXspp(WXFRl=E$26haWp(i^G{+E-?92X z)VzQ2ZT=SrrVpPyt;flZ5U>Dc{h2;nnFZ`HmC!HabPxb&vkMP*?$6B%A3zSid7z!W z4-omI=7agvs6pz%k zZ~Im~#${Nyi6x+ymsd>}T;6sdg}O9{f_6Nk{EM5aI;sc&P)T=Jm$Pq-Mw_qBdl92Y z{8r8!*^0Qz1$tgunxLwx+GwfnKc?-1(Cc?Oyx(6fm`_^IN$+KtVVKnNy`5yhp?^`e zqsI$rM(DLp(2O9xfc7-jgsG798_|NlHng_t(k#cad&pQ304&dssYyD#J#|RM`Dm{^ zQv{_`<-^j0`vT6#uKlx6o&x|W*rTYLyZ2^m0|F{1VxVW{ENc(Yp8hqbkp6v28W;;N zq`rPTdTk8LnxGEw*n?Ex5m@HhReec~^R==ZaX99|W%?>w_y5o?sIu&XxzlH>D_iIw z`V7(OIn^6~8d+fe8s_WEP6h?ap}$-kEF58JtOGLRi*pPkdBI=9jLO}9v!GKgM_cjH zg24eZVq%t+dZ1IejV9dU+2y4b#toH*v$rMy<3Kb*g+pg4$l3n2Zx3{DK)h;R=w-HZ z?budnzRn7l`j|-|Fd$a>-ZeE$_&}%{LDMo2D-rD|c zfJ#|=c41?Lqb>>*j7%RA)o8KWhh;F@f-2sA@US{ZDI#M#jW_S$??~J7Wq5cvGF_+k zv?O-ODM4{DF423$bo+kgi(;{lM!mF9%X0oJ_tziemo_IRvO@)hYZIU6$TexwWI6}~ zh`Qf@$BsiuXN=-lCV!kTMbq-Loajpz>n$E0@8gv?{*~&t+?8v4V>Q)A-^ zFhB{!mDp22DHK$v%QzaK(XmiyKBhkYkwEJA!aaexa}iMTVJIlO5*;JAZ#9f;jAXrj zBp?ihQ^>=!Z|^@|nyX-P@8!#eh9%p^+5H+?S{#h494lj)n8?45yuXx=PE_!4@5@}= z$}0kp$GY{cOMT5CTSqbOx2mizg8TY$++3E&OGXlN0&yweC7svDwwr`8SW}aib70mxNb5uJPhFAcu-x+ zGlO){Al;!QfI0<8?JJZWl@?xY3`>jDA;?c2@4zl0=2mybi|1fQID z(bAm1_JMBS6gVnomTxe{EB?;0gbu?z&^6BC{XU~&(1bNc^z298J2Bo=@vNjf*Nmhi z;nt?W)YgZq=f5&`0tqF3m^Z%CIEieC5lWrXfIv(^y%}sr~K(&Ta~*Dj)>kW>19EIT5^Q-9OWU&{xATbQJIw2 zmqbhR3NrUQ)>7MfOtTk{+uO>B*>;T1mbPo@bTnbho+P;sWY)wz?_7YX#cM8pa#_aY zClja4jFl|t92=&32e<|(1*)z}OYdsYWmvNR(jqUJ*`^OI%M=LpxAIN8^0e)!+b4pe z#VMcDQN~)pg}TNb?C>Vy0@MxKQ&chY{;(1a_4W0P8^AZ$mLS>`poyG{XUqo^BBsRR z-lOeQf*rL?Tuj4Y>{&-1m7kwqWROXM!^mtseNe;U&BIscac7Kk^v4;0F4KjrSV^h zKFgxhADkJz0p}$=$8w<*9w~k(rN7D>>U%~fbmF_9!k!JFf$OBH0emLJQM;CJFGMW* zB${OB{*$KDUXy75oDt*7*U8?v*{MkE9tkh;QQe=y6<{U|p=6;q%C&z427Gj{-ACkhOk zHw!;L$IZI`(-7fBxcN@qk&Pd@YIZI*S3BZmwC5vA}dc-p>YhKB4@@DD6^XJqfRZjAs@@YkU;+xPhn zn?0p+*lJR8EhWcCM$EF{3dC;7<$H1THcwahOj?%)!cAjRCTJQRKag{Mh6z0>nsrp-GtYm$EE+SZk_X{IZysY%{r<+gt` za1qDDuj}l2%1&Exa%LhHBm9~4Jcz}g&81ruV;j-548L_{Cd;Hh0omlGNCiO;- zn)|>13a*x9IoDC_+TD9p{4X3wQ4{e3r^?N&R#J!A=UrX<&$)rxp&G)>EdO&s$o8F?&ub|GZC4?LTn>wfh(8rnS30PSa-daTnkn4kGv?uw zF&|fKPf>FnE$d%iTpW9`wqk}05g_ndj%S0|wUX`(x>9c_=m-P-q%kNXRCSlsKt;ox z0egp|;<=A?>02`TQ^A7YKPv|^j8L6s81%7+Yz;odnrOtr6R z{%A{Ce|@3?!FkU>S1eN0sKoJ*-}G2)+&jooJVLoy*<9FP~QIfCiDY$D#1J_Rtr4>LGl9xcU=C4=rSlQPj1Y7C+<|EGl!V zbzt0cM%g+#OFaX~Plq2Fim#*0xk6c%i|r5Xrzdd#rA%A@+KH1x1?r^1{8L!NIALE>K+^#T@-AYoDj8v9O^Q z-qn5z9AO;_4v~OeCI^qjPL2pN7FL3^mOYphvqOnEQhur>>WG9yf}D>rJ`a;qrx{&V zn0pW+Zz*3_fMT!1A$j-ih5`SIiF~G(zpiUPK3!bGqoZj5xn>cto%N+Wt;p$edHcK2 z&{$H^XZ92I(y22vi?M7duG1gzR`l8Xfyl5Z{#~FLVRsMqxYHrGL~#6%&?(k5H{!`r z0wS|6(4pmoPi0D5D$~+3i1&TxjZo$5BV+IuT-+sVnX_aMU$$z7Pa!<~`YWuQc7La-{1XA@pT)O-JtF=; zdc{ArVBA|@)S9I=S+ubdkH!DyBL?j3VCTq#H0|7rQ-U$`v)$kz2gyu$z6w+cE} zBMM);R6Cz@fBsYR+5f+@%)fHkp9*K@WcHs8M1P%@uRo7p#K6XS<)?j#p^LXo}cVOk2mG>@3M z$>WBG7sY4lC!Tj6v<#Bnia7a8rBYQygyRXsimHx!bO&R4Znm)?Sk5Cfeq;d+kmLN_ ztNA8BBOE_R6jVvRJ6O@m`s4Axo!J{cNIiGdzw;Ey6rzbe<=2Q$i8(nW zJ0nsQqZ$e(oFh=dSQ`<+@q^9C$xOufJ?a28w>xD~V9H4+T+8>yQ|KR$Vo2vuveN}x zJ7Ln+NVy8I=IV``>66b>Cq&K+OiAp7S7Kr8ls~P+l3zM*oRXC=Fgz67>_J!5^le_+ zo^4hUrLnMV{n41D@Kp-C)7x?^?)Dm1Nd_M9X@HaH2V?x2kHZE&U-m8=YQ|(`t|&NOrG9 zM~d*or}Nibuak6ZL--Z=J~kG^q)pvW6Fyb+G);8FRd_zO>(dsog|8r5Q)+W9jv7V^4XyrAW(dP%3>mRf-23)@>X~qpA9j+R z{dP{*uA?`c$fgFa(D^*<Q+af4`RHx4!g< zh$hf=jespcU;W7@f3TjkK_N&;eZY4)0gw*&EaALIDx+-IUi4+C>{E*N7p^_tEt_FisAkz2VK#QnNH?A)ij0D-3!iPCT=hUBIM%h#U1!ibiTL0>1 z>~z=IpRRMriVsAhB=ExV7bl_wok zCxT;M^!~*5UUC`DQ}OWV|D^KzfWz9Jpyz%zrF_zF%-CjGwzgCyHuhNs57D&5;!FKg z17{T#8gfEsagnEUgxD*nes{wLzH=_6&{L56I_GjDKp?iayA*bz?cnn4upAp!Sv(x$Dvb~D8eFN!(XdQh9sdIwrYSZTF!RV9FZ-0YLPxUdCA zUl=u^!%%T*qwqtek%QES(OiL5Dyz9bCA?Si)sV?6n5FBZ;^3>*2oo_rDFI5BP!p>3 zjsAmaPuk1Y53cLhksmb1-@g#eK_}M?d=;n3&onAQ4D5YdyOV7Q!=Ks#F$3t2(c+jF z2;inK6_;D(0m|M^(5>LVGS0wU0gpH?f~ zHdIVS&_$Vzea>nba@EL@NWcK44lrxaNTH^O2vv8}VsQGA294+bogs*E^$DkdUbo`8CwFoBx)CRx%|KN#{!=;&W5_A0Ts|p+Z!opT+}uN>9re zH_&j2a(JKbGbCA0JqpD)t{(|$zen5@8u_du(RUDv0&4MqAO79^`#pueUgly4E;&SB z@E>RUK~OlURM(&S{DjWfUjGlVM~ruEKrF0Hs>mDY;xFTH3GiHmx~k5vc^9t+{u^h5 BXYv35 literal 0 HcmV?d00001 diff --git a/captures/listedesarchives.png b/captures/listedesarchives.png new file mode 100644 index 0000000000000000000000000000000000000000..6e7a796b4ecb74733d63df389437f00f3baceabf GIT binary patch literal 22172 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 literal 0 HcmV?d00001 diff --git a/captures/selecteurdeprofils.png b/captures/selecteurdeprofils.png new file mode 100644 index 0000000000000000000000000000000000000000..4d6eb8020dca58653c6834bf3b2766f487b91f88 GIT binary patch literal 23514 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 Date: Sat, 7 Aug 2021 11:42:57 +0200 Subject: [PATCH 60/77] =?UTF-8?q?ajout=20des=20ic=C3=B4nes?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- borgzenity-profils.svg | 105 ++++++++++++++++++++++++++++++++++++++ borgzenity-sauvegarde.svg | 93 +++++++++++++++++++++++++++++++++ 2 files changed, 198 insertions(+) create mode 100644 borgzenity-profils.svg create mode 100644 borgzenity-sauvegarde.svg diff --git a/borgzenity-profils.svg b/borgzenity-profils.svg new file mode 100644 index 0000000..9ca1fff --- /dev/null +++ b/borgzenity-profils.svg @@ -0,0 +1,105 @@ + + + + + + + + image/svg+xml + + + + + + + + + + + + + + + + + diff --git a/borgzenity-sauvegarde.svg b/borgzenity-sauvegarde.svg new file mode 100644 index 0000000..122c506 --- /dev/null +++ b/borgzenity-sauvegarde.svg @@ -0,0 +1,93 @@ + + + + + + + + image/svg+xml + + + + + + + + + + + + + + + From 903fef08b58c4d6cc1804b0ab49c046c65924d02 Mon Sep 17 00:00:00 2001 From: Djan GICQUEL <> Date: Sat, 7 Aug 2021 11:44:49 +0200 Subject: [PATCH 61/77] =?UTF-8?q?changement=20des=20ic=C3=B4nes?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- gestprofilsborgzenity.desktop | 2 +- install.sh | 2 ++ sauvegarde-borg.desktop | 2 +- 3 files changed, 4 insertions(+), 2 deletions(-) diff --git a/gestprofilsborgzenity.desktop b/gestprofilsborgzenity.desktop index 13d7aad..53f8f40 100644 --- a/gestprofilsborgzenity.desktop +++ b/gestprofilsborgzenity.desktop @@ -1,6 +1,6 @@ [Desktop Entry] Name=Borg Zenity Profils Exec=bin/profile-manager.sh -Icon=borg +Icon=borgzenity-profils Type=Application Categories=Utility; diff --git a/install.sh b/install.sh index 1eee5ac..045b603 100644 --- a/install.sh +++ b/install.sh @@ -17,6 +17,8 @@ mkdir -p $HOME/bin/ $HOME/.icons/ $HOME/.local/share/applications/ # copie des fichiers cp -fv borg-gui.sh $HOME/bin/ cp -fv borg.svg $HOME/.icons/ +cp -fv borgzenity-profils.svg $HOME/.icons/ +cp -fv borgzenity-sauvegarde.svg $HOME/.icons/ cp -fv sauvegarde-borg.desktop $HOME/.local/share/applications/ cp -fv gestprofilsborgzenity.desktop $HOME/.local/share/applications/ cp -fv profile-manager.sh $HOME/bin/ diff --git a/sauvegarde-borg.desktop b/sauvegarde-borg.desktop index ac91e49..916517e 100644 --- a/sauvegarde-borg.desktop +++ b/sauvegarde-borg.desktop @@ -1,6 +1,6 @@ [Desktop Entry] Name=Borg Zenity Sauvegarde Exec=bin/borg-gui.sh -Icon=borg +Icon=borgzenity-sauvegarde Type=Application Categories=Utility; From 4be772928d5cc60d8de28b91b1c261fc6b3cd47c Mon Sep 17 00:00:00 2001 From: Djan GICQUEL <> Date: Sat, 7 Aug 2021 14:05:54 +0200 Subject: [PATCH 62/77] =?UTF-8?q?v=C3=A9rification=20de=20la=20liste=20des?= =?UTF-8?q?=20archives=20avant=20de=20lancer=20la=20sauvegarde?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- borg-gui.sh | 16 +++++++++++----- 1 file changed, 11 insertions(+), 5 deletions(-) diff --git a/borg-gui.sh b/borg-gui.sh index 3254790..93148a2 100755 --- a/borg-gui.sh +++ b/borg-gui.sh @@ -138,13 +138,19 @@ qu\nQUITTER\ DossierPresent $borg_repo DossierPresent $borg_dir - if [ "$VarDossierPresent" != "false" ];then - borg create $borg_excludes $borg_compress $borg_repo::$borg_archive $borg_dir | ZenityPulsate - sync | ZenityPulsate - zenity --notification --text "Sauvegarde $nomsauvegarde terminée" - zenity $W --info --text "Sauvegarde $nomsauvegarde terminée" + borg list --short $borg_repo | grep $borg_archive + if [ "$?" = "0" ];then + zenity --warning $W $iconborg --text "L'archive existe déjà." + else + if [ "$VarDossierPresent" != "false" ];then + borg create $borg_excludes $borg_compress $borg_repo::$borg_archive $borg_dir | ZenityPulsate + sync | ZenityPulsate + zenity --notification --text "Sauvegarde $nomsauvegarde terminée" + zenity $W --info --text "Sauvegarde $nomsauvegarde terminée" + fi fi + elif [ "$choixmenu" = "ms" ];then # Monter une archive BorgFilter From b2edba66472b8c87e8a1b43e9272674163c038f7 Mon Sep 17 00:00:00 2001 From: Djan GICQUEL <> Date: Sat, 7 Aug 2021 14:51:44 +0200 Subject: [PATCH 63/77] =?UTF-8?q?vectorisation=20des=20ic=C3=B4nes?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- borgzenity-profils.svg | 25 +++++++++++-------------- borgzenity-sauvegarde.svg | 26 ++++++++++---------------- 2 files changed, 21 insertions(+), 30 deletions(-) diff --git a/borgzenity-profils.svg b/borgzenity-profils.svg index 9ca1fff..6d55fac 100644 --- a/borgzenity-profils.svg +++ b/borgzenity-profils.svg @@ -42,9 +42,9 @@ showgrid="false" units="px" inkscape:zoom="2.2238918" - inkscape:cx="41.59375" - inkscape:cy="117.58666" - inkscape:current-layer="svg9" + inkscape:cx="95.55321" + inkscape:cy="119.83497" + inkscape:current-layer="text9172" inkscape:pagecheckerboard="0" /> @@ -91,15 +91,12 @@ dy="0" rotate="0 0" style="fill:#ffffff;fill-opacity:1;stroke-width:7.21301px"> - + + + diff --git a/borgzenity-sauvegarde.svg b/borgzenity-sauvegarde.svg index 122c506..f4ce679 100644 --- a/borgzenity-sauvegarde.svg +++ b/borgzenity-sauvegarde.svg @@ -41,9 +41,9 @@ showgrid="false" units="px" inkscape:zoom="2.2238918" - inkscape:cx="88.808277" + inkscape:cx="173.11993" inkscape:cy="120.28463" - inkscape:current-layer="svg9" + inkscape:current-layer="text1157" inkscape:pagecheckerboard="0" /> @@ -76,18 +76,12 @@ id="p4" d="m 177.56291,28.49651 h -7.09583 v -9.593903 h 13.5038 l 9.5939,9.593903 v 32.655399 l -9.5939,9.66633 h -21.10651 l -4.81507,-4.85127 v -3.54788 h 19.51361 z m -2.5342,19.875619 v 4.23583 l -4.77885,4.74263 h -8.72502 l -9.59391,-9.59391 V 28.49651 l 9.59391,-9.593903 h 6.40796 v 29.469522 z" /> - + + + From 013675884199ca2be9d88b0732b5c4b6ace35830 Mon Sep 17 00:00:00 2001 From: Djan GICQUEL <> Date: Sat, 7 Aug 2021 14:58:03 +0200 Subject: [PATCH 64/77] =?UTF-8?q?mise=20=C3=A0=20jour=20du=20readme=20supp?= =?UTF-8?q?ression=20d'une=20ligne=20vide=20dans=20le=20gestionnaire=20de?= =?UTF-8?q?=20profils?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- profile-manager.sh | 2 +- readme.md | 7 ++----- 2 files changed, 3 insertions(+), 6 deletions(-) diff --git a/profile-manager.sh b/profile-manager.sh index cfca38c..702e412 100644 --- a/profile-manager.sh +++ b/profile-manager.sh @@ -14,7 +14,7 @@ cd $dossierprofil choixmenu=$(echo -e "\ cp\nCréer un nouveau profil/dépôt\n\ -ap\nAfficher les profils\n\ +ap\nAfficher les profils\ " | zenity $H $W --window-icon=$HOME/.icons/borg.svg --list \ --column "id" --column "choix") diff --git a/readme.md b/readme.md index fc36a6f..c9e35f2 100644 --- a/readme.md +++ b/readme.md @@ -14,12 +14,9 @@ wget -O borg-zenity.zip https://git.djan-gicquel.fr/borg-zenity/zipball/dev && u ``` Cette commande va télécharger les fichiers d'installation et exécuter le script d'installation. -Vous devrez entrer votre mot de passe administrateur et répondre oui ou Y lorsque le gestionnaire de paquet de votre distribution vous demandera d'installer les paquets `borgbackup` et `zenity`. +Vous devrez entrer votre mot de passe administrateur et répondre oui ou Y ou YES lorsque le gestionnaire de paquet de votre distribution vous demandera d'installer les paquets `borgbackup` et `zenity`. -Une fois l’installation terminée taper ceci sans fermer votre terminal pour nettoyer les fichiers d’installation. -``` -rm borg-zenity.zip && rm -r borg-zenity -``` +Une fois l’installation terminée vous pouvez supprimmer le fichier `borg-zenity.zip` et le dossier `borg-zenity`. ## Gestionnaire de profils From ea0dd3f70d60b49b0a4ee3442135dd12b055fe67 Mon Sep 17 00:00:00 2001 From: Djan GICQUEL <> Date: Sun, 8 Aug 2021 09:41:42 +0200 Subject: [PATCH 65/77] =?UTF-8?q?ajout=20des=20ic=C3=B4nes=20dans=20le=20r?= =?UTF-8?q?eadme?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- readme.md | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/readme.md b/readme.md index c9e35f2..f14b766 100644 --- a/readme.md +++ b/readme.md @@ -19,7 +19,7 @@ Vous devrez entrer votre mot de passe administrateur et répondre oui ou Y ou YE Une fois l’installation terminée vous pouvez supprimmer le fichier `borg-zenity.zip` et le dossier `borg-zenity`. ## Gestionnaire de profils - +![icône gestionnaire de profils](https://git.djan-gicquel.fr/borg-zenity/blob/dev/borgzenity-profils.svg) Si vous n'utilisez pas encore `borgbackup` (ce qui normalement est le cas), il faudra tout d'abord créer un profil de sauvegarde. Pour cela utiliser l’icône "Borg Zenity Profils" dans votre menu principal et sélectionnez «Créer un nouveau profil/dépôt». Sélectionnez le dossier dans lequel sera créé le dépôt. C'est l'emplacement de votre sauvegarde, en général on utilise un disque dur externe. @@ -31,6 +31,7 @@ Pour supprimer un dépôt, rendez-vous dans le dossier du dépôt, ouvrez un ter ## Interface principale +![icône interface principale](https://git.djan-gicquel.fr/borg-zenity/blob/dev/borgzenity-sauvegarde.svg) Pour lancer l'interface principale cliquez sur l'icône «Borg Zenity Sauvegarde» dans le menu et sélectionnez le profil voulu. En vocabulaire borg, une archive est une sauvegarde. From 50239def2c5ca6ad36f54fbe5425db5eaf4e8875 Mon Sep 17 00:00:00 2001 From: Djan GICQUEL <> Date: Sun, 8 Aug 2021 09:49:28 +0200 Subject: [PATCH 66/77] =?UTF-8?q?ajout=20des=20ic=C3=B4nes=20de=20menu?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- captures/icone_profils.png | Bin 0 -> 10850 bytes captures/icone_sauvegarde.png | Bin 0 -> 3586 bytes 2 files changed, 0 insertions(+), 0 deletions(-) create mode 100644 captures/icone_profils.png create mode 100644 captures/icone_sauvegarde.png diff --git a/captures/icone_profils.png b/captures/icone_profils.png new file mode 100644 index 0000000000000000000000000000000000000000..030aeb7d6cba2c3458dbd402e1a56cb70014734e GIT binary patch literal 10850 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 IM6N<$g4Lt(ZvX%Q literal 0 HcmV?d00001 From 6a042fd2e6786fbba534c73c40670af6904da308 Mon Sep 17 00:00:00 2001 From: Djan GICQUEL <> Date: Sun, 8 Aug 2021 09:50:33 +0200 Subject: [PATCH 67/77] =?UTF-8?q?correction=20des=20ic=C3=B4nes=20au=20for?= =?UTF-8?q?mat=20png?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- readme.md | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) diff --git a/readme.md b/readme.md index f14b766..298a602 100644 --- a/readme.md +++ b/readme.md @@ -19,7 +19,8 @@ Vous devrez entrer votre mot de passe administrateur et répondre oui ou Y ou YE Une fois l’installation terminée vous pouvez supprimmer le fichier `borg-zenity.zip` et le dossier `borg-zenity`. ## Gestionnaire de profils -![icône gestionnaire de profils](https://git.djan-gicquel.fr/borg-zenity/blob/dev/borgzenity-profils.svg) +![icône gestionnaire de profils](https://git.djan-gicquel.fr/borg-zenity/raw/dev/captures/icone_profils.png) + Si vous n'utilisez pas encore `borgbackup` (ce qui normalement est le cas), il faudra tout d'abord créer un profil de sauvegarde. Pour cela utiliser l’icône "Borg Zenity Profils" dans votre menu principal et sélectionnez «Créer un nouveau profil/dépôt». Sélectionnez le dossier dans lequel sera créé le dépôt. C'est l'emplacement de votre sauvegarde, en général on utilise un disque dur externe. @@ -31,7 +32,8 @@ Pour supprimer un dépôt, rendez-vous dans le dossier du dépôt, ouvrez un ter ## Interface principale -![icône interface principale](https://git.djan-gicquel.fr/borg-zenity/blob/dev/borgzenity-sauvegarde.svg) +![icône interface principale](https://git.djan-gicquel.fr/borg-zenity/raw/dev/captures/icone_sauvegarde.png) + Pour lancer l'interface principale cliquez sur l'icône «Borg Zenity Sauvegarde» dans le menu et sélectionnez le profil voulu. En vocabulaire borg, une archive est une sauvegarde. From ad81d066db71d28dbced3e21e76793549b7068f1 Mon Sep 17 00:00:00 2001 From: Djan GICQUEL <> Date: Tue, 10 Aug 2021 11:18:00 +0200 Subject: [PATCH 68/77] =?UTF-8?q?ajout=20d'un=20texte=20=C3=A0=20la=20fin?= =?UTF-8?q?=20de=20l'installation?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- install.sh | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/install.sh b/install.sh index 045b603..f957669 100644 --- a/install.sh +++ b/install.sh @@ -25,4 +25,7 @@ cp -fv profile-manager.sh $HOME/bin/ # réglages des droits chmod 700 $HOME/bin/borg-gui.sh -chmod 700 $HOME/bin/profile-manager.sh \ No newline at end of file +chmod 700 $HOME/bin/profile-manager.sh + +echo "--------------------" +echo "Installation terminée." From 9561d05a84d363cad005526d45788b58caa4c459 Mon Sep 17 00:00:00 2001 From: Djan GICQUEL <> Date: Wed, 11 Aug 2021 13:31:23 +0200 Subject: [PATCH 69/77] =?UTF-8?q?correction=20de=20bug,=20le=20nom=20de=20?= =?UTF-8?q?l'archive=20=C3=A0=20sauver=20ne=20change=20plus=20lors=20de=20?= =?UTF-8?q?l'utilisation=20des=20menus?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- borg-gui.sh | 22 +++++++++++----------- 1 file changed, 11 insertions(+), 11 deletions(-) diff --git a/borg-gui.sh b/borg-gui.sh index 93148a2..eb8e721 100755 --- a/borg-gui.sh +++ b/borg-gui.sh @@ -66,9 +66,9 @@ ZenityPulsate () { BorgFilter () { if [ "$filter" = "" ];then - borg_archive=$(borg list --short $borg_repo | zenity $H $iconborg --list --title "Listes des archives" --column "Archive") + Borg_Archive=$(borg list --short $borg_repo | zenity $H $iconborg --list --title "Listes des archives" --column "Archive") else - borg_archive=$(borg list --short $borg_repo| grep $filter | zenity $H $iconborg --list --title "Listes des archives" --column "Archive") + Borg_Archive=$(borg list --short $borg_repo| grep $filter | zenity $H $iconborg --list --title "Listes des archives" --column "Archive") fi } @@ -154,10 +154,10 @@ qu\nQUITTER\ elif [ "$choixmenu" = "ms" ];then # Monter une archive BorgFilter - if [ ! "$borg_archive" = "" ];then - mkdir $HOME/$borg_archive - borg mount $borg_repo::$borg_archive $HOME/$borg_archive | ZenityPulsate - zenity $W --info --text="La sauvegarde est disponible dans le dossier\n$HOME/$borg_archive" + if [ ! "$Borg_Archive" = "" ];then + mkdir $HOME/$Borg_Archive + borg mount $borg_repo::$Borg_Archive $HOME/$Borg_Archive | ZenityPulsate + zenity $W --info --text="La sauvegarde est disponible dans le dossier\n$HOME/$Borg_Archive" fi elif [ "$choixmenu" = "dm" ];then @@ -172,21 +172,21 @@ qu\nQUITTER\ elif [ "$choixmenu" = "ss" ];then # Supprimmer une archive BorgFilter - if [ "$borg_archive" = "" ];then + if [ "$Borg_Archive" = "" ];then zenity $W --info --text "Aucune archive choisie, retour au menu" else - borg delete $borg_repo::$borg_archive | ZenityPulsate - zenity $W --info --text="Suppresion de l'archive $borg_archive terminée" + borg delete $borg_repo::$Borg_Archive | ZenityPulsate + zenity $W --info --text="Suppresion de l'archive $Borg_Archive terminée" fi elif [ "$choixmenu" = "is" ];then # Information archive BorgFilter - if [ "$borg_archive" = "" ];then + if [ "$Borg_Archive" = "" ];then zenity $W --info --text "Aucune archive choisie, retour au menu" else - zenity $W --info --text="$(borg info $borg_repo::$borg_archive)" | ZenityPulsate + zenity $W --info --text="$(borg info $borg_repo::$Borg_Archive)" | ZenityPulsate fi elif [ "$choixmenu" = "fi" ];then From 5e32b11cdeee18bef6045b894c4be10ce3be6c8a Mon Sep 17 00:00:00 2001 From: Djan GICQUEL <> Date: Sun, 14 Nov 2021 16:39:43 +0100 Subject: [PATCH 70/77] =?UTF-8?q?modification=20du=20menu=20:=20l'entr?= =?UTF-8?q?=C3=A9e=20de=20menu=20=C2=ABD=C3=A9monter=20une=20archive=C2=BB?= =?UTF-8?q?=20est=20cach=C3=A9=20s'il=20n'y=20a=20aucune=20archive=20?= =?UTF-8?q?=C3=A0=20d=C3=A9monter?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- borg-gui.sh | 12 +++++++++++- 1 file changed, 11 insertions(+), 1 deletion(-) diff --git a/borg-gui.sh b/borg-gui.sh index eb8e721..7675e40 100755 --- a/borg-gui.sh +++ b/borg-gui.sh @@ -111,10 +111,18 @@ TestBorgRepo ################################################################################# while [ ! "$choixmenu" = "qu" ];do + +# si aucune archive n'est montée, cacher l'entrée de menu «Démonter une archive» +if [ "$(mount | grep borgfs)" != "" ];then +MenuDemonter="dm\nDemonter une archive\n" +else +MenuDemonter="" +fi + choixmenu=$(echo -e "\ cs\nCréer l'archive : $(echo $borg_archive)\n\ ms\nMonter une archive\n\ -dm\nDemonter une archive\n\ +$(echo $MenuDemonter)\ ss\nSupprimmer une archive\n\ is\nInformation archive\n\ fi\nFiltre : "$filter"\n\ @@ -127,6 +135,7 @@ qu\nQUITTER\ " | zenity $iconborg --list $H $W --title "BORG GUI : $nomsauvegarde" \ --hide-header --hide-column=1 --column "id" --column "choix") + if [ "$choixmenu" = "" ];then echo "" @@ -169,6 +178,7 @@ qu\nQUITTER\ rmdir $ptnmontage | ZenityPulsate fi + elif [ "$choixmenu" = "ss" ];then # Supprimmer une archive BorgFilter From 3c055025af63f66402edc4304aa9c9ec84e04f31 Mon Sep 17 00:00:00 2001 From: Djan GICQUEL <> Date: Sun, 14 Nov 2021 20:04:58 +0100 Subject: [PATCH 71/77] =?UTF-8?q?Modification=20du=20menu=20ne=20pas=20aut?= =?UTF-8?q?oriser=20=C3=A0=20quitter=20si=20des=20archives=20sont=20toujou?= =?UTF-8?q?rs=20mont=C3=A9es?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- borg-gui.sh | 10 +++++++++- 1 file changed, 9 insertions(+), 1 deletion(-) diff --git a/borg-gui.sh b/borg-gui.sh index 7675e40..5bcded5 100755 --- a/borg-gui.sh +++ b/borg-gui.sh @@ -110,7 +110,7 @@ TestBorgRepo # MENU PRINCIPAL Gestion des options du menu ################################################################################# -while [ ! "$choixmenu" = "qu" ];do +while [ ! "$quitter" = "yes" ];do # si aucune archive n'est montée, cacher l'entrée de menu «Démonter une archive» if [ "$(mount | grep borgfs)" != "" ];then @@ -211,5 +211,13 @@ qu\nQUITTER\ # Afficher le profil zenity $W $H --info --text="$(cd $dossierprofil && cat "$fichierprofil".conf)" + + elif [ "$choixmenu" = "qu" ];then + if [ "$(mount | grep borgfs)" = "" ];then + quitter="yes" + else + zenity $W --warning --text="Une ou des archives sont montées.\nDémontez-le afin de laisser le dépôt dans un état cohérent." + fi + fi done From 94e68f3a94feb95513e4def442ab9acb74a5e229 Mon Sep 17 00:00:00 2001 From: Djan GICQUEL <> Date: Thu, 3 Feb 2022 22:17:46 +0100 Subject: [PATCH 72/77] =?UTF-8?q?ajout=20d'une=20entr=C3=A9e=20de=20menu?= =?UTF-8?q?=20"d=C3=A9monter=20toutes=20les=20archives"?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- borg-gui.sh | 10 +++++++++- 1 file changed, 9 insertions(+), 1 deletion(-) diff --git a/borg-gui.sh b/borg-gui.sh index 5bcded5..388ab88 100755 --- a/borg-gui.sh +++ b/borg-gui.sh @@ -114,7 +114,7 @@ while [ ! "$quitter" = "yes" ];do # si aucune archive n'est montée, cacher l'entrée de menu «Démonter une archive» if [ "$(mount | grep borgfs)" != "" ];then -MenuDemonter="dm\nDemonter une archive\n" +MenuDemonter="dm\nDemonter une archive\ndmt\nDémonter toutes les archives\n" else MenuDemonter="" fi @@ -178,6 +178,14 @@ qu\nQUITTER\ rmdir $ptnmontage | ZenityPulsate fi + elif [ "$choixmenu" = "dmt" ];then + # Demonter toutes les archives + while [ $(mount | grep borgfs | cut -d" " -f3 | head -n 1) ];do + ptnmontage="$(mount | grep borgfs | cut -d" " -f3 | head -n 1)" + notify-send -i $HOME/.icons/borg.svg "borg-zenity" "Démontage de $ptnmontage" + fusermount -uz $ptnmontage && sleep 2 && rmdir $ptnmontage + done + elif [ "$choixmenu" = "ss" ];then # Supprimmer une archive From 1ed5e66495a37ca0e8fd72233c8cac0b7ab576c4 Mon Sep 17 00:00:00 2001 From: Djan GICQUEL <> Date: Thu, 10 Feb 2022 19:45:47 +0100 Subject: [PATCH 73/77] afficher l'espace disque sous condition --- borg-gui.sh | 11 ++++++++++- 1 file changed, 10 insertions(+), 1 deletion(-) diff --git a/borg-gui.sh b/borg-gui.sh index 388ab88..7b80cb6 100755 --- a/borg-gui.sh +++ b/borg-gui.sh @@ -119,6 +119,15 @@ else MenuDemonter="" fi +# afficher l'espace disque sous condition +EspaceDisqueUtil=$(df -k --output=pcent $borg_repo | tail -n +2 | cut -d% -f1) +if [ $EspaceDisqueUtil -gt 60 ];then +MenuEspaceDisque="ed\n/!\ Espace disque utilisé : $EspaceDisqueUtil %\n" +else +MenuEspaceDisque="" +fi + + choixmenu=$(echo -e "\ cs\nCréer l'archive : $(echo $borg_archive)\n\ ms\nMonter une archive\n\ @@ -130,7 +139,7 @@ fi\nFiltre : "$filter"\n\ id\nInformation sur le dépôt\n\ ap\nAfficher le profil\n\ --\n------------------------------------------\n\ -ed\nEspace disque utilisé : $(df -k --output=pcent $borg_repo | tail -n +2)\n\ +$(echo $MenuEspaceDisque)\ qu\nQUITTER\ " | zenity $iconborg --list $H $W --title "BORG GUI : $nomsauvegarde" \ --hide-header --hide-column=1 --column "id" --column "choix") From 8d65ffea7a7febd4eddc4946d1e245d96f0ece2e Mon Sep 17 00:00:00 2001 From: Djan GICQUEL <> Date: Fri, 11 Feb 2022 21:48:40 +0100 Subject: [PATCH 74/77] =?UTF-8?q?=C3=A9l=C3=A9ment=20de=20menu=20fonctionn?= =?UTF-8?q?el=20:=20suppression=20des=20archives?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- borg-gui.sh | 17 +++++++++++++++++ 1 file changed, 17 insertions(+) diff --git a/borg-gui.sh b/borg-gui.sh index 7b80cb6..1ac5a9a 100755 --- a/borg-gui.sh +++ b/borg-gui.sh @@ -133,6 +133,7 @@ cs\nCréer l'archive : $(echo $borg_archive)\n\ ms\nMonter une archive\n\ $(echo $MenuDemonter)\ ss\nSupprimmer une archive\n\ +sss\nSupprimmer des archives\n\ is\nInformation archive\n\ fi\nFiltre : "$filter"\n\ --\n------------------------------------------\n\ @@ -206,6 +207,22 @@ qu\nQUITTER\ zenity $W --info --text="Suppresion de l'archive $Borg_Archive terminée" fi + elif [ "$choixmenu" = "sss" ];then + # Supprimmer des archives + + if [ "$filter" = "" ];then + Borg_Archive=$(borg list --short $borg_repo | sed s/^/\\n/g | zenity $H $iconborg --list --checklist --title "Listes des archives" --column "Sel" --column "Archive") + else + Borg_Archive=$(borg list --short $borg_repo | grep $filter | sed s/^/S\\n/g | zenity $H $iconborg --list --checklist --title "Listes des archives" --column "S" --column "Archive") + fi + + if [ "$Borg_Archive" = "" ];then + zenity $W --info --text "Aucune archive choisie, retour au menu" + else + borg delete $borg_repo::$(echo "$Borg_Archive" | sed s/\|/\ /g) | ZenityPulsate + zenity $W --info --text="Suppression des archives terminée.\nArchives supprimmées : $(echo "$Borg_Archive" | sed s/\|/\ /g)" + fi + elif [ "$choixmenu" = "is" ];then # Information archive From e4a14978394e8e690a1310a726796d87d8a71410 Mon Sep 17 00:00:00 2001 From: Djan GICQUEL <> Date: Fri, 8 Apr 2022 20:39:17 +0200 Subject: [PATCH 75/77] =?UTF-8?q?d=C3=A9placement=20des=20icons=20dans=20u?= =?UTF-8?q?n=20dossier=20d=C3=A9di=C3=A9?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- borg.svg => icons/borg.svg | 0 borgzenity-profils.svg => icons/borgzenity-profils.svg | 0 borgzenity-sauvegarde.svg => icons/borgzenity-sauvegarde.svg | 0 3 files changed, 0 insertions(+), 0 deletions(-) rename borg.svg => icons/borg.svg (100%) rename borgzenity-profils.svg => icons/borgzenity-profils.svg (100%) rename borgzenity-sauvegarde.svg => icons/borgzenity-sauvegarde.svg (100%) diff --git a/borg.svg b/icons/borg.svg similarity index 100% rename from borg.svg rename to icons/borg.svg diff --git a/borgzenity-profils.svg b/icons/borgzenity-profils.svg similarity index 100% rename from borgzenity-profils.svg rename to icons/borgzenity-profils.svg diff --git a/borgzenity-sauvegarde.svg b/icons/borgzenity-sauvegarde.svg similarity index 100% rename from borgzenity-sauvegarde.svg rename to icons/borgzenity-sauvegarde.svg From 0ae3281ee937ee199bcf36b2abf0d3c08e6fde32 Mon Sep 17 00:00:00 2001 From: Djan GICQUEL <> Date: Fri, 8 Apr 2022 21:10:48 +0200 Subject: [PATCH 76/77] ajout du fichier borg-zenity.conf - menu_avance - seuil_alerte_espace_disque --- borg-zenity.conf | 2 ++ 1 file changed, 2 insertions(+) create mode 100644 borg-zenity.conf diff --git a/borg-zenity.conf b/borg-zenity.conf new file mode 100644 index 0000000..949679b --- /dev/null +++ b/borg-zenity.conf @@ -0,0 +1,2 @@ +menu_avance="false" +seuil_alerte_espace_disque="90" \ No newline at end of file From 3d64d7a119b2d4d99995607ff7065433aa0e17f1 Mon Sep 17 00:00:00 2001 From: Djan GICQUEL <> Date: Fri, 8 Apr 2022 21:11:55 +0200 Subject: [PATCH 77/77] changement du dossier de profil espace disque par variable chemin des icones dans installation --- borg-gui.sh | 40 +++++++++++++++++++++++++++++++++++++--- install.sh | 13 ++++++++----- 2 files changed, 45 insertions(+), 8 deletions(-) diff --git a/borg-gui.sh b/borg-gui.sh index 1ac5a9a..5b6a15e 100755 --- a/borg-gui.sh +++ b/borg-gui.sh @@ -17,7 +17,7 @@ fi ################################################################################# export BORG_UNKNOWN_UNENCRYPTED_REPO_ACCESS_IS_OK=yes export BORG_RELOCATED_REPO_ACCESS_IS_OK=yes -dossierprofil="$HOME/.config/borg/" +dossierprofil="$HOME/.config/borg/profils-borg-zenity/" W="--width=600" H="--height=500" iconborg="--window-icon=$HOME/.icons/borg.svg" @@ -72,8 +72,10 @@ BorgFilter () { fi } +################################################################################# # Profils et tests ################################################################################# + # si $1 n'est pas vide fichier de profil = $1 # sinon afficher les profils disponibles if [ ! $1 = "" ]; then @@ -106,6 +108,16 @@ fi cd $borg_repo TestBorgRepo + +################################################################################# +# Fichier de configuration globale +################################################################################# + +if [ -f $HOME/.config/borg/borg-zenity.conf ];then +. $HOME/.config/borg/borg-zenity.conf +fi + + ################################################################################# # MENU PRINCIPAL Gestion des options du menu ################################################################################# @@ -119,15 +131,19 @@ else MenuDemonter="" fi -# afficher l'espace disque sous condition +# afficher l'espace disque sous condition, la variable vient du fichier borg-zenity.conf EspaceDisqueUtil=$(df -k --output=pcent $borg_repo | tail -n +2 | cut -d% -f1) -if [ $EspaceDisqueUtil -gt 60 ];then +if [ $EspaceDisqueUtil -gt $seuil_alerte_espace_disque ];then MenuEspaceDisque="ed\n/!\ Espace disque utilisé : $EspaceDisqueUtil %\n" else MenuEspaceDisque="" fi +################################################################################# +# Affichage du menu +################################################################################# +if [ $menu_avance = "true" ];then choixmenu=$(echo -e "\ cs\nCréer l'archive : $(echo $borg_archive)\n\ ms\nMonter une archive\n\ @@ -145,6 +161,24 @@ qu\nQUITTER\ " | zenity $iconborg --list $H $W --title "BORG GUI : $nomsauvegarde" \ --hide-header --hide-column=1 --column "id" --column "choix") +else +choixmenu=$(echo -e "\ +cs\nCréer l'archive : $(echo $borg_archive)\n\ +ms\nMonter une archive\n\ +$(echo $MenuDemonter)\ +ss\nSupprimmer une archive\n\ +is\nInformation archive\n\ +$(echo $MenuEspaceDisque)\ +qu\nQUITTER\ +" | zenity $iconborg --list $H $W --title "BORG GUI : $nomsauvegarde" \ +--hide-header --hide-column=1 --column "id" --column "choix") +fi + + + +################################################################################# +# Gestion des choix du menu +################################################################################# if [ "$choixmenu" = "" ];then echo "" diff --git a/install.sh b/install.sh index f957669..97063a4 100644 --- a/install.sh +++ b/install.sh @@ -11,18 +11,21 @@ if [ "$?" != "0" ]; then bash testdistro.sh || exit fi - mkdir -p $HOME/bin/ $HOME/.icons/ $HOME/.local/share/applications/ # copie des fichiers -cp -fv borg-gui.sh $HOME/bin/ -cp -fv borg.svg $HOME/.icons/ -cp -fv borgzenity-profils.svg $HOME/.icons/ -cp -fv borgzenity-sauvegarde.svg $HOME/.icons/ +cp -fv icons/borg.svg $HOME/.icons/ +cp -fv icons/borgzenity-profils.svg $HOME/.icons/ +cp -fv icons/borgzenity-sauvegarde.svg $HOME/.icons/ + cp -fv sauvegarde-borg.desktop $HOME/.local/share/applications/ cp -fv gestprofilsborgzenity.desktop $HOME/.local/share/applications/ + +cp -fv borg-gui.sh $HOME/bin/ cp -fv profile-manager.sh $HOME/bin/ +cp -fv borg-zenity.conf $HOME/.config/borg/ + # réglages des droits chmod 700 $HOME/bin/borg-gui.sh chmod 700 $HOME/bin/profile-manager.sh