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 ( ) {
2022-07-04 11:01:05 +02:00
zenity $W --window-icon= borg --progress --pulsate --auto-close
2021-08-03 16:55:22 +02:00
}
2022-04-13 19:59:58 +02:00
TestBorgRepo ( ) {
if [ ! -f "config" ] ; then
2022-07-12 21:36:11 +02:00
zenity $W --error --text= "Impossible de trouver le fichier de configuration du dépôt."
TestBorgErr = "true"
else
TestBorgErr = "false"
2022-04-13 19:59:58 +02:00
fi
if [ ! -d "data" ] ; then
2022-07-12 21:36:11 +02:00
zenity $W --error --text= "Impossible de trouver le dossier des données du dépôt."
TestBorgErr = "true"
else
TestBorgErr = "false"
2022-04-13 19:59:58 +02:00
fi
}
2022-04-11 08:19:54 +02:00
dossierprofil = " $HOME /.config/borg/profils-borg-zenity/ "
2022-07-12 21:36:11 +02:00
mkdir -p " $dossierprofil " && cd " $dossierprofil " || exit
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-07-12 21:36:11 +02:00
ajd\n Créer un nouveau profil et le lier à un dépôt existant\n \
2022-07-14 15:05:52 +02:00
ap\n Afficher les profils\n \
mp\n Modifier un profil ( connaissance en ligne de commande borg requise) \
2022-07-12 21:36:11 +02:00
" | zenity $H $W --window-icon=borg --list --column " id" --column " choix" --hide-column=1 --hide-header)
2021-07-27 20:34:58 +02:00
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-10-29 13:24:01 +02:00
cd $HOME
2023-03-15 15:56:56 +01:00
zenity $W --info --text= "Séléctionnez maintenant le dossier qui contiendra votre dépôt, généralement sur un disque dur externe.\nCe dossier doit être vide."
2022-06-23 18:08:33 +02:00
borg_repo = $( zenity --title "Dossier du dépôt" --file-selection --directory)
2022-10-29 13:24:01 +02:00
while [ ! -z " $( ls -A " $borg_repo " ) " ] ; do
2021-08-03 16:55:22 +02:00
zenity $W --error --text= "Erreur, le dossier n'est pas vide."
2022-10-29 13:24:01 +02:00
borg_repo = $( zenity --title "Dossier du dépôt" --file-selection --directory)
done
2021-07-27 20:34:58 +02:00
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-07-04 19:40:14 +02:00
export BORG_PASSPHRASE = ""
2022-07-04 11:01:05 +02:00
borg init --encryption= keyfile " $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-07-04 11:01:05 +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
2022-10-29 13:24:01 +02:00
zenity $W --info --text= "Séléctionnez maintenant le dossier à sauvegarder dans Borg-Zenity."
2021-08-03 16:55:22 +02:00
borg_dir = $( zenity --title "Dossier à sauvegarder" --file-selection --directory)
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-07-12 21:36:11 +02:00
zenity $W --info --text " \
Le profil «$profilename » a été créé avec ces paramètres\n \n \
Nom de profil : $profilename \n \
Chemin à sauvegarder : $borg_dir \n \
Chemin du dépôt : $borg_repo \n \
Statut 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
2023-03-15 15:56:56 +01:00
zenity $W --info --text= "Séléctionnez maintenant le dossier qui contient votre dépôt. Il est généralement localisé sur un disque dur externe."
2022-07-12 21:36:11 +02:00
TestBorgErr = "true"
while [ " $TestBorgErr " = "true" ] ; do
borg_repo_test = $( zenity --title "Dossier du dépôt" --file-selection --directory)
if [ $? = "1" ] ; then exit; fi
cd " $borg_repo_test " && TestBorgRepo
if [ " $TestBorgErr " = "false" ] ; then borg_repo = $borg_repo_test ; fi
done
2022-04-13 19:59:58 +02:00
2022-07-12 21:36:11 +02:00
borg_dir = $( zenity --title "Dossier à sauvegarder" --file-selection --directory)
profilename = $( zenity --entry --title "Nom de profil" --text "Nom de profil (pas d'espace ni caractères spéciaux)" )
nomsauvegarde = $( echo " $profilename " )
2022-04-13 19:59:58 +02:00
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
2022-07-12 21:36:11 +02:00
fichierprofil = $( ls -1 *.conf | zenity $H $W --window-icon= borg --list --title "Liste des profils" --text "Choisir un profil dans la liste" --hide-header --column "profil" )
2022-07-12 21:45:33 +02:00
if [ " $fichierprofil " != "" ] ; then
2022-04-29 19:45:49 +02:00
zenity $W $H --info --text= " <tt> $( cd " $dossierprofil " && cat " $fichierprofil " ) </tt> "
2022-07-12 21:45:33 +02:00
fi
2021-07-27 20:34:58 +02:00
2022-07-21 21:09:52 +02:00
### Modifier un profil ###
2022-07-14 15:05:52 +02:00
elif [ " $choixmenu " = "mp" ] ; then
fichierprofil = $( ls -1 *.conf | zenity $H $W --window-icon= borg --list --title "Liste des profils" --text "Choisir un profil dans la liste" --hide-header --column "profil" )
2022-07-21 21:09:52 +02:00
cp " $fichierprofil " " $fichierprofil .tmp "
return = $( zenity $W $H --text-info --editable --title= " profil $fichierprofil " --filename " $fichierprofil .tmp " )
if [ " $return " = "" ] ; then
rm " $fichierprofil .tmp "
exit
else
echo " $return " > " $fichierprofil .tmp "
mv " $fichierprofil .tmp " " $fichierprofil "
fi
2022-07-14 15:05:52 +02:00
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