# Travail terminé, corrections

**URL:** <https://www.debian-fr.org/t/travail-termine-corrections/33195>\
**Category:** Programmation\
**Created:** [Février 21, 2016, 2:54 UTC](https://www.debian-fr.org/t/travail-termine-corrections/33195 "2016-02-21T02:54:53Z")\
**Posts on this page:** 20\
**Page:** 10

<div class="post-metadata">

**Author:** ![ricardo](https://www.debian-fr.org/user_avatar/www.debian-fr.org/ricardo/32/3864_2.png) [@ricardo](https://www.debian-fr.org/u/ricardo)\
**Post date:** [Février 21, 2016, 3:01 UTC](https://www.debian-fr.org/t/travail-termine-corrections/33195/181 "2016-02-21T03:01:54Z")

</div>

[quote=«&nbsp;MisterFreez&nbsp;»]Un petit détail.

Que ce passe t’il quand la sauvegarde se passe bien ?[/quote]On sort !  
Voici les dernières lignes d’une sauvegarde complète, avec la même annonce au milieu quand il passe de la sauvegarde de ‹&nbsp;/&nbsp;› à celle de ‹&nbsp;~/&nbsp;›

[code]ricardo/site\_web/attente/  
deleting ricardo/site\_web/attente/CD-live.jpg  
deleting ricardo/site\_web/attente/0-IMG\_9869\_1.jpg

sent 272793760 bytes received 8105 bytes 7085762.73 bytes/sec  
total size is 2276125153 speedup is 8.34

Sauvegarde de /home/ricardo : OK  
ricardo@sid-sda8:~/Documents$ [/code]

EDIT :  
Et j’ai vérifié que le démontage se fait bien ou ne se fait pas si déjà monté au départ.

EDIT 2 :  
Bien vu ![:013](https://www.debian-fr.org/uploads/default/original/1X/086709e9e4d48f0fa24e42243bbce857fc2be47f.gif "colere")  
J’ai placé un test de sortie sur la fonction sortie\_propre() et il n’y va pas pas ![:018](https://www.debian-fr.org/uploads/default/original/1X/35d75f143a06bf2f0d0242498020dfb195b53630.gif "non")  
Je répare et je reviens.

[quote=«&nbsp;MisterFreez&nbsp;»]  
Petit trucs cosmétique : la fonction test\_sauvegarde() se content-elle de tester si la sauvegarde s’est bien passée ?[/quote]  
Je suppose que tu veux parler du titre de la fonction ? 😉  
Si oui, je me suis posé la même question mais je ne sais pas par quoi remplacer qui soit suffisamment court et explicite.

---

<div class="post-metadata">

**Author:** ![ricardo](https://www.debian-fr.org/user_avatar/www.debian-fr.org/ricardo/32/3864_2.png) [@ricardo](https://www.debian-fr.org/u/ricardo)\
**Post date:** [Février 21, 2016, 3:01 UTC](https://www.debian-fr.org/t/travail-termine-corrections/33195/182 "2016-02-21T03:01:55Z")

</div>

T’as vraiment les yeux partout ![:023](https://www.debian-fr.org/uploads/default/original/1X/3c587556c0cc11389317c03a60788d77ceebd307.gif "OK")  
Alors, j’ai placé un test dans sortie\_propre()

[code]function sortie\_propre()  
{

```
if ["$deja_montee" = 0]
then 
	sudo umount "$mount_rep"
else
# Si la partition de sauvegarde était déjà montée lors de l'appel, on sort sans la démonter.
	sync
fi

```

echo ‹&nbsp;test de sortie&nbsp;› #########################  
exit  
}   
[/code]  
J’ai rajouté un ordre vers cette fonction dans la sauvegarde proprement dite :

`read -p "prêt pour la sauvegarde ? o/* : " onyva
   	if ["$onyva" = o]
   	then
		for((index=1; index < ${#controle[@]}; index++))
		do
			test_sauvegarde "${controle[$index]}" "${exclure[$index]}" "${dossier_a_sauver[$index]}" "${sauve[$index]}"
		done
	        sortie_propre ###############
	else
      		sortie_propre 
   	fi`  
J’ai testé partition déjà montée et partition non montée au départ : c’est bien pris en compte à l’arrivée.  
Ci-dessous, action complète épurée

[quote]ricardo@sid-sda8:~/Documents$ essai

1. sauve
2. sauve2
3. quitter  
Entrez le N° de la sauvegarde choisie : 2  
CONTENU de la CORBEILLE

La corbeille est vide  
prêt pour la sauvegarde ? o/\* : o  
sending incremental file list  
etc/  
etc/mtab  
…  
sent 20933218 bytes received 14268 bytes 821470.04 bytes/sec  
total size is 4838480294 speedup is 230.98

Sauvegarde de / : OK

sending incremental file list  
…  
ricardo/Documents/modif-tuto  
ricardo/Documents/modif-tuto~

sent 6492047 bytes received 3239 bytes 2598114.40 bytes/sec  
total size is 2288048755 speedup is 352.26

Sauvegarde de /home/ricardo : OK  
test de sortie  
ricardo@sid-sda8:~/Documents$  
[/quote]

---

<div class="post-metadata">

**Author:** ![MisterFreez](https://www.debian-fr.org/letter_avatar_proxy/v4/letter/m/bb73d2/32.png) [@MisterFreez](https://www.debian-fr.org/u/MisterFreez)\
**Post date:** [Février 21, 2016, 3:01 UTC](https://www.debian-fr.org/t/travail-termine-corrections/33195/183 "2016-02-21T03:01:55Z")

</div>

> [@ricardo](#):
>
> T’as vraiment les yeux partout ![:023](https://www.debian-fr.org/uploads/default/original/1X/3c587556c0cc11389317c03a60788d77ceebd307.gif "OK")

C’est un peu mon job 😃

Pour la fonction test\_sauvegarde(), je te propose tout simplement sauvegarde().

Pour ce qui est de la sortie c’est nickel, mais encore améliorable. Grosso modo ton algo c’est :

```auto
lire_valeur onyva
si onyva vaut o alors
   sauvegarde
   sortie_propre
sinon
   sortie_propre
finsi
```

sortie\_propre() est appelée quelque soit la valeur de $onyva, non ? 😉

(et là tu pourras me faire une remarque sur l’utilité d’avoir créé une fonction…)

---

<div class="post-metadata">

**Author:** ![ricardo](https://www.debian-fr.org/user_avatar/www.debian-fr.org/ricardo/32/3864_2.png) [@ricardo](https://www.debian-fr.org/u/ricardo)\
**Post date:** [Février 21, 2016, 3:01 UTC](https://www.debian-fr.org/t/travail-termine-corrections/33195/184 "2016-02-21T03:01:56Z")

</div>

> [@MisterFreez](#):
>
> [quote=«&nbsp;ricardo&nbsp;»]T’as vraiment les yeux partout ![:023](https://www.debian-fr.org/uploads/default/original/1X/3c587556c0cc11389317c03a60788d77ceebd307.gif "OK")

C’est un peu mon job 😃

Pour la fonction test\_sauvegarde(), je te propose tout simplement sauvegarde().

Pour ce qui est de la sortie c’est nickel, mais encore améliorable. Grosso modo ton algo c’est :

```auto
lire_valeur onyva
si onyva vaut o alors
   sauvegarde
   sortie_propre
sinon
   sortie_propre
finsi
```

sortie\_propre() est appelée quelque soit la valeur de $onyva, non ? 😉

(et là tu pourras me faire une remarque sur l’utilité d’avoir créé une fonction…)[/quote]  
Oui mais pas que là :

`if ! grep -q "^${ddext[$index]} "$mount_rep" ${systeme_fich[$index]}" /etc/mtab 
		then
			sudo mount -t "${systeme_fich[$index]}" "${ddext[$index]}" "$mount_rep" || sortie_propre ################""
			break `  
où j’ai remplacé le ‹&nbsp;exit&nbsp;›.

Pour le nom de la fonction : ok, je modifie. J’avais peur que ça induise en erreur un lecteur, et qu’il confonde avec

`PS3="Entrez le N° de la sauvegarde choisie : "
select sauvegarde ###############`, que j’ai changé, lui, en ‹&nbsp;choix\_sauvegarde&nbsp;› pour éviter toute confusion.

---

<div class="post-metadata">

**Author:** ![MisterFreez](https://www.debian-fr.org/letter_avatar_proxy/v4/letter/m/bb73d2/32.png) [@MisterFreez](https://www.debian-fr.org/u/MisterFreez)\
**Post date:** [Février 21, 2016, 3:01 UTC](https://www.debian-fr.org/t/travail-termine-corrections/33195/185 "2016-02-21T03:01:57Z")

</div>

Oui, tu as raison et tu as bien fais 🙂

Tu as modifié la fin du script ?

---

<div class="post-metadata">

**Author:** ![ricardo](https://www.debian-fr.org/user_avatar/www.debian-fr.org/ricardo/32/3864_2.png) [@ricardo](https://www.debian-fr.org/u/ricardo)\
**Post date:** [Février 21, 2016, 3:01 UTC](https://www.debian-fr.org/t/travail-termine-corrections/33195/186 "2016-02-21T03:01:57Z")

</div>

[quote=“MisterFreez”]Oui, tu as raison et tu as bien fais 🙂

Tu as modifié la fin du script ?[/quote]  
oui 😃

`do
			sauvegarde "${controle[$index]}" "${exclure[$index]}" "${dossier_a_sauver[$index]}" "${sauve[$index]}"
		done`

En dehors de la question du ‘help’, tu vois encore quelque chose ?

[code]#!/bin/bash

### BEGIN INIT INFO

# Nom du script : sauvegarde

# Auteur : Ricardo, aidé de l’équipe de ‘[debian-fr.org](http://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  
#+ Ce script a été écrit de façon à ce qu’il soit le plus générique possible.  
#+ Les seules données que vous devriez avoir à changer, se trouvent dans la partie droite des variables.

# Pre-requis : voir tuto = [http://www.debian-fr.org/sauvegarde-clonage-d-une-sid-t25179.html](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](http://debian-fr.org)” nous serait agréable

# Modifié le :

# Objet de la modification :

### END INIT INFO

#----------------- Fonctions ----------------------------  
function sauvegarde()  
{  
sudo rsync -av --del --backup --backup-dir="$1" --exclude-from="$2" “$3” “$4”

```
	# Teste si la sauvegarde a abouti ( = 0), sinon, on sort.
	if (("$?" > 0))
	then
			printf "\nErreur lors de la sauvegarde de %s\n" "$3" 
	else
			printf "\nSauvegarde de %s : OK\n" "$3"
	fi  

```

}

function sortie\_propre()  
{

```
if ["$deja_montee" = 0]
then 
	sudo umount "$mount_rep"
else
# Si la partition de sauvegarde était déjà montée lors de l'appel, on sort sans la démonter.
	sync
fi

```

exit  
}

#----------------- 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’)  
dossier\_a\_sauver=(’’ ‘/’ ‘/home/ricardo’)

#----------------- Départ du script ----------------------------

# 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 via la fonction ‘sortie\_propre()’

deja\_montee=0  
PS3="Entrez le N° de la sauvegarde choisie : "  
select choix\_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” || sortie\_propre  
break  
else  
printf "Info : La partition ${ddext[$index]} est déjà montée\n"  
deja\_montee=1  
break  
fi  
;;  
3) echo “On sort du script”; sortie\_propre  
;;  
\*) 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

# Ordre de sauvegarde faisant appel à la fonction ‘sauvegarde()’

read -p "prêt pour la sauvegarde ? o/\* : " onyva  
if [“$onyva” = o]  
then  
for((index=1; index \< ${#controle[@]}; index++))  
do  
sauvegarde “${controle[$index]}” “${exclure[$index]}” “${dossier\_a\_sauver[$index]}” "${sauve[$index]}"  
done  
sortie\_propre  
else  
sortie\_propre  
fi  
[/code]

---

<div class="post-metadata">

**Author:** ![MisterFreez](https://www.debian-fr.org/letter_avatar_proxy/v4/letter/m/bb73d2/32.png) [@MisterFreez](https://www.debian-fr.org/u/MisterFreez)\
**Post date:** [Février 21, 2016, 3:01 UTC](https://www.debian-fr.org/t/travail-termine-corrections/33195/187 "2016-02-21T03:01:58Z")

</div>

Excuse moi, j’ai pas du bien me faire comprendre :

`# Ordre de sauvegarde faisant appel à la fonction 'sauvegarde()'
read -p "prêt pour la sauvegarde ? o/* : " onyva
      if ["$onyva" = o]
      then
      for((index=1; index < ${#controle[@]}; index++))
      do
         sauvegarde "${controle[$index]}" "${exclure[$index]}" "${dossier_a_sauver[$index]}" "${sauve[$index]}"
      done
      sortie_propre
   else
            sortie_propre 
      fi`  
La fonction sortie\_propre, tu l’appelle quelque soit la valeur de $onyva. Donc tu devrais pouvoir le mettre en dehors du « if then else fi ».

Ensuite pour utiliser sortie propre ici :

```auto

```

Il faut que tu fasse une vérification supplémentaire dans la fonction. En effet si la partition n’est pas déjà montée et que mount rate. Tu va tenter de démonter une partition qui ne l’ai pas.

Dans ta fonction, ce qu’il faut c’est :  
[ul]  
[li]si la partition est montée (regarder ça dans /etc/mtab)  
[list]  
[_]si elle n’était pas déjà montée  
[list]  
[_]la démonter[/li][/ul][/_:m]  
[li]sinon  
[ul]  
[_]lancer sync[/li][/ul][/_:m][/list:u][/_:m][/list:u]

Donc il ne te manque que la première condition et tu l’as déjà écrite ailleurs 🙂

---

<div class="post-metadata">

**Author:** ![ricardo](https://www.debian-fr.org/user_avatar/www.debian-fr.org/ricardo/32/3864_2.png) [@ricardo](https://www.debian-fr.org/u/ricardo)\
**Post date:** [Février 21, 2016, 3:02 UTC](https://www.debian-fr.org/t/travail-termine-corrections/33195/188 "2016-02-21T03:02:04Z")

</div>

Putain de coupure chez Free ces jours-ci ![:013](https://www.debian-fr.org/uploads/default/original/1X/086709e9e4d48f0fa24e42243bbce857fc2be47f.gif "colere")  
Heureusement, ça revient assez vite.  
Réponse à la première colle :  
En effet, tu as raison 😒 , comme toujours 😆  
Bientôt, on va arriver à faire tout ce script en une seule ligne ![:mrgreen:](https://www.debian-fr.org/uploads/default/original/1X/cc83e9b583138e48ff45f96609046b06d06c7f9d.gif "Mr. Green")  
Donc, comme ça, ça colle (testé = bon dans les deux cas, monté ou pas) :

`# Ordre de sauvegarde faisant appel à la fonction 'sauvegarde()'
read -p "prêt pour la sauvegarde ? o/* : " onyva
   	if ["$onyva" = o]
   	then
		for((index=1; index < ${#controle[@]}; index++))
		do
			sauvegarde "${controle[$index]}" "${exclure[$index]}" "${dossier_a_sauver[$index]}" "${sauve[$index]}"
		done
	fi
sortie_propre	`

---

<div class="post-metadata">

**Author:** ![ricardo](https://www.debian-fr.org/user_avatar/www.debian-fr.org/ricardo/32/3864_2.png) [@ricardo](https://www.debian-fr.org/u/ricardo)\
**Post date:** [Février 21, 2016, 3:02 UTC](https://www.debian-fr.org/t/travail-termine-corrections/33195/189 "2016-02-21T03:02:05Z")

</div>

Pour le second point, je ne comprends pas car  
if ! grep -q “^${ddext[$index]} “$mount\_rep” ${systeme\_fich[$index]}” /etc/mtab  
== si la partition n’est pas monté  
then  
sudo mount -t “${systeme\_fich[$index]}” “${ddext[$index]}” “$mount\_rep” || sortie\_propre  
== tu le montes  
break  
== et tu continues  
else  
==sinon, c’est à dire "si elle est déjà montée   
printf “Info : La partition ${ddext[$index]} est déjà montée\n”  
== tu nous tiens au courant  
deja\_montee=1  
== tu marques que l’index vaut '1’  
break  
== mais tu continues quand même

* * *

La sortie propre, ne sert qu’en cas d’erreur dans le système de fichier, comme c’est toi qui l’as dit plus haut. Rappelle-toi que je voulais la supprimer, pensant qu’elle faisait double fonction avec le 'else’  
Je me goure ptet mais il faut que tu m’expliques ce que je n’ai pas assimilé

---

<div class="post-metadata">

**Author:** ![ricardo](https://www.debian-fr.org/user_avatar/www.debian-fr.org/ricardo/32/3864_2.png) [@ricardo](https://www.debian-fr.org/u/ricardo)\
**Post date:** [Février 21, 2016, 3:02 UTC](https://www.debian-fr.org/t/travail-termine-corrections/33195/190 "2016-02-21T03:02:05Z")

</div>

Oui, pour le point 2, je viens de me rendrer compte de ce que tu redoutes :  
J’ai testé avec un mauvais ext ‘3’ au lieu de ‘2’

[code]ricardo@sid-sda8:~/Documents$ essai

1. sauve
2. sauve2
3. quitter  
Entrez le N° de la sauvegarde choisie : 2  
mount: wrong fs type, bad option, bad superblock on /dev/sdb10,  
missing codepage or helper program, or other error  
In some cases useful info is found in syslog - try  
dmesg | tail or so

umount: /mnt/autre: not mounted  
test  
ricardo@sid-sda8:~/Documents$  
[/code]

---

<div class="post-metadata">

**Author:** ![ricardo](https://www.debian-fr.org/user_avatar/www.debian-fr.org/ricardo/32/3864_2.png) [@ricardo](https://www.debian-fr.org/u/ricardo)\
**Post date:** [Février 21, 2016, 3:02 UTC](https://www.debian-fr.org/t/travail-termine-corrections/33195/191 "2016-02-21T03:02:05Z")

</div>

Ça donnerait ce qui suit alors ?

[code]function sortie\_propre()  
{  
if grep -q “^${ddext[$index]} “$mount\_rep” ${systeme\_fich[$index]}” /etc/mtab  
then  
if [“$deja\_montee” = 0]  
then  
sudo umount "$mount\_rep"  
else   
# Si la partition de sauvegarde était déjà montée lors de l’appel, on sort sans la démonter.  
sync  
fi

```
fi

```

exit  
}[/code]

---

<div class="post-metadata">

**Author:** ![MisterFreez](https://www.debian-fr.org/letter_avatar_proxy/v4/letter/m/bb73d2/32.png) [@MisterFreez](https://www.debian-fr.org/u/MisterFreez)\
**Post date:** [Février 21, 2016, 3:02 UTC](https://www.debian-fr.org/t/travail-termine-corrections/33195/192 "2016-02-21T03:02:12Z")

</div>

Tu as tout compris ![:023](https://www.debian-fr.org/uploads/default/original/1X/3c587556c0cc11389317c03a60788d77ceebd307.gif "OK")  
Je te félicite chaudement. Je sais pas si je me répète mais c’est rare que ce genre de script gèrent aussi bien les cas d’erreur.

Si tu veut faire le -h, je crois que tu n’a pas besoin de moi, mais si tu as une question je suis disponible 🙂

---

<div class="post-metadata">

**Author:** ![ricardo](https://www.debian-fr.org/user_avatar/www.debian-fr.org/ricardo/32/3864_2.png) [@ricardo](https://www.debian-fr.org/u/ricardo)\
**Post date:** [Février 21, 2016, 3:02 UTC](https://www.debian-fr.org/t/travail-termine-corrections/33195/193 "2016-02-21T03:02:13Z")

</div>

Tu as mal lu car je me suis gouré en recopiant, je viens de voir que j’ai placé le ‘then’ en bas alors qu’il est aussitôt après le 1er if. Je rectifie mon message du dessus  
Dans mon test, il était bien placé 😆  
Donc maintenant, il n’y a plus de :

`umount: /mnt/autre: not mounted
`  
Mais il subsiste, c’est normal, l’alerte comme quoi il y a l’erreur que j’ai provoquée pour le test :

`mount: wrong fs type, bad option, bad superblock on /dev/sdb10,
       missing codepage or helper program, or other error
       In some cases useful info is found in syslog - try
       dmesg | tail or so
`

Je vais donc pouvoir placer ce dernier jet dans le wiki et aussi dans le tuto et passer au côté “aide” où, j’aurais besoin de toi quand même pour la forme à donner à ce genre d’exercice que je ne connais pas du tout.

---

<div class="post-metadata">

**Author:** ![ricardo](https://www.debian-fr.org/user_avatar/www.debian-fr.org/ricardo/32/3864_2.png) [@ricardo](https://www.debian-fr.org/u/ricardo)\
**Post date:** [Février 21, 2016, 3:02 UTC](https://www.debian-fr.org/t/travail-termine-corrections/33195/194 "2016-02-21T03:02:13Z")

</div>

![:013](https://www.debian-fr.org/uploads/default/original/1X/086709e9e4d48f0fa24e42243bbce857fc2be47f.gif "colere") ![:013](https://www.debian-fr.org/uploads/default/original/1X/086709e9e4d48f0fa24e42243bbce857fc2be47f.gif "colere") ![:013](https://www.debian-fr.org/uploads/default/original/1X/086709e9e4d48f0fa24e42243bbce857fc2be47f.gif "colere") En fait, ça ne va pas encore !  
comme ça : quand la partition n’est pas montée au départ, elle n’est pas «&nbsp;démontée&nbsp;»

`function sortie_propre()
{	
	if grep -q "^${ddext[$index]} "$mount_rep" ${systeme_fich[$index]}" /etc/mtab 
	then	
		if ["$deja_montee" = 0]
		then 
			sudo umount "$mount_rep"
		else
			sync
		fi
	fi
exit
}`  
Si j’inverse le premier ‹&nbsp;if&nbsp;› avec ‹&nbsp;!&nbsp;›, c’est comme avant, sans cette ligne, càd que j’ai une alerte «&nbsp;umount: /mnt/autre: not mounted&nbsp;» provoquée en cas d’erreur de système de fichiers. Par contre, les démontages ou pas sont bien respectés.  
Toujours ce problème de fin de ligne du ‹&nbsp;mount&nbsp;›«&nbsp;|| sortie\_propre&nbsp;»

`function sortie_propre()
{	
	if ! grep -q "^${ddext[$index]} "$mount_rep" ${systeme_fich[$index]}" /etc/mtab 
	then	
		if ["$deja_montee" = 0]
		then 
			sudo umount "$mount_rep"
		else	
			sync
		fi
	fi
exit
}`

---

<div class="post-metadata">

**Author:** ![ricardo](https://www.debian-fr.org/user_avatar/www.debian-fr.org/ricardo/32/3864_2.png) [@ricardo](https://www.debian-fr.org/u/ricardo)\
**Post date:** [Février 21, 2016, 3:02 UTC](https://www.debian-fr.org/t/travail-termine-corrections/33195/195 "2016-02-21T03:02:13Z")

</div>

J’ai trouvé un autre système, qui n’est ptet pas très académique mais qui fonctionne dans les 3 cas.  
Je suis revenu à la fonction antérieure et j’ai rajouté un «&nbsp;deja\_montee=1&nbsp;» avant d’aller à «&nbsp;sortie\_propre&nbsp;»  
Tu vas certainement me trouver une façon plus belle de faire la même chose 😉

## `function sortie_propre() { if ["$deja_montee" = 0] then sudo umount "$mount_rep" else sync fi exit }	`

`# Choix de la sauvegarde. Si le montage ne s'effectue pas, on sort avec via la fonction 'sortie_propre()' 
deja_montee=0
PS3="Entrez le N° de la sauvegarde choisie : "
select choix_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" || { deja_montee=1; sortie_propre; }
			break 
		else
			printf "Info : La partition ${ddext[$index]} est déjà montée\n" 
			deja_montee=1 
			break 
		fi
;;
	3) echo "On sort du script"; sortie_propre 
;;
	*) echo "Saisie non valide !"
;;
esac
done`

ligne modifiée :

> [@](#):
>
> sudo mount -t «&nbsp;${systeme\_fich[$index]}&nbsp;» «&nbsp;${ddext[$index]}&nbsp;» «&nbsp;$mount\_rep&nbsp;» || { deja\_montee=1; sortie\_propre; }

---

<div class="post-metadata">

**Author:** ![MisterFreez](https://www.debian-fr.org/letter_avatar_proxy/v4/letter/m/bb73d2/32.png) [@MisterFreez](https://www.debian-fr.org/u/MisterFreez)\
**Post date:** [Février 21, 2016, 3:02 UTC](https://www.debian-fr.org/t/travail-termine-corrections/33195/196 "2016-02-21T03:02:15Z")

</div>

[quote=«&nbsp;ricardo&nbsp;»]:013 ![:013](https://www.debian-fr.org/uploads/default/original/1X/086709e9e4d48f0fa24e42243bbce857fc2be47f.gif "colere") ![:013](https://www.debian-fr.org/uploads/default/original/1X/086709e9e4d48f0fa24e42243bbce857fc2be47f.gif "colere") En fait, ça ne va pas encore !  
comme ça : quand la partition n’est pas montée au départ, elle n’est pas «&nbsp;démontée&nbsp;»

`function sortie_propre()
{	
	if grep -q "^${ddext[$index]} "$mount_rep" ${systeme_fich[$index]}" /etc/mtab 
	then	
		if ["$deja_montee" = 0]
		then 
			sudo umount "$mount_rep"
		else
			sync
		fi
	fi
exit
}`[/quote]  
Tu peut me dire quel chemin, il emprunte dans ce cas (la fonction fait juste un exit ou est ce qu’il fait aussi un sync) ?

---

<div class="post-metadata">

**Author:** ![ricardo](https://www.debian-fr.org/user_avatar/www.debian-fr.org/ricardo/32/3864_2.png) [@ricardo](https://www.debian-fr.org/u/ricardo)\
**Post date:** [Février 21, 2016, 3:02 UTC](https://www.debian-fr.org/t/travail-termine-corrections/33195/197 "2016-02-21T03:02:16Z")

</div>

J’ai abandonné ce système Michel.  
Je suis revenu à l’état antérieur de la fonction sortie\_propre() et j’ai rajouté une fin à la ligne de ‘mount’.  
Reprends tout le message au dessus de ton dernier.

EDIT :  
je viens de tester avec un echo juste après le ‘sync’ et en cas de montage au départ, il passe bien par le sync et il reste monté.  
fin de sauvegarde :

[code]sent 268317135 bytes received 6547 bytes 10522497.33 bytes/sec  
total size is 2286875351 speedup is 8.52

Sauvegarde de /home/ricardo : OK  
juste apres le sync dans la fonction  
ricardo@sid-sda8:~/Documents$ [/code]

edit 2 :  
en fait, j’ai trouvé plus propre mais je ne sais pas l’écrire :

`if ! grep -q "^${ddext[$index]} "$mount_rep" ${systeme_fich[$index]}" /etc/mtab ### AJOUTER ICI : "ET PAS D'ERREUR DE SYSTÈME DE FICHIER"
      then
         sudo mount -t "${systeme_fich[$index]}" "${ddext[$index]}" "$mount_rep" ### SUPPRIMER TTE LE FIN DE LIGNE || { deja_montee=1; sortie_propre; }
         break
      else
         printf "Info : La partition ${ddext[$index]} est déjà montée\n"
         deja_montee=1
         break
      fi`

[color=#0000FF]D’autre part, si on réfléchit bien, cette possibilité ne peut se rencontrer qu’une fois, la première.  
Le ‘mount’ fait appel au système de fichier, à la partition qui accueille la sauvegarde et au dossier de montage.

mount\_rep="/mnt/autre"  
ddext=(’’ ‘/dev/sdb9’ ‘/dev/sdb10’)  
systeme\_fich=(’’ ‘ext3’ ‘ext2’)

Quels sont les risques d’erreur :  
le répertoire de montage : si le gus le monte ailleurs, ce n’est pas grave  
la partition de réception de la sauvegarde : si elle a assez de place, ça fonctionnera quand même  
le système de fichier : la sauvegarde avorte et le message lui indique qu’il y a quelque chose qui déconne de ce côté, il vérifie, et il trouve.

`mount: wrong fs type, bad option, bad superblock on /dev/sdb10,
       missing codepage or helper program, or other error
       In some cases useful info is found in syslog - try
       dmesg | tail or so
`  
Le “begin info” dans son ‘pre-requis’, renvoie au tuto de T&A. Là, tout est expliqué mais je vais reprendre ce tuto et l’améliorer.  
Éventuellement, ça peut faire une réponse dans le futur 'help’  
On peut aussi mettre une alerte en début de “variables”, précisant qu’il convient de bien prendre attention aux modifications qui suivent.  
À mon avis, le mieux serait encore de supprimer purement et simplement cette vérification, qu’en penses-tu ?[/color]

---

<div class="post-metadata">

**Author:** ![ricardo](https://www.debian-fr.org/user_avatar/www.debian-fr.org/ricardo/32/3864_2.png) [@ricardo](https://www.debian-fr.org/u/ricardo)\
**Post date:** [Février 21, 2016, 3:03 UTC](https://www.debian-fr.org/t/travail-termine-corrections/33195/198 "2016-02-21T03:03:00Z")

</div>

Pour avoir une vue plus “aérée” du script ==\> le wiki :  
[http://www.isalo.org/wiki.debian-fr/index.php?title=Script\_de\_double\_sauvegarde\_altern%C3%A9e](http://www.isalo.org/wiki.debian-fr/index.php?title=Script_de_double_sauvegarde_altern%C3%A9e)

---

<div class="post-metadata">

**Author:** ![chris38](https://www.debian-fr.org/user_avatar/www.debian-fr.org/chris38/32/12918_2.png) [@chris38](https://www.debian-fr.org/u/chris38)\
**Post date:** [Février 21, 2016, 3:03 UTC](https://www.debian-fr.org/t/travail-termine-corrections/33195/199 "2016-02-21T03:03:44Z")

</div>

[quote=«&nbsp;ricardo&nbsp;»]Pour avoir une vue plus «&nbsp;aérée&nbsp;» du script ==\> le wiki :  
[http://www.isalo.org/wiki.debian-fr/index.php?title=Script\_de\_double\_sauvegarde\_alternée](http://www.isalo.org/wiki.debian-fr/index.php?title=Script_de_double_sauvegarde_altern%C3%A9e)[/quote]

Bonjour,  
Je me permet en passant, :

> [@](#):
>
> Objet de la modification : amélioration des avertissement sur les erreurs…

> [@](#):
>
> Teste l’existence des partitions de sauvegarde

> [@](#):
>
> # Teste si la corbeille est pleine (pésence de fichier(s)…

> [@](#):
>
> Il est souhaitables que ces partition soient…

Et très bon boulot !!!

---

<div class="post-metadata">

**Author:** ![ricardo](https://www.debian-fr.org/user_avatar/www.debian-fr.org/ricardo/32/3864_2.png) [@ricardo](https://www.debian-fr.org/u/ricardo)\
**Post date:** [Février 21, 2016, 3:04 UTC](https://www.debian-fr.org/t/travail-termine-corrections/33195/200 "2016-02-21T03:04:26Z")

</div>

[quote=«&nbsp;chris38&nbsp;»][quote=«&nbsp;ricardo&nbsp;»]Pour avoir une vue plus «&nbsp;aérée&nbsp;» du script ==\> le wiki :  
[http://www.isalo.org/wiki.debian-fr/index.php?title=Script\_de\_double\_sauvegarde\_alternée](http://www.isalo.org/wiki.debian-fr/index.php?title=Script_de_double_sauvegarde_altern%C3%A9e)[/quote]

Bonjour,  
Je me permet en passant, :

> [@](#):
>
> Objet de la modification : amélioration des avertissement sur les erreurs…

> [@](#):
>
> Teste l’existence des partitions de sauvegarde

> [@](#):
>
> # Teste si la corbeille est pleine (pésence de fichier(s)…

> [@](#):
>
> Il est souhaitables que ces partition soient…

Et très bon boulot !!![/quote]

Merci de la communication des fautes qui sont passées malgré une relecture.  
OK pour l’oubli du ‹&nbsp;s&nbsp;› à avertissements et à partition ainsi que de l’excès de ‹&nbsp;s&nbsp;› à souhaitable.  
Par contre, je ne vois pas de faute à «&nbsp;teste&nbsp;» ni à «&nbsp;présence&nbsp;». Tu peux me les expliquer ?

EDIT :  
Rectifications faites.  
Une relecture m’a permis d’en retrouver une de plus ainsi qu’une faute grave de syntaxe.

[Page précédente](https://www.debian-fr.org/t/travail-termine-corrections/33195.md?page=9)

[Page suivante](https://www.debian-fr.org/t/travail-termine-corrections/33195.md?page=11)
