2021-07-27 20:34:58 +02:00
#! /bin/bash
2022-04-13 19:59:58 +02:00
# Fonctions et variables
###########################################################
2022-06-23 17:48:27 +02:00
W = "--width=600"
H = "--height=500"
2022-04-13 19:59:58 +02:00
2021-08-03 16:55:22 +02:00
ZenityPulsate ( ) {
zenity $W --window-icon= $HOME /.icons/borg.svg --progress --pulsate --auto-close
}
2022-04-13 19:59:58 +02:00
TestBorgRepo ( ) {
if [ ! -f "config" ] ; then
TestBorgErr = 1
infoerr = $( echo "Impossible de trouver le fichier de configuration du dépôt." )
zenity $W --error --text= " $infoerr "
exit
fi
if [ ! -d "data" ] ; then
TestBorgErr = 1
infoerr = $( echo "Impossible de trouver le dossier des données du dépôt." )
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 $W --error --text= " $infoerr "
exit
fi
}
2022-04-11 08:19:54 +02:00
dossierprofil = " $HOME /.config/borg/profils-borg-zenity/ "
2022-06-23 17:48:27 +02:00
mkdir -p " $dossierprofil " && cd " $dossierprofil "
2021-08-03 16:55:22 +02:00
2022-04-13 19:59:58 +02:00
# Affichage du menu
###########################################################
2021-08-03 16:55:22 +02:00
2021-07-27 20:34:58 +02:00
choixmenu = $( echo -e " \
2021-08-03 16:55:22 +02:00
cp\n Créer un nouveau profil/dépôt\n \
2022-05-02 08:13:55 +02:00
ajd\n Ajouter un dépôt existant\n \
2021-08-07 14:58:03 +02:00
ap\n Afficher les profils\
2021-08-03 16:55:22 +02:00
" | zenity $H $W --window-icon= $HOME /.icons/borg.svg --list \
2021-07-27 20:34:58 +02:00
--column "id" --column "choix" )
2022-04-13 19:59:58 +02:00
# Gestion des choix du menu
###########################################################
### Créer un nouveau profil/dépôt ###
2021-07-27 20:34:58 +02:00
2021-08-03 16:55:22 +02:00
if [ " $choixmenu " = "cp" ] ; then
2022-04-29 17:42:23 +02:00
2022-06-23 18:08:33 +02:00
borg_repo = $( zenity --title "Dossier du dépôt" --file-selection --directory)
2022-06-23 17:48:27 +02:00
if [ ! -z " $( ls -A " $borg_repo " ) " ] ; then
2021-08-03 16:55:22 +02:00
zenity $W --error --text= "Erreur, le dossier n'est pas vide."
exit
2021-07-27 20:34:58 +02:00
fi
2022-06-23 18:08:33 +02:00
zenity $W --question --text " Chiffrer le dépôt ?\n\n\
Si vous chiffrez le dépôt, le fichier-clé du dépôt sera stocké dans le dossier <tt>$HOME /.config/borg/keys/</tt>.\n \
Veuillez à sauvegarder ce dossier dans un endroit sûr.\n \
Si cette clé ne peut être lue les données ne seront pas récupérables. Notez qu'il n' existe aucun mécanisme de récupération de clé.\n \n \
Si vous ne chiffrez pas le dépôt, les données qu' il contient seront librement accessible par toute personne ayant accès aux fichiers du dépôt.
"
2021-08-03 16:55:22 +02:00
if [ " $? " = "0" ] ; then
2022-06-23 17:48:27 +02:00
borg init " $borg_repo " | ZenityPulsate
2022-04-15 11:34:24 +02:00
zenity $W --info --text " Un nouveau dépôt chiffré a été généré dans <tt> $borg_repo </tt> "
2022-06-23 20:14:31 +02:00
repo_status = "chiffré"
2021-08-03 16:55:22 +02:00
elif [ " $? " = "1" ] ; then
2022-06-23 17:48:27 +02:00
borg init --encryption none " $borg_repo " | ZenityPulsate
2022-04-15 11:34:24 +02:00
zenity $W --info --text " Un nouveau dépôt en clair a été généré dans <tt> $borg_repo </tt> "
2022-06-23 20:14:31 +02:00
repo_status = "non chiffré"
2021-08-03 16:55:22 +02:00
fi
borg_dir = $( zenity --title "Dossier à sauvegarder" --file-selection --directory)
2021-07-27 20:34:58 +02:00
2022-06-23 20:14:31 +02:00
profilename = $( zenity --entry --title "Nom de profil" --text "Nom de profil (pas d'espace ni caractères spéciaux)" )
nomsauvegarde = $( echo " $profilename " )
2022-04-29 17:42:23 +02:00
2022-06-23 20:14:31 +02:00
if [ " $profilename " = "" ] ; then zenity $W --error --text "Pas de nom de profil" ; exit; fi
2022-04-29 19:45:49 +02:00
if [ " $nomsauvegarde " = "" ] ; then zenity $W --error --text "Pas de nom de sauvegarde" ; exit; fi
2022-06-23 20:14:31 +02:00
2022-04-11 08:19:54 +02:00
cat << EOF >> " $dossierprofil " " $profilename " .conf
2021-08-03 16:55:22 +02:00
nomsauvegarde = " $nomsauvegarde "
borg_repo = " $borg_repo "
2022-04-13 19:59:58 +02:00
borg_archive = "\$(date +%d_%B_%Y_%H-%M)"
2021-08-03 16:55:22 +02:00
borg_dir = " $borg_dir "
2022-06-23 18:08:33 +02:00
borg_excludes = ""
2021-08-03 16:55:22 +02:00
borg_compress = ""
dryrun = ""
EOF
2021-07-27 20:34:58 +02:00
2022-06-23 20:14:31 +02:00
zenity $W --info --text " Le profil « $profilename » a été créé avec ces paramètres\n\nNom de profil : $profilename \nChemin à sauvegarder : $borg_dir \nChemin du dépôt : $borg_repo \nStatut du dépôt : $repo_status "
2022-04-29 17:42:23 +02:00
2022-04-13 19:59:58 +02:00
### Ajouter un dépôt existant ###
elif [ " $choixmenu " = "ajd" ] ; then
borg_repo = $( zenity --title "Dossier du dépôt" --file-selection --directory)
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 >> " $dossierprofil " " $profilename " .conf
nomsauvegarde = " $nomsauvegarde "
borg_repo = " $borg_repo "
borg_archive = "\$(date +%d_%B_%Y_%H-%M)"
borg_dir = " $borg_dir "
borg_excludes = ""
borg_compress = ""
dryrun = ""
EOF
zenity $W --info --text "Le dépôt à bien été ajouté.\nLancez «Borg Zenity Sauvegarde» pour faire une sauvegarde."
### Afficher les profils ###
2021-08-03 16:55:22 +02:00
elif [ " $choixmenu " = "ap" ] ; then
2021-08-05 13:57:14 +02:00
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" )
2022-04-29 19:45:49 +02:00
zenity $W $H --info --text= " <tt> $( cd " $dossierprofil " && cat " $fichierprofil " ) </tt> "
2021-07-27 20:34:58 +02:00
elif [ " $choixmenu " = "" ] ; then
2021-08-03 16:55:22 +02:00
exit
2021-07-27 20:34:58 +02:00
fi