borg-zenity/profile-manager.sh

136 lines
4.4 KiB
Bash
Raw Normal View History

2021-07-27 20:34:58 +02:00
#! /bin/bash
# Fonctions et variables
###########################################################
2022-06-23 17:48:27 +02:00
W="--width=600"
H="--height=500"
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
}
dossierprofil="$HOME/.config/borg/profils-borg-zenity/"
2022-06-23 17:48:27 +02:00
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\
2022-05-02 08:13:55 +02:00
ajd\nAjouter un dépôt existant\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)
2022-06-23 17:48:27 +02:00
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é."
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>"
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."
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>"
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="--exclude=*cache*"
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