Alors, encore une demande de correction complète avec le système '${REPLY}'
Je n’ai pas fait exactement comme tu m’as montré, Michel mais les tests sont bons.
Par contre, je n’ai pas trouvé le moyen de concaténer ça :
Il refuse [ -e “${ddext[*]}” ]. Je pense que la donnée vide pour passer au [1] directement est la cause ?[code]#!/bin/bash
BEGIN INIT INFO
Nom du script : sauvegarde
Auteur : Ricardo, aidé de l’équipe de ‘debian-fr.org’
Date de création : juillet 2011
Utilité : faciliter les sauvegardes
Version : cette version est écrite pour l’utilisation avec deux partitions de sauvegarde, à alterner dans le temps.
#+ Il est souhaitable que ces partitions soient sur un DD différent de celui qui abrite le système
Pre-requis : voir tuto = http://www.debian-fr.org/sauvegarde-clonage-d-une-sid-t25179.html
Description : script permettant d’effectuer, régulièrement et de façon simple, les sauvegardes de son système
Droits : entièrement libres mais en cas de copie, la citation de “debian-fr.org” nous serait agréable
Modifié le :
Objet de la modification :
END INIT INFO
#---------------------------------------------
function test_sauvegarde()
{
Teste si la sauvegarde a abouti (premier paramètre = 0), sinon, on sort.
if (("$1" > 0))
then
printf "\nErreur lors de la sauvegarde de %s\n" "$2" >&2
exit 1
else
printf "\nSauvegarde de %s : OK\n" "$2"
fi
}
#-----------------Variables-------------------
mount_rep="/mnt/autre"
la première donnée, vide, figure le [0], de façon à commencer par [1]
ddext=(’’ ‘/dev/sdb9’ ‘/dev/sdb10’)
systeme_fich=(’’ ‘ext3’ ‘ext2’)
controle=(’’ ‘/home/controle’ ‘/home/controle-ricardo’)
exclure=(’’ ‘/root/exclure’ ‘/home/ricardo/.exclure’)
sauve=(’’ ‘/mnt/autre/sauve’ ‘/mnt/autre/sauve-ricardo’)
#---------------------------------------------
Teste l’existence des partitions de sauvegarde et celle du dossier de montage, sinon, on sort avec erreur 1.
[ -e "${ddext[1]}" ] && [ -e "${ddext[2]}" ] || { echo "Le DDext ne répond pas !" >&2; exit 1; }
mkdir -p "$mount_rep" || { echo "Le dossier de montage n'existe pas !" >&2; exit 1; }
Choix de la sauvegarde. Si le montage ne s’effectue pas, on sort avec erreur 1.
deja_montee=0
PS3="Entrez le N° de la sauvegarde choisie : "
select sauvegarde in “sauve” “sauve2” quitter
do
case ${REPLY} in
[1-2])
index=${REPLY}
if ! grep -q “^${ddext[$index]} “$mount_rep” ${systeme_fich[$index]}” /etc/mtab
then
sudo mount -t “${systeme_fich[$index]}” “${ddext[$index]}” “$mount_rep” || exit 1;
break
else
printf "Info : La partition ${ddext[$index]} est déjà montée\n"
deja_montee=1
break
fi
;;
### 3) echo “On sort du menu”; break ###
;; 3) echo “On sort du script”; exit
*) echo “Saisie non valide !”
;;
esac
done
Teste si la corbeille est pleine (pésence de fichier(s) dans … /files), si elle l’est, liste les fichiers qu’elle contient
echo -e "\033[4mCONTENU de la CORBEILLE\033[0m\n"
if [ -e ~/.local/share/Trash/files/ ]
then
ls ~/.local/share/Trash/files
read -p "on peut la vider ? o/* : " corbeille
if [ “$corbeille” = o ]
then
rm -rf ~/.local/share/Trash/*
echo -e "\033[4mCORBEILLE VIDÉE\033[0m"
fi
else
echo "La corbeille est vide"
fi
Test de l’état de la sauvegarde avec la fonction “test_sauvegarde”, qui se chargera de quitter le script si celle-ci est KO
1er paramètre : $? = statut de la dernière commande, c.a.d le rsync
2nd paramètre : / puis ~/ = dossier à sauvegarder
read -p “prêt pour la sauvegarde ? o/* : " onyva
if [ “$onyva” = o ]
then
sudo rsync -av --del --backup --backup-dir=”${controle[1]}" --exclude-from="${exclure[1]}" / “${sauve[1]}“
test_sauvegarde $? /
sudo rsync -av --del --backup --backup-dir=”${controle[2]}” --exclude-from="${exclure[2]}" ~/ "${sauve[2]}"
test_sauvegarde $? ~/
else
exit 1
fi
Si la partition de sauvegarde était déjà montée lors de l’appel, on sort sans la démonter.
if [ "$deja_montee" = 0 ]
then
sudo umount "$mount_rep"
else
sync
fi
[/code]