borg-zenity/profile-manager.sh

137 lines
4.3 KiB
Bash
Raw Normal View History

2021-07-27 20:34:58 +02:00
#! /bin/bash
# Fonctions et variables
###########################################################
ZenityPulsate () {
zenity $W --window-icon=$HOME/.icons/borg.svg --progress --pulsate --auto-close
}
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
}
W="--width=600"
H="--height=500"
dossierprofil="$HOME/.config/borg/profils-borg-zenity/"
mkdir -p $dossierprofil && cd $dossierprofil
# Affichage du menu
###########################################################
2021-07-27 20:34:58 +02:00
choixmenu=$(echo -e "\
cp\nCréer un nouveau profil/dépôt\n\
ajd\nAjouter un dépôt\n\
ap\nAfficher les profils\
" | zenity $H $W --window-icon=$HOME/.icons/borg.svg --list \
2021-07-27 20:34:58 +02:00
--column "id" --column "choix")
# Gestion des choix du menu
###########################################################
### Créer un nouveau profil/dépôt ###
2021-07-27 20:34:58 +02:00
if [ "$choixmenu" = "cp" ];then
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
2021-07-27 20:34:58 +02:00
fi
zenity $W --question --text "Chiffrer le dépôt ? (recommandé)"
if [ "$?" = "0" ];then
zenity $W --warning --text \
2022-04-15 11:34:24 +02:00
"Le fichier-clé du dépôt sera stocké dans le dossier <tt>$HOME/.config/borg/keys/</tt>.\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
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>"
elif [ "$?" = "1" ];then
zenity $W --warning --text \
2022-04-15 11:34:24 +02:00
"Je comprends qu'en ne sécurisant pas mon dépôt 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
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>"
fi
borg_dir=$(zenity --title "Dossier à sauvegarder" --file-selection --directory)
2021-07-27 20:34:58 +02:00
vars=$(zenity --forms \
--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)
2022-04-29 19:45:49 +02:00
if [ "$nomsauvegarde" = "" ];then zenity $W --error --text "Pas de nom de sauvegarde";exit;fi
if [ "$profilename" = "" ];then zenity $W --error --text "Pas de nom de sauvegarde";exit;fi
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
2021-07-27 20:34:58 +02:00
zenity $W --info --text "Le profil $profilename a été créé."
### 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 ###
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
exit
2021-07-27 20:34:58 +02:00
fi