borg-zenity/profile-manager.sh

151 lines
5.4 KiB
Bash
Raw Permalink 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 --progress --pulsate --auto-close
}
TestBorgRepo () {
if [ ! -f "config" ]; then
zenity $W --error --text="Impossible de trouver le fichier de configuration du dépôt."
TestBorgErr="true"
else
TestBorgErr="false"
fi
if [ ! -d "data" ]; then
zenity $W --error --text="Impossible de trouver le dossier des données du dépôt."
TestBorgErr="true"
else
TestBorgErr="false"
fi
}
dossierprofil="$HOME/.config/borg/profils-borg-zenity/"
mkdir -p "$dossierprofil" && cd "$dossierprofil" || exit
# 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\nCréer un nouveau profil et le lier à un dépôt existant\n\
2022-07-14 15:05:52 +02:00
ap\nAfficher les profils\n\
mp\nModifier un profil (connaissance en ligne de commande borg requise)\
" | zenity $H $W --list --column "id" --column "choix" --hide-column=1 --hide-header)
2021-07-27 20:34:58 +02:00
# 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
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."
borg_repo=$(zenity --title "Dossier du dépôt" --file-selection --directory)
while [ ! -z "$(ls -A "$borg_repo")" ];do
zenity $W --error --text="Erreur, le dossier n'est pas vide."
borg_repo=$(zenity --title "Dossier du dépôt" --file-selection --directory)
done
2021-07-27 20:34:58 +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.
"
if [ "$?" = "0" ];then
export BORG_PASSPHRASE=""
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>"
repo_status="chiffré"
elif [ "$?" = "1" ];then
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>"
repo_status="non chiffré"
fi
zenity $W --info --text="Séléctionnez maintenant le dossier à sauvegarder dans Borg-Zenity."
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")
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
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éé 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"
### 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."
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
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")
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
fichierprofil=$(ls -1 *.conf | zenity $H $W --list --title "Liste des profils" --text "Choisir un profil dans la liste" --hide-header --column "profil")
if [ "$fichierprofil" != "" ];then
2022-04-29 19:45:49 +02:00
zenity $W $H --info --text="<tt>$(cd "$dossierprofil" && cat "$fichierprofil")</tt>"
fi
2021-07-27 20:34:58 +02:00
### Modifier un profil ###
2022-07-14 15:05:52 +02:00
elif [ "$choixmenu" = "mp" ];then
fichierprofil=$(ls -1 *.conf | zenity $H $W --list --title "Liste des profils" --text "Choisir un profil dans la liste" --hide-header --column "profil")
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
exit
2021-07-27 20:34:58 +02:00
fi