Merge branch 'dev' into stable
This commit is contained in:
commit
462e99362e
262
borg-gui.sh
262
borg-gui.sh
@ -1,14 +1,12 @@
|
||||
#! /bin/bash
|
||||
|
||||
# tests de base
|
||||
which zenity
|
||||
if [ "$?" != "0" ]; then
|
||||
if ! which zenity ; then
|
||||
echo "Zenity n'est pas installé.";exit
|
||||
exit
|
||||
fi
|
||||
|
||||
which borg
|
||||
if [ "$?" != "0" ]; then
|
||||
if ! which borg ; then
|
||||
echo "borgbackup n'est pas installé.";exit
|
||||
exit
|
||||
fi
|
||||
@ -25,50 +23,68 @@ iconborg="--window-icon=/usr/share/icons/borg.svg"
|
||||
# FONCTIONS
|
||||
#################################################################################
|
||||
TestBorgRepo () {
|
||||
if [ ! -f "config" ]; then
|
||||
TestBorgErr=1
|
||||
infoerr=$(echo "Impossible de trouver le fichier de configuration borg.")
|
||||
zenity $W --error --text="$infoerr"
|
||||
if [ ! -d "$borg_repo" ];then
|
||||
zenity $W --error --text="Impossible de trouver de dépôt borg."
|
||||
exit
|
||||
else
|
||||
echo "[OK] Le dépôt borg existe"
|
||||
fi
|
||||
|
||||
if [ ! -d "data" ]; then
|
||||
TestBorgErr=1
|
||||
infoerr=$(echo "Impossible de trouver le fichier de configuration borg.")
|
||||
zenity $W --error --text="$infoerr"
|
||||
if ! ls "$borg_repo";then
|
||||
zenity $W --error --text="Impossible d'accéder au dépôt borg.\nIl s'agit probablement d'un problème de droits"
|
||||
exit
|
||||
else
|
||||
echo "[OK] L'accès au dépôt borg est possible"
|
||||
fi
|
||||
|
||||
if [ -d "lock.exclusive" ]; then
|
||||
TestBorgErr=1
|
||||
infoerr=$(echo "Le dépôt est bloqué, une opération est peut-être en cours")
|
||||
if ! ls "$borg_repo/data";then
|
||||
zenity $W --error --text="Impossible d'accéder aux données du dépôt borg.\nIl s'agit probablement d'un problème de droits"
|
||||
exit
|
||||
else
|
||||
echo "[OK] L'accès aux données du dépôt borg est possible"
|
||||
fi
|
||||
|
||||
if [ ! -f "$borg_repo/config" ]; then
|
||||
infoerr="Impossible de trouver le fichier de configuration borg."
|
||||
zenity $W --error --text="$infoerr"
|
||||
exit
|
||||
else
|
||||
echo "[OK] Le fichier de configuration a été trouvé"
|
||||
fi
|
||||
}
|
||||
|
||||
bobainfoa () {
|
||||
TestBorgRepo
|
||||
borg info ./::$borg_repo
|
||||
if [ -d "$borg_repo/lock.exclusive" ]; then
|
||||
infoerr="Le dépôt est verrouillé, une opération est peut-être en cours"
|
||||
zenity $W --error --text="$infoerr"
|
||||
exit
|
||||
else
|
||||
echo "[OK] Le dépôt n'est pas verrouillé"
|
||||
fi
|
||||
}
|
||||
|
||||
DossierPresent () {
|
||||
if [ ! -d "$1" ]; then
|
||||
inforerror=$(echo "Erreur, le dossier $1 est absent.")
|
||||
inforerror="Erreur, le dossier $1 est absent."
|
||||
zenity $W --error --text="$inforerror"
|
||||
VarDossierPresent="false"
|
||||
fi
|
||||
}
|
||||
|
||||
ZenityPulsate () {
|
||||
zenity $W $iconborg --progress --pulsate --auto-close
|
||||
zenity $W $iconborg --title "borg-zenity" --progress --pulsate --auto-close --text "$1"
|
||||
}
|
||||
|
||||
ZenityNotification () {
|
||||
zenity $iconborg --notification --text "$1"
|
||||
}
|
||||
|
||||
BorgFilter () {
|
||||
if [ "$filter" = "" ];then
|
||||
Borg_Archive=$(borg list --short $borg_repo | zenity $H $iconborg --list --title "Listes des archives" --column "Archive")
|
||||
ZenityNotification "borg-zenity\nGénération de la liste des archives en cours..."
|
||||
BorgArchiveList=$(borg list --short "$borg_repo")
|
||||
Borg_Archive=$(echo -e "$BorgArchiveList" | zenity $H $W $iconborg --list --title "Listes des archives" --column "Archive")
|
||||
else
|
||||
Borg_Archive=$(borg list --short $borg_repo| grep $filter | zenity $H $iconborg --list --title "Listes des archives" --column "Archive")
|
||||
BorgArchiveList=$(borg list --short "$borg_repo")
|
||||
Borg_Archive=$(echo -e "$BorgArchiveList" | grep "$filter" | zenity $H $W $iconborg --list --title "Listes des archives" --column "Archive")
|
||||
fi
|
||||
}
|
||||
|
||||
@ -76,39 +92,31 @@ BorgFilter () {
|
||||
# Profils et tests
|
||||
#################################################################################
|
||||
|
||||
# si $1 n'est pas vide fichier de profil = $1
|
||||
# sinon afficher les profils disponibles
|
||||
if [ ! $1 = "" ]; then
|
||||
fichierprofil="$1"
|
||||
. "$1"
|
||||
else
|
||||
cd "$dossierprofil"
|
||||
fichierprofil=$(ls -1 *.conf | cut -d. -f1 | \
|
||||
zenity $W $H $iconborg --list \
|
||||
--title "Liste des profils" \
|
||||
--text "Choisir un profil dans la liste" \
|
||||
--column "Fichier de profil"\
|
||||
) && . "$dossierprofil"/"$fichierprofil".conf
|
||||
fi
|
||||
cd "$dossierprofil" || exit
|
||||
fichierprofil=$(ls -1 *.conf | cut -d. -f1 | \
|
||||
zenity $W $H $iconborg --list \
|
||||
--title "Liste des profils" \
|
||||
--text "Choisir un profil dans la liste" \
|
||||
--column "Fichier de profil" \
|
||||
--hide-header \
|
||||
) && . "$dossierprofil"/"$fichierprofil".conf
|
||||
|
||||
if [ "$fichierprofil" = "" ]; then
|
||||
infoerr=$(echo "Aucun profil choisi.")
|
||||
infoerr="Aucun profil choisi."
|
||||
zenity $W --error --text="$infoerr"
|
||||
exit
|
||||
elif [ "$nomsauvegarde" = "" ]; then
|
||||
infoerr=$(echo "Nom de sauvegarde non défini.")
|
||||
infoerr="Nom de sauvegarde non défini."
|
||||
zenity $W --error --text="$infoerr"
|
||||
exit
|
||||
elif [ "$borg_repo" = "" ]; then
|
||||
infoerr=$(echo "Variable \$borg_repo absente")
|
||||
infoerr="Variable \$borg_repo absente"
|
||||
zenity $W --error --text="$infoerr"
|
||||
exit
|
||||
fi
|
||||
|
||||
cd $borg_repo
|
||||
TestBorgRepo
|
||||
|
||||
|
||||
#################################################################################
|
||||
# Fichier de configuration globale
|
||||
#################################################################################
|
||||
@ -122,57 +130,88 @@ fi
|
||||
# MENU PRINCIPAL Gestion des options du menu
|
||||
#################################################################################
|
||||
|
||||
while [ ! "$quitter" = "yes" ];do
|
||||
while [ "$quitter" != "yes" ];do
|
||||
cd "$borg_repo" || exit
|
||||
|
||||
# si aucune archive n'est montée, cacher l'entrée de menu «Démonter une archive»
|
||||
# si des archives sont montées afficher les entrées de menu «démonter»
|
||||
# si des archives sont montés, cacher les entrées «supprimer et renommer»
|
||||
if [ "$(mount | grep borgfs)" != "" ];then
|
||||
MenuDemonter="dm\nDémonter une archive\ndmt\nDémonter toutes les archives\n"
|
||||
MenuSupprimer=""
|
||||
MenuRenommer=""
|
||||
MenuInfo=""
|
||||
MenuCreer=""
|
||||
else
|
||||
MenuDemonter=""
|
||||
MenuSupprimer1="ss\nSupprimer une archive\n"
|
||||
MenuSupprimerX="sss\nSupprimer des archives\n"
|
||||
MenuRenommer="ra\nRenommer une archive\n"
|
||||
MenuInfo="is\nInformation archive\n"
|
||||
MenuCreer="cs\nCréer l'archive : $borg_archive\n"
|
||||
fi
|
||||
|
||||
# afficher l'espace disque sous condition, la variable vient du fichier borg-zenity.conf
|
||||
EspaceDisqueUtil=$(df -k --output=pcent $borg_repo | tail -n +2 | cut -d% -f1)
|
||||
EspaceDisqueUtil=$(df -k --output=pcent "$borg_repo" | tail -n +2 | cut -d% -f1)
|
||||
if [ $EspaceDisqueUtil -gt $seuil_alerte_espace_disque ];then
|
||||
MenuEspaceDisque="ed\n/!\ Espace disque utilisé : $EspaceDisqueUtil %\n"
|
||||
MenuEspaceDisque="ed\n/!\ Espace disque utilisé : $EspaceDisqueUtil %\n"
|
||||
else
|
||||
MenuEspaceDisque=""
|
||||
fi
|
||||
|
||||
# notification si espace disque faible
|
||||
NotificationEspaceDisque () {
|
||||
if [ $EspaceDisqueUtil -gt $seuil_alerte_espace_disque ];then
|
||||
ZenityNotification "borg-zenity\nEspace disque faible, $EspaceDisqueUtil% occupé"
|
||||
fi
|
||||
}
|
||||
|
||||
MenuCompacter="co\nCompacter le dépôt\n"
|
||||
MenuMonter="ms\nMonter une archive\n"
|
||||
MenuFiltre="fi\nFiltre : "$filter"\n"
|
||||
MenuBarreHorizontale="--\n------------------------------------------\n"
|
||||
MenuInfoDepot="id\nInformation sur le dépôt\n"
|
||||
MenuAfficherProfil="ap\nAfficher le profil\n"
|
||||
MenuQuitter="qu\nQUITTER"
|
||||
|
||||
#################################################################################
|
||||
# Affichage du menu
|
||||
#################################################################################
|
||||
|
||||
if [ $menu_avance = "true" ];then
|
||||
|
||||
NotificationEspaceDisque
|
||||
|
||||
# menu avancé
|
||||
choixmenu=$(echo -e "\
|
||||
cs\nCréer l'archive : $(echo $borg_archive)\n\
|
||||
ms\nMonter une archive\n\
|
||||
$(echo $MenuCreer)\
|
||||
$(echo $MenuMonter)\
|
||||
$(echo $MenuDemonter)\
|
||||
ss\nSupprimer une archive\n\
|
||||
sss\nSupprimer des archives\n\
|
||||
ra\nRenommer une archive\n\
|
||||
is\nInformation archive\n\
|
||||
fi\nFiltre : "$filter"\n\
|
||||
--\n------------------------------------------\n\
|
||||
id\nInformation sur le dépôt\n\
|
||||
ap\nAfficher le profil\n\
|
||||
--\n------------------------------------------\n\
|
||||
$(echo $MenuSupprimer1)\
|
||||
$(echo $MenuSupprimerX)\
|
||||
$(echo $MenuRenommer)\
|
||||
$(echo $MenuCompacter)\
|
||||
$(echo $MenuInfo)\
|
||||
$(echo $MenuFiltre)\
|
||||
$(echo $MenuBarreHorizontale)\
|
||||
$(echo $MenuInfoDepot)\
|
||||
$(echo $MenuAfficherProfil)\
|
||||
$(echo $MenuBarreHorizontale)\
|
||||
$(echo $MenuEspaceDisque)\
|
||||
qu\nQUITTER\
|
||||
" | zenity $iconborg --list $H $W --title "BORG GUI : $nomsauvegarde" \
|
||||
--hide-header --hide-column=1 --column "id" --column "choix")
|
||||
$(echo $MenuQuitter)\
|
||||
" | zenity $iconborg --list $H $W --title "$nomsauvegarde" --hide-header --hide-column=1 --column "id" --column "choix")
|
||||
|
||||
else
|
||||
|
||||
NotificationEspaceDisque
|
||||
# menu simple
|
||||
choixmenu=$(echo -e "\
|
||||
cs\nCréer l'archive : $(echo $borg_archive)\n\
|
||||
ms\nMonter une archive\n\
|
||||
$(echo $MenuCreer)\
|
||||
$(echo $MenuMonter)\
|
||||
$(echo $MenuDemonter)\
|
||||
ss\nSupprimer une archive\n\
|
||||
is\nInformation archive\n\
|
||||
$(echo $MenuSupprimer1)\
|
||||
$(echo $MenuEspaceDisque)\
|
||||
qu\nQUITTER\
|
||||
" | zenity $iconborg --list $H $W --title "BORG GUI : $nomsauvegarde" \
|
||||
--hide-header --hide-column=1 --column "id" --column "choix")
|
||||
$(echo $MenuQuitter)\
|
||||
" | zenity $iconborg --list $H $W --title "BORG GUI : $nomsauvegarde" --hide-header --hide-column=1 --column "id" --column "choix")
|
||||
fi
|
||||
|
||||
|
||||
@ -188,19 +227,27 @@ fi
|
||||
# Créer une archive
|
||||
|
||||
TestBorgRepo
|
||||
DossierPresent "$borg_repo"
|
||||
DossierPresent "$borg_dir"
|
||||
cd "$borg_dir"
|
||||
if [ ! "$?" = "0" ] ;then
|
||||
zenity $W --error --text "Impossible de se rendre dans le dossier de sauvegarde."
|
||||
exit
|
||||
fi
|
||||
|
||||
DossierPresent $borg_repo
|
||||
DossierPresent $borg_dir
|
||||
|
||||
borg list --short $borg_repo | grep $borg_archive
|
||||
if [ "$?" = "0" ];then
|
||||
if borg list --short "$borg_repo" | grep "$borg_archive" ;then
|
||||
zenity --warning $W $iconborg --text "L'archive existe déjà."
|
||||
else
|
||||
if [ "$VarDossierPresent" != "false" ];then
|
||||
cd $borg_dir && borg create $borg_excludes $borg_compress $borg_repo::$borg_archive ./ | ZenityPulsate
|
||||
sync | ZenityPulsate
|
||||
zenity --notification --text "Sauvegarde $nomsauvegarde terminée"
|
||||
zenity $W --info --text "Sauvegarde $nomsauvegarde terminée"
|
||||
log="/tmp/borg-zenity-$borg_archive-$(date +%H-%M-%S).log"
|
||||
borg create ${borg_excludes} ${borg_compress} "$borg_repo"::"$borg_archive" . 2> "$log" | zenity $W $iconborg --progress --pulsate --auto-close --no-cancel --text "Sauvegarde en cours..." --title "borg-zenity"
|
||||
chmod 777 "$log"
|
||||
if [ $(wc -c "$log" | cut -f1 -d " ") -gt 1 ] ;then
|
||||
zenity $W --error --title "borg-zenity erreur" --text "$(cat $log)"
|
||||
fi
|
||||
sync | ZenityPulsate "Synchronisation des écritures..."
|
||||
ZenityNotification "borg-zenity\nSauvegarde $nomsauvegarde terminée"
|
||||
zenity $W --info --text "Sauvegarde $nomsauvegarde terminée"
|
||||
fi
|
||||
fi
|
||||
|
||||
@ -209,8 +256,8 @@ fi
|
||||
# Monter une archive
|
||||
BorgFilter
|
||||
if [ ! "$Borg_Archive" = "" ];then
|
||||
mkdir $HOME/$Borg_Archive
|
||||
borg mount $borg_repo::$Borg_Archive $HOME/$Borg_Archive | ZenityPulsate
|
||||
mkdir $HOME/"$Borg_Archive"
|
||||
borg mount "$borg_repo"::"$Borg_Archive" $HOME/"$Borg_Archive" | ZenityPulsate "Montage de l'archive..."
|
||||
zenity $W --info --text="La sauvegarde est disponible dans le dossier\n<tt>$HOME/$Borg_Archive</tt>"
|
||||
fi
|
||||
|
||||
@ -218,27 +265,26 @@ fi
|
||||
# Démonter une archive
|
||||
ptnmontage=$(mount | grep borgfs | cut -d" " -f3 | zenity $W $H $iconborg --list --title "Liste des points de montages" --column "Archive")
|
||||
if [ ! "$ptnmontage" = "" ];then
|
||||
fusermount -u $ptnmontage | ZenityPulsate
|
||||
sleep 2 | ZenityPulsate
|
||||
rmdir $ptnmontage | ZenityPulsate
|
||||
fusermount -u "$ptnmontage" | ZenityPulsate "Démontage de l'archive..."
|
||||
sleep 2 | ZenityPulsate ""
|
||||
rmdir "$ptnmontage" | ZenityPulsate "Suppression du point du montage..."
|
||||
fi
|
||||
ZenityNotification "borg-zenity\nDémontage de $ptnmontage"
|
||||
|
||||
elif [ "$choixmenu" = "dmt" ];then
|
||||
# Démonter toutes les archives
|
||||
while [ $(mount | grep borgfs | cut -d" " -f3 | head -n 1) ];do
|
||||
ptnmontage="$(mount | grep borgfs | cut -d" " -f3 | head -n 1)"
|
||||
notify-send -i $iconborg "borg-zenity" "Démontage de $ptnmontage"
|
||||
fusermount -uz $ptnmontage && sleep 2 && rmdir $ptnmontage
|
||||
ZenityNotification "borg-zenity\nDémontage de $ptnmontage"
|
||||
fusermount -uz "$ptnmontage" && sleep 2 && rmdir "$ptnmontage"
|
||||
done
|
||||
|
||||
|
||||
elif [ "$choixmenu" = "ss" ];then
|
||||
# Supprimer une archive
|
||||
BorgFilter
|
||||
if [ "$Borg_Archive" = "" ];then
|
||||
zenity $W --info --text "Aucune archive choisie, retour au menu"
|
||||
else
|
||||
borg delete $borg_repo::$Borg_Archive | ZenityPulsate
|
||||
if [ ! "$Borg_Archive" = "" ];then
|
||||
borg delete "$borg_repo"::"$Borg_Archive" | ZenityPulsate "Suppresion de l'archive..."
|
||||
zenity $W --info --text="Suppresion de l'archive $Borg_Archive terminée"
|
||||
fi
|
||||
|
||||
@ -246,46 +292,51 @@ fi
|
||||
# Supprimer des archives
|
||||
|
||||
if [ "$filter" = "" ];then
|
||||
Borg_Archive=$(borg list --short $borg_repo | sed s/^/\\n/g | zenity $H $iconborg --list --checklist --title "Listes des archives" --column "Sel" --column "Archive")
|
||||
Borg_Archive=$(borg list --short "$borg_repo" | sed s/^/\\n/g | zenity $H $W $iconborg --list --checklist --title "Listes des archives" --column "Sel" --column "Archive")
|
||||
else
|
||||
Borg_Archive=$(borg list --short $borg_repo | grep $filter | sed s/^/S\\n/g | zenity $H $iconborg --list --checklist --title "Listes des archives" --column "S" --column "Archive")
|
||||
Borg_Archive=$(borg list --short "$borg_repo" | grep "$filter" | sed s/^/S\\n/g | zenity $H $W $iconborg --list --checklist --title "Listes des archives" --column "S" --column "Archive")
|
||||
fi
|
||||
|
||||
if [ "$Borg_Archive" = "" ];then
|
||||
zenity $W --info --text "Aucune archive choisie, retour au menu"
|
||||
else
|
||||
borg delete $borg_repo::$(echo "$Borg_Archive" | sed s/\|/\ /g) | ZenityPulsate
|
||||
if [ ! "$Borg_Archive" = "" ];then
|
||||
borg delete "$borg_repo"::$(echo "$Borg_Archive" | sed s/\|/\ /g) | ZenityPulsate "Suppression de l'archive..."
|
||||
zenity $W --info --text="Suppression des archives terminée.\nArchives supprimées : $(echo "$Borg_Archive" | sed s/\|/\ /g)"
|
||||
fi
|
||||
|
||||
elif [ "$choixmenu" = "co" ];then
|
||||
# Compacter le dépôt
|
||||
borg compact --verbose "$borg_repo" 2> /tmp/borg-compact.log | ZenityPulsate "Compactage du dépôt..."
|
||||
zenity $W --info --text "$(cat /tmp/borg-compact.log)"
|
||||
|
||||
elif [ "$choixmenu" = "ra" ];then
|
||||
# renommer une archive
|
||||
BorgFilter
|
||||
|
||||
if [ "$Borg_Archive" = "" ];then
|
||||
zenity $W --info --text "Aucune archive choisie, retour au menu"
|
||||
else
|
||||
borg_nouveaunom=$(zenity --entry --text "Nouveau nom" --entry-text="$Borg_Archive")
|
||||
borg rename $borg_repo::"$Borg_Archive" "$borg_nouveaunom" | ZenityPulsate
|
||||
if [ ! "$Borg_Archive" = "" ];then
|
||||
borg_nouveaunom=$(zenity $W --entry --text "Nouveau nom" --entry-text="$Borg_Archive")
|
||||
if [ "$borg_nouveaunom" = "$Borg_Archive" ];then
|
||||
ZenityNotification "Renommage annulé"
|
||||
elif [ "$borg_nouveaunom" = "" ];then
|
||||
ZenityNotification "Renommage annulé"
|
||||
elif [ "$Borg_Archive" != "$borg_nouveaunom" ];then
|
||||
borg rename "$borg_repo"::"$Borg_Archive" "$borg_nouveaunom" | ZenityPulsate "Renommage de l'archive..."
|
||||
ZenityNotification "Renommage terminé\n"$Borg_Archive" -> "$borg_nouveaunom""
|
||||
fi
|
||||
fi
|
||||
|
||||
|
||||
elif [ "$choixmenu" = "is" ];then
|
||||
# Information archive
|
||||
BorgFilter
|
||||
if [ "$Borg_Archive" = "" ];then
|
||||
zenity $W --info --text "Aucune archive choisie, retour au menu"
|
||||
else
|
||||
zenity $W --info --text="<tt>$(borg info $borg_repo::$Borg_Archive)</tt>" | ZenityPulsate
|
||||
if [ ! "$Borg_Archive" = "" ];then
|
||||
zenity $W --info --text="<tt>$(borg info "$borg_repo"::"$Borg_Archive")</tt>" | ZenityPulsate "Récupération des informations..."
|
||||
fi
|
||||
|
||||
elif [ "$choixmenu" = "fi" ];then
|
||||
#Filtre
|
||||
filter=$(zenity --entry)
|
||||
filter=$(zenity $W --entry --entry-text "$filter")
|
||||
|
||||
elif [ "$choixmenu" = "id" ];then
|
||||
# Information sur le dépôt
|
||||
zenity $W --info --text="<tt>$(borg info $borg_repo)</tt>" | ZenityPulsate
|
||||
zenity $W --info --text="<tt>$(borg info "$borg_repo")</tt>" | ZenityPulsate "Récupération des informations..."
|
||||
|
||||
elif [ "$choixmenu" = "ap" ];then
|
||||
# Afficher le profil
|
||||
@ -298,6 +349,5 @@ fi
|
||||
else
|
||||
zenity $W --warning --text="Une ou des archives sont montées.\nDémontez-le afin de laisser le dépôt dans un état cohérent."
|
||||
fi
|
||||
|
||||
fi
|
||||
done
|
||||
|
50
install.sh
50
install.sh
@ -1,16 +1,41 @@
|
||||
#! /bin/bash
|
||||
|
||||
. testdistro.sh
|
||||
|
||||
# Borg zenity install and update
|
||||
which zenity
|
||||
if [ "$?" != "0" ]; then
|
||||
bash testdistro.sh || exit
|
||||
if [[ "$OS" =~ "Fedora" ]];then
|
||||
echo "Fedora detecté"
|
||||
sudo dnf install borgbackup zenity
|
||||
|
||||
elif [[ "$OS" =~ "Debian" ]];then
|
||||
echo "Debian detecté"
|
||||
su -c "apt-get -y install borgbackup zenity"
|
||||
|
||||
elif [[ "$OS" =~ "Ubuntu" ]];then
|
||||
echo "Ubuntu detecté"
|
||||
sudo apt-get install -y borgbackup zenity
|
||||
|
||||
elif [[ "$OS" =~ "Linux Mint" ]];then
|
||||
echo "Linux Mint detecté"
|
||||
sudo apt-get install -y borgbackup zenity
|
||||
|
||||
elif [[ "$OS" =~ "Manjaro" ]];then
|
||||
echo "Manjaro detecté"
|
||||
sudo pacman -Sy borgbackup zenity
|
||||
fi
|
||||
|
||||
which borg
|
||||
if [ "$?" != "0" ]; then
|
||||
bash testdistro.sh || exit
|
||||
fi
|
||||
if [[ "$OS" =~ "Debian" ]];then
|
||||
su -c "mkdir -vp /opt/borg-zenity"
|
||||
su -c "cp -fv icons/borg.svg /usr/share/icons/"
|
||||
su -c "cp -fv icons/borgzenity-profils.svg /usr/share/icons/"
|
||||
su -c "cp -fv icons/borgzenity-sauvegarde.svg /usr/share/icons/"
|
||||
su -c "cp -fv borg-zenity-sauvegarde.desktop /usr/share/applications/"
|
||||
su -c "cp -fv borg-zenity-gestprofils.desktop /usr/share/applications/"
|
||||
su -c "cp -fv borg-gui.sh /opt/borg-zenity/"
|
||||
su -c "cp -fv profile-manager.sh /opt/borg-zenity/"
|
||||
su -c "cp -fv uninstall.sh /opt/borg-zenity/"
|
||||
|
||||
else
|
||||
# Copie des fichiers
|
||||
sudo mkdir -vp /opt/borg-zenity
|
||||
sudo cp -fv icons/borg.svg /usr/share/icons/
|
||||
@ -20,15 +45,26 @@ sudo cp -fv borg-zenity-sauvegarde.desktop /usr/share/applications/
|
||||
sudo cp -fv borg-zenity-gestprofils.desktop /usr/share/applications/
|
||||
sudo cp -fv borg-gui.sh /opt/borg-zenity/
|
||||
sudo cp -fv profile-manager.sh /opt/borg-zenity/
|
||||
sudo cp -fv uninstall.sh /opt/borg-zenity/
|
||||
fi
|
||||
|
||||
# réglages des droits
|
||||
if [[ "$OS" =~ "Debian" ]];then
|
||||
su -c "chmod a+rx /opt/borg-zenity/borg-gui.sh"
|
||||
su -c "chmod a+rx /opt/borg-zenity/profile-manager.sh"
|
||||
|
||||
else
|
||||
sudo chmod a+rx /opt/borg-zenity/borg-gui.sh
|
||||
sudo chmod a+rx /opt/borg-zenity/profile-manager.sh
|
||||
fi
|
||||
|
||||
# Création du fichier de configuration de base
|
||||
mkdir -vp $HOME/.config/borg/
|
||||
if [ ! -f $HOME/.config/borg/borg-zenity.conf ];then
|
||||
cp -fv borg-zenity.conf $HOME/.config/borg/
|
||||
fi
|
||||
|
||||
# nettoyage
|
||||
if [ -f readme.md ];then cd ..;fi
|
||||
if [ -f borg-zenity.zip ];then rm -v borg-zenity.zip;fi
|
||||
if [ -d borg-zenity ];then rm -rv borg-zenity;fi
|
||||
|
@ -1,6 +0,0 @@
|
||||
nomsauvegarde=""
|
||||
borg_repo=""
|
||||
borg_archive="$(date +%d_%B_%Y)"
|
||||
borg_dir=""
|
||||
borg_excludes=""
|
||||
borg_compress="--compress zlib,5"
|
@ -2,49 +2,41 @@
|
||||
|
||||
# Fonctions et variables
|
||||
###########################################################
|
||||
W="--width=600"
|
||||
H="--height=500"
|
||||
|
||||
ZenityPulsate () {
|
||||
zenity $W --window-icon=$HOME/.icons/borg.svg --progress --pulsate --auto-close
|
||||
zenity $W --window-icon=borg --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
|
||||
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
|
||||
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
|
||||
zenity $W --error --text="Impossible de trouver le dossier des données du dépôt."
|
||||
TestBorgErr="true"
|
||||
else
|
||||
TestBorgErr="false"
|
||||
fi
|
||||
}
|
||||
|
||||
W="--width=600"
|
||||
H="--height=500"
|
||||
|
||||
dossierprofil="$HOME/.config/borg/profils-borg-zenity/"
|
||||
mkdir -p $dossierprofil && cd $dossierprofil
|
||||
mkdir -p "$dossierprofil" && cd "$dossierprofil" || exit
|
||||
|
||||
# Affichage du menu
|
||||
###########################################################
|
||||
|
||||
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 \
|
||||
--column "id" --column "choix")
|
||||
ajd\nCréer un nouveau profil et le lier à un dépôt existant\n\
|
||||
ap\nAfficher les profils\n\
|
||||
mp\nModifier un profil (connaissance en ligne de commande borg requise)\
|
||||
" | zenity $H $W --window-icon=borg --list --column "id" --column "choix" --hide-column=1 --hide-header)
|
||||
|
||||
# Gestion des choix du menu
|
||||
###########################################################
|
||||
@ -52,41 +44,40 @@ ap\nAfficher les profils\
|
||||
### Créer un nouveau profil/dépôt ###
|
||||
|
||||
if [ "$choixmenu" = "cp" ];then
|
||||
|
||||
borg_repo=$(zenity --file-selection --directory)
|
||||
if [ ! -z "$(ls -A $borg_repo)" ]; then
|
||||
cd $HOME
|
||||
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."
|
||||
exit
|
||||
fi
|
||||
borg_repo=$(zenity --title "Dossier du dépôt" --file-selection --directory)
|
||||
done
|
||||
|
||||
zenity $W --question --text "Chiffrer le dépôt ? (recommandé)"
|
||||
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
|
||||
zenity $W --warning --text \
|
||||
"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
|
||||
export BORG_PASSPHRASE=""
|
||||
borg init --encryption=keyfile "$borg_repo" | ZenityPulsate
|
||||
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
|
||||
zenity $W --warning --text \
|
||||
"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
|
||||
borg init --encryption=none "$borg_repo" | ZenityPulsate
|
||||
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")
|
||||
|
||||
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)
|
||||
|
||||
if [ "$profilename" = "" ];then zenity $W --error --text "Pas de nom de profil";exit;fi
|
||||
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"
|
||||
@ -97,21 +88,29 @@ borg_compress=""
|
||||
dryrun=""
|
||||
EOF
|
||||
|
||||
zenity $W --info --text "Le profil $profilename a été créé."
|
||||
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
|
||||
|
||||
borg_repo=$(zenity --title "Dossier du dépôt" --file-selection --directory)
|
||||
borg_dir=$(zenity --title "Dossier à sauvegarder" --file-selection --directory)
|
||||
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
|
||||
|
||||
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)
|
||||
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"
|
||||
@ -128,8 +127,23 @@ zenity $W --info --text "Le dépôt à bien été ajouté.\nLancez «Borg Zenity
|
||||
### Afficher les profils ###
|
||||
|
||||
elif [ "$choixmenu" = "ap" ];then
|
||||
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")
|
||||
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")
|
||||
if [ "$fichierprofil" != "" ];then
|
||||
zenity $W $H --info --text="<tt>$(cd "$dossierprofil" && cat "$fichierprofil")</tt>"
|
||||
fi
|
||||
|
||||
### Modifier un profil ###
|
||||
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")
|
||||
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
|
||||
|
||||
elif [ "$choixmenu" = "" ];then
|
||||
exit
|
||||
|
43
readme.md
43
readme.md
@ -6,44 +6,17 @@ Pre-requis : Borg-zeniy utilise `borgbackup` et `zenity` pour fonctionner.
|
||||
Le script devrait les installer automatiquement en détectant votre distribution.
|
||||
S'il n'y parvient pas vous devrez les installer manuellement.
|
||||
|
||||
## Installation (version stable)
|
||||
## Installation et mise à jour (version stable)
|
||||
L'installation devrait pouvoir se faire en ligne de commande. Copiez ceci dans votre terminal.
|
||||
```
|
||||
wget -O borg-zenity.zip https://git.djan-gicquel.fr/djan/borg-zenity/archive/stable.zip && unzip borg-zenity.zip && cd borg-zenity && bash install.sh
|
||||
wget -O borg-zenity.zip https://git.djan-gicquel.fr/djan/borg-zenity/archive/stable.zip && unzip -d ./ borg-zenity.zip && cd borg-zenity && bash install.sh
|
||||
```
|
||||
|
||||
Cette commande va télécharger les fichiers d'installation et exécuter le script d'installation.
|
||||
|
||||
Vous devrez entrer votre mot de passe utilisateur et cet utilisateur devra avoir les droits root.
|
||||
Vous devrez entrer votre mot de passe utilisateur et cet utilisateur devra avoir les droits d'administration.
|
||||
|
||||
## Gestionnaire de profils
|
||||
![icône gestionnaire de profils](captures/icone_profils.png)
|
||||
|
||||
Si vous n'utilisez pas encore `borgbackup` (ce qui normalement est le cas), il faudra tout d'abord créer un profil de sauvegarde.
|
||||
Pour cela utiliser l’icône "Borg Zenity Profils" dans votre menu principal et sélectionnez «Créer un nouveau profil/dépôt».
|
||||
Sélectionnez le dossier dans lequel sera créé le dépôt. C'est l'emplacement de votre sauvegarde, en général on utilise un disque dur externe.
|
||||
Puis répondez à la question concernant le chiffrement du dépôt. Les fichiers du dépôt sont initialisés.
|
||||
Sélectionnez ensuite un dossier à sauvegarder puis choisissez un nom de profil. Celui-ci sera stocké comme fichier donc évitez les espaces et les caractères spéciaux.
|
||||
|
||||
|
||||
## Interface principale
|
||||
|
||||
Pour lancer l'interface principale cliquez sur l'icône «Borg Zenity Sauvegarde» dans le menu et sélectionnez le profil voulu.
|
||||
|
||||
![icône interface principale](captures/icone_sauvegarde.png)
|
||||
|
||||
Le selecteur de profils se lancera. Si vous n'avez qu'un seul profil, il n'y aura qu'une entrée dans cette liste.
|
||||
|
||||
![selecteur de profils](captures/selecteurdeprofils.png)
|
||||
|
||||
Voici l'interface principale.
|
||||
|
||||
![interface_principale](captures/interfaceprincipale.png)
|
||||
|
||||
En vocabulaire borg, une archive est une sauvegarde.
|
||||
|
||||
Pour créer une sauvegarde cliquez sur «Créer une archive». La première sauvegarde prendra du temps, les suivantes seront plus rapide.
|
||||
|
||||
Pour voir le contenu d'une archive déjà sauvegardée cliquez sur «Monter une archive». Un nouveau dossier sera créé en lecture seule dans votre dossier maison. Il contiendra les fichiers de l'archive. Pensez à démonter l'archive dans le menu correspondant avant de quitter Borg Zenity.
|
||||
|
||||
Pour quitter Borg Zenity sélectionnez «QUITTER» puis validez ceci afin pouvoir faire quelques tests avant de quitter le logiciel.
|
||||
## Désinstallation
|
||||
Copier cette ligne dans le terminal.
|
||||
```
|
||||
sudo bash /opt/borg-zenity/uninstall.sh
|
||||
```
|
||||
|
@ -24,41 +24,10 @@ elif [ -f /etc/SuSe-release ]; then
|
||||
elif [ -f /etc/redhat-release ]; then
|
||||
# Older Red Hat, CentOS, etc.
|
||||
OS=Redhat
|
||||
else
|
||||
echo "La distribution n'a pas été détecté."
|
||||
echo "Installez les paquets \"borgbackup\" et \"zenity\" manuellement."
|
||||
exit
|
||||
fi
|
||||
|
||||
echo "OS = $OS"
|
||||
|
||||
if [[ "$OS" =~ "Fedora" ]];then
|
||||
echo "Fedora detecté"
|
||||
sudo dnf install borgbackup zenity
|
||||
|
||||
elif [[ "$OS" =~ Mageia ]];then
|
||||
# non fonctionnel sur Mageia 8, le paquet borgbackup n'existe pas encore
|
||||
echo "Mageia detecté"
|
||||
su -c "dnf install borgbackup zenity"
|
||||
|
||||
elif [[ "$OS" =~ Debian ]];then
|
||||
echo "Debian detecté"
|
||||
su -c apt install -y borgbackup zenity
|
||||
|
||||
elif [[ "$OS" =~ Ubuntu ]];then
|
||||
echo "Ubuntu detecté"
|
||||
sudo apt install -y borgbackup zenity
|
||||
|
||||
elif [[ "$OS" =~ "Linux Mint" ]];then
|
||||
echo "Linux Mint detecté"
|
||||
sudo apt install -y borgbackup zenity
|
||||
|
||||
elif [[ "$OS" =~ Manjaro ]];then
|
||||
echo "Manjaro detecté"
|
||||
sudo pacman -Sy borgbackup zenity
|
||||
|
||||
else
|
||||
echo "La distribution n'a pas été détecté."
|
||||
echo "Installez les paquets \"borgbackup\" et \"zenity\" manuellement."
|
||||
exit
|
||||
fi
|
||||
if [ "$OS" = "" ];then
|
||||
echo "La distribution n'a pas été détecté."
|
||||
echo "Installez les paquets \"borgbackup\" et \"zenity\" manuellement."
|
||||
exit
|
||||
fi
|
||||
|
@ -6,9 +6,8 @@ sudo rm -vf /usr/share/icons/borgzenity-profils.svg
|
||||
sudo rm -vf /usr/share/icons/borgzenity-sauvegarde.svg
|
||||
sudo rm -vf /usr/share/applications/borg-zenity-sauvegarde.desktop
|
||||
sudo rm -vf /usr/share/applications/borg-zenity-gestprofils.desktop
|
||||
sudo rm -vf /opt/borg-zenity/borg-gui.sh
|
||||
sudo rm -vf /opt/borg-zenity/profile-manager.sh
|
||||
sudo rm -vrf /opt/borg-zenity/
|
||||
|
||||
echo "--------------------"
|
||||
echo "Désinstallation terminée."
|
||||
echo "Vous pouvez supprimmer la configuration manuellement dans ~/.config/borg/"
|
||||
echo "Vous pouvez supprimer la configuration manuellement dans ~/.config/borg/"
|
||||
|
Loading…
Reference in New Issue
Block a user