commit 5e6ca089667d57c26d87b887f02134b72190d94a Author: Djan GICQUEL <> Date: Sun Mar 7 14:52:30 2021 +0100 version initale de developpement 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