Browse code

Ajout des premières versions du script

Fred authored on06/10/2014 23:35:41
Showing11 changed files
1 1
new file mode 100755
... ...
@@ -0,0 +1,15 @@
1
+#!/bin/bash
2
+# ce script est destiné à être exécuté en tache de fond lors du démarrage de l'ordinateur... Il a pour objet de signaler les éventuelles erreurs de la sauvegarde lancée lors de l'arrêt précédent de l'ordinateur.
3
+#
4
+# Pour donner un nom abrégé au fichier en indiquant le chemin correspondant.
5
+# ("backuperror.log" est le fichier destiné à enregistrer les éventuelles erreurs de sauvegarde.)
6
+backup=$HOME/Scripts/Sauvegarde/backuperror.log
7
+# Indique une action (l'édition par "gedit") si le fichier n'est pas vide (ce que vérifie l'option -s) :
8
+if [ -s $backup ]; then
9
+{
10
+  gedit $backup
11
+}
12
+# efface le fichier pour qu'il ne soit ouvert au démarrage suivant de l'ordinateur que s'il a été recréé avec mention d'erreurs lors du déroulement de la sauvegarde suivante.
13
+rm $backup
14
+fi
15
+
0 16
new file mode 100755
... ...
@@ -0,0 +1,121 @@
1
+#!/bin/bash
2
+#auteur : Frédéric CHEVALIER
3
+#version : 2.2
4
+#date de création : 2008-04-01
5
+#date de modification : 2009-03-15
6
+
7
+
8
+# pour donner un nom "raccourci" (incluant le chemin) au fichier backuperror.log :
9
+c=$HOME/Scripts/Sauvegarde
10
+backup=$c/backuperror.log
11
+# à noter l'usage des ">" : un seul ">" renvoie le contenu du terminal dans le fichier indiqué en écrasant tout ce que contient déjà ce fichier.
12
+# ">>" renvoie le contenu du terminal sans écraser ce que contient déjà le fichier.
13
+# Le chiffre "2" suivi d'un seul ">" renvoie seulement les messages d'erreurs générés par le processus dans le fichier indiqué
14
+# en écrasant le contenu de ce fichier. "2>>" renvoie les erreurs sans écraser le contenu du fichier.
15
+
16
+
17
+
18
+
19
+
20
+# -----------------------------
21
+# Vérifie la présence du volume
22
+# -----------------------------
23
+
24
+# Vérifie la connexion au serveur de sauvegarde
25
+
26
+if ! ping -c 1 10.16.137.10
27
+then
28
+echo "Erreur, vous n'êtes pas connecté au serveur de sauvegarde."
29
+echo "Erreur, vous n'êtes pas connecté au serveur de sauvegarde." > $backup
30
+date >> $backup
31
+sleep 30
32
+sudo shutdown -P now
33
+exit
34
+fi
35
+
36
+
37
+
38
+
39
+
40
+# --------------------------------
41
+# Monte la partition de sauvegarde
42
+# --------------------------------
43
+
44
+# le script effectue le montage de la partition "Sauvegarde" (dossier de sauvegarde situé sur le serveur de sauvegarde). Il est nécessaire d'avoir créer une dossier /media/Sauvegarde/ pour que le montage puisse se faire. D'autre part, le parquet smbfs doit être installé sur la machine.
45
+
46
+nd=Chevalier	# nom du dossier de sauvegarde
47
+username=EES2	# nom de connexion au dossier de sauvegarde
48
+password=ees2	# mot de passe au dossier de sauvegarde
49
+uid=fred	# nom de de l'utilisateur du compte (sous Linux)
50
+gid=fred	# nom du groupe auquel appartient l'utilisateur (sous Linux)
51
+
52
+sudo mount -t smbfs -o username=$username,password=$password,iocharset=utf8,uid=$uid,gid=$gid //10.16.137.10/$nd /media/Sauvegarde/
53
+
54
+
55
+
56
+
57
+
58
+# -----------------------------------
59
+# Lancement de la sauvegarde générale
60
+# -----------------------------------
61
+
62
+echo
63
+echo "LA SAUVEGARDE GENERALE EST EN COURS D'EXECUTION AVANT ARRET DE L'ORDINATEUR"
64
+echo
65
+
66
+
67
+touch $backup
68
+
69
+# Sauvegardes vers la partition de sauvegarde : ces sauvegardes se font à l'aide d'un fichier list (qui doit être généré à côté de ce script) dans lequel il est nécessaire de mettre les sources et destinations de la manière suivante :
70
+#<source> <destination> (en ommettant le # de commentaire ici présent)
71
+# e.g.: </home/fred/Bureau/Thèse> </media/Sauvegarde/Thèse>
72
+
73
+if [ ! -s $c/list ]
74
+then echo "le fichier list n'existe pas, il doit être créé (éditez le script de sauvegarde pour plus de renseignement (cf. ligne 69))"
75
+echo "le fichier list n'existe pas, il doit être créé (éditez le script de sauvegarde pour plus de renseignement (cf. ligne 69))" >> $backup
76
+sleep 30
77
+exit
78
+fi
79
+
80
+cp $c/list $c/list.u
81
+sed -i 's/> </>\n</g' $c/list.u
82
+sed -i 's/<\|>//g' $c/list.u
83
+
84
+while [ -s $c/list.u ]
85
+do
86
+s=$(sed q $c/list.u)
87
+sed -i '1d' $c/list.u
88
+d=$(sed q $c/list.u)
89
+sed -i '1d' $c/list.u
90
+
91
+rsync -a --progress -u --delete-after "$s" "$d" 2>> $backup
92
+
93
+done
94
+
95
+rm $c/list.u
96
+
97
+
98
+
99
+
100
+
101
+# ----------------
102
+# Rapport d'erreur
103
+# ----------------
104
+# Insertion de la date à la fin de la liste d'erreur si le fichier backuperror n'est pas vide (c'est à dire s'il y a des erreurs),
105
+# ce que vérifie l'option "-s" :
106
+
107
+if [ -s $backup ]
108
+then date >> $backup
109
+else rm $backup
110
+fi
111
+
112
+
113
+
114
+
115
+
116
+# ---------------------
117
+# Arrêt de l'ordinateur
118
+# ---------------------
119
+
120
+sudo shutdown -P now
121
+
0 122
new file mode 100644
... ...
@@ -0,0 +1,64 @@
1
+#!/bin/bash
2
+#auteur : Frédéric CHEVALIER
3
+#version : 1.0
4
+#date de création : 2008-04-01
5
+#date de modification : 2008-04-01
6
+
7
+
8
+# pour donner un nom "raccourci" (incluant le chemin) au fichier backuperror.log :
9
+backup=$HOME/Documents/Sauvegardes/backuperror.log
10
+# à noter l'usage des ">" : un seul ">" renvoie le contenu du terminal dans le fichier indiqué en écrasant tout ce que contient déjà ce fichier.
11
+# ">>" renvoie le contenu du terminal sans écraser ce que contient déjà le fichier.
12
+# Le chiffre "2" suivi d'un seul ">" renvoie seulement les messages d'erreurs générés par le processus dans le fichier indiqué
13
+# en écrasant le contenu de ce fichier. "2>>" renvoie les erreurs sans écraser le contenu du fichier.
14
+
15
+
16
+
17
+# Vérifie la présence du volume : le script effectue la vérification du montage de la partition "Sauvegarde" (dossier de sauvegarde situé sur le serveur de sauvegarde.
18
+if ! ping -c 1 10.16.137.10
19
+then
20
+echo "Erreur, vous n'êtes pas connecté au serveur de sauvegarde."
21
+echo "Erreur, vous n'êtes pas connecté au serveur de sauvegarde." > $backup
22
+date >> $backup
23
+sleep 30
24
+sudo shutdown -P now
25
+exit
26
+fi
27
+
28
+
29
+
30
+# Monte la partition de sauvegarde
31
+sudo mount -t smbfs -o username=EES2,password=ees2,iocharset=utf8,uid=fred,gid=fred //10.16.137.10/Chevalier /media/Sauvegarde/
32
+
33
+
34
+
35
+#titre de lancement de la sauvegarde générale
36
+echo
37
+echo "LA SAUVEGARDE GENERALE EST EN COURS D'EXECUTION AVANT ARRET DE L'ORDINATEUR"
38
+echo
39
+
40
+
41
+# Sauvegardes vers la partition de sauvegarde :
42
+rsync -a --progress -u /media/DATA/Alignements/* /media/DATA/Universite/Thèse/Résultats/Alignements/ 2> $backup
43
+rsync -a --progress -u /home/fred/Bureau/Associations/* /media/Sauvegarde/Associations 2>> $backup
44
+rsync -a --progress -u /home/fred/Bureau/Communication/* /media/Sauvegarde/Communication 2>> $backup
45
+rsync -a --progress -u /home/fred/Bureau/Monitorat/* /media/Sauvegarde/Monitorat 2>> $backup
46
+rsync -a --progress -u "/media/DATA/Ecole Doctorale/"* "/media/Sauvegarde/Ecole Doctorale" 2>> $backup
47
+rsync -a --progress -u /home/fred/Bureau/Thèse/* /media/Sauvegarde/Thèse 2>> $backup
48
+rsync -a --progress -u "/media/DATA/0-Application Data/Profiles/Thunderbird/Fred/"* /media/Sauvegarde/Divers/Thunderbird/Fred 2>> $backup
49
+rsync -a --progress -u "/media/DATA/0-Application Data/Profiles/Firefox/Fred/"* /media/Sauvegarde/Divers/Firefox/Fred 2>> $backup
50
+rsync -a --progress -u "/media/DATA/0-Application Data/Profiles/Sunbird/Fred/"* /media/Sauvegarde/Divers/Sunbird/Fred 2>> $backup && sudo umount /media/Sauvegarde/ 2>> $backup
51
+
52
+
53
+
54
+# Insertion de la date à la fin de la liste d'erreur si le fichier backuperror n'est pas vide (c'est à dire s'il y a des erreurs),
55
+# ce que vérifie l'option "-s" :
56
+if [ -s $backup ]; then
57
+{
58
+  date >> $backup
59
+}
60
+fi
61
+
62
+# Arrêt de l'ordinateur :
63
+sudo shutdown -P now
64
+
0 65
new file mode 100755
... ...
@@ -0,0 +1,114 @@
1
+#!/bin/bash
2
+#auteur : Frédéric CHEVALIER
3
+#version : 1.1
4
+#date de création : 2008-04-01
5
+#date de modification : 2009-03-02
6
+
7
+
8
+# pour donner un nom "raccourci" (incluant le chemin) au fichier backuperror.log :
9
+backup=$HOME/Documents/Sauvegardes/backuperror.log
10
+# à noter l'usage des ">" : un seul ">" renvoie le contenu du terminal dans le fichier indiqué en écrasant tout ce que contient déjà ce fichier.
11
+# ">>" renvoie le contenu du terminal sans écraser ce que contient déjà le fichier.
12
+# Le chiffre "2" suivi d'un seul ">" renvoie seulement les messages d'erreurs générés par le processus dans le fichier indiqué
13
+# en écrasant le contenu de ce fichier. "2>>" renvoie les erreurs sans écraser le contenu du fichier.
14
+
15
+
16
+
17
+# Vérifie la présence du volume : le script effectue la vérification du montage de la partition "Sauvegarde" (dossier de sauvegarde situé sur le serveur de sauvegarde.
18
+if ! ping -c 1 10.16.137.10
19
+then
20
+echo "Erreur, vous n'êtes pas connecté au serveur de sauvegarde."
21
+echo "Erreur, vous n'êtes pas connecté au serveur de sauvegarde." > $backup
22
+date >> $backup
23
+sleep 30
24
+sudo shutdown -P now
25
+exit
26
+fi
27
+
28
+
29
+
30
+# Monte la partition de sauvegarde
31
+sudo mount -t smbfs -o username=EES2,password=ees2,iocharset=utf8,uid=fred,gid=fred //10.16.137.10/Chevalier /media/Sauvegarde/
32
+
33
+
34
+
35
+
36
+
37
+# Mets en variable le dossier de sauvegarde
38
+s="/media/Sauvegarde"
39
+
40
+cd $s
41
+
42
+# Génère un fichier dans lequel figure le mois et l'année en cours
43
+date '+%Y-%m' > d2
44
+
45
+# Boucle de nettoyage de la sauvegarde
46
+# Compare avec un fichier précédemment créé et possédant le mois et l'année du dernier nettoyage
47
+if ! diff d1 d2		# Si la date figurant dans les deux fichiers est différentes, la boucle se lance
48
+	then
49
+	echo
50
+	echo "NETTOYAGE MENSUEL DE LA SAUVEGARDE GENERALE AVANT LA NOUVELLE SAUVEGARDE"	# titre de lancement du nettoyage mensuel de la sauvegarde
51
+	echo
52
+	rm d1
53
+	rm d2
54
+	ls -p > list			# liste l'ensemble des fichiers se trouvant sur la sauvegarde
55
+	sed -i '\/list/d' list
56
+	mkdir svg.old			# créer le dossier de stockage de l'ancienne savegarde
57
+		if [ -d svg.old ]	# si le dossier existe, déplace l'ensemble de l'ancienne sauvegarde dans le dossier de stockage
58
+		then 
59
+			while [ -s list ]
60
+			do
61
+			l=$(sed q list)
62
+			mv -t svg.old/ "$l"
63
+			sed -i '1d' list
64
+			done
65
+		rm list
66
+		fi
67
+	date '+%Y-%m' > d1	# génère un nouveau fichier d1 avec la date du nouveau nettoyage
68
+	else rm d2	# Si la date figurant dans les deux fichiers d1 et d2 est identique, le fichier d2 est effacé
69
+fi
70
+
71
+
72
+
73
+
74
+
75
+#titre de lancement de la sauvegarde générale
76
+echo
77
+echo "LA SAUVEGARDE GENERALE EST EN COURS D'EXECUTION AVANT ARRET DE L'ORDINATEUR"
78
+echo
79
+
80
+
81
+# Sauvegardes vers la partition de sauvegarde :
82
+rsync -a --progress -u /media/DATA/Alignements/* /media/DATA/Universite/Thèse/Résultats/Alignements/ 2> $backup
83
+rsync -a --progress -u /home/fred/Bureau/Associations/* /media/Sauvegarde/Associations 2>> $backup
84
+rsync -a --progress -u /home/fred/Bureau/Communication/* /media/Sauvegarde/Communication 2>> $backup
85
+rsync -a --progress -u /home/fred/Bureau/Monitorat/* /media/Sauvegarde/Monitorat 2>> $backup
86
+rsync -a --progress -u "/media/DATA/Ecole Doctorale/"* "/media/Sauvegarde/Ecole Doctorale" 2>> $backup
87
+rsync -a --progress -u /home/fred/Bureau/Thèse/* /media/Sauvegarde/Thèse 2>> $backup
88
+rsync -a --progress -u "/media/DATA/0-Application Data/Profiles/Thunderbird/Fred/"* /media/Sauvegarde/Divers/Thunderbird/Fred 2>> $backup
89
+rsync -a --progress -u "/media/DATA/0-Application Data/Profiles/Firefox/Fred/"* /media/Sauvegarde/Divers/Firefox/Fred 2>> $backup
90
+rsync -a --progress -u "/media/DATA/0-Application Data/Profiles/Sunbird/Fred/"* /media/Sauvegarde/Divers/Sunbird/Fred 2>> $backup && sudo umount /media/Sauvegarde/ 2>> $backup
91
+
92
+
93
+
94
+
95
+
96
+
97
+#Suppression du dossier contenant l'ancienne sauvegarde lorsque le nettoyage et la nouvelle sauvegarde ont été effectuées
98
+if [ -d svg.old ]
99
+then rm -r svg.old/
100
+fi
101
+
102
+
103
+
104
+# Insertion de la date à la fin de la liste d'erreur si le fichier backuperror n'est pas vide (c'est à dire s'il y a des erreurs),
105
+# ce que vérifie l'option "-s" :
106
+if [ -s $backup ]; then
107
+{
108
+  date >> $backup
109
+}
110
+fi
111
+
112
+# Arrêt de l'ordinateur :
113
+sudo shutdown -P now
114
+
0 115
new file mode 100755
... ...
@@ -0,0 +1,66 @@
1
+#!/bin/bash
2
+#auteur : Frédéric CHEVALIER
3
+#version : 2.0
4
+#date de création : 2008-04-01
5
+#date de modification : 2009-03-09
6
+
7
+
8
+# pour donner un nom "raccourci" (incluant le chemin) au fichier backuperror.log :
9
+backup=$HOME/Documents/Sauvegardes/backuperror.log
10
+# à noter l'usage des ">" : un seul ">" renvoie le contenu du terminal dans le fichier indiqué en écrasant tout ce que contient déjà ce fichier.
11
+# ">>" renvoie le contenu du terminal sans écraser ce que contient déjà le fichier.
12
+# Le chiffre "2" suivi d'un seul ">" renvoie seulement les messages d'erreurs générés par le processus dans le fichier indiqué
13
+# en écrasant le contenu de ce fichier. "2>>" renvoie les erreurs sans écraser le contenu du fichier.
14
+
15
+
16
+
17
+# Vérifie la présence du volume : le script effectue la vérification du montage de la partition "Sauvegarde" (dossier de sauvegarde situé sur le serveur de sauvegarde.
18
+if ! ping -c 1 10.16.137.10
19
+then
20
+echo "Erreur, vous n'êtes pas connecté au serveur de sauvegarde."
21
+echo "Erreur, vous n'êtes pas connecté au serveur de sauvegarde." > $backup
22
+date >> $backup
23
+sleep 30
24
+sudo shutdown -P now
25
+exit
26
+fi
27
+
28
+
29
+
30
+# Monte la partition de sauvegarde
31
+sudo mount -t smbfs -o username=EES2,password=ees2,iocharset=utf8,uid=fred,gid=fred //10.16.137.10/Chevalier /media/Sauvegarde/
32
+
33
+
34
+
35
+
36
+
37
+#titre de lancement de la sauvegarde générale
38
+echo
39
+echo "LA SAUVEGARDE GENERALE EST EN COURS D'EXECUTION AVANT ARRET DE L'ORDINATEUR"
40
+echo
41
+
42
+
43
+# Sauvegardes vers la partition de sauvegarde :
44
+rsync -a --progress -u -delete /media/DATA/Alignements/ /media/DATA/Universite/Thèse/Résultats/Alignements/ 2> $backup
45
+rsync -a --progress -u -delete /home/fred/Bureau/Associations/ /media/Sauvegarde/Associations 2>> $backup
46
+rsync -a --progress -u -delete /home/fred/Bureau/Communication/ /media/Sauvegarde/Communication 2>> $backup
47
+rsync -a --progress -u -delete /home/fred/Bureau/Monitorat/ /media/Sauvegarde/Monitorat 2>> $backup
48
+rsync -a --progress -u -delete "/media/DATA/Ecole Doctorale/" "/media/Sauvegarde/Ecole Doctorale" 2>> $backup
49
+rsync -a --progress -u -delete /home/fred/Bureau/Thèse/ /media/Sauvegarde/Thèse 2>> $backup
50
+rsync -a --progress -u -delete "/media/DATA/0-Application Data/Profiles/Thunderbird/Fred/" /media/Sauvegarde/Divers/Thunderbird/Fred 2>> $backup
51
+rsync -a --progress -u -delete "/media/DATA/0-Application Data/Profiles/Firefox/Fred/" /media/Sauvegarde/Divers/Firefox/Fred 2>> $backup
52
+rsync -a --progress -u -delete "/media/DATA/0-Application Data/Profiles/Sunbird/Fred/" /media/Sauvegarde/Divers/Sunbird/Fred 2>> $backup && sudo umount /media/Sauvegarde/ 2>> $backup
53
+
54
+
55
+
56
+# Insertion de la date à la fin de la liste d'erreur si le fichier backuperror n'est pas vide (c'est à dire s'il y a des erreurs),
57
+# ce que vérifie l'option "-s" :
58
+if [ -s $backup ]; then
59
+{
60
+  date >> $backup
61
+}
62
+fi
63
+
64
+# Arrêt de l'ordinateur :
65
+#sudo shutdown -P now
66
+
0 67
new file mode 100755
... ...
@@ -0,0 +1,117 @@
1
+#!/bin/bash
2
+#auteur : Frédéric CHEVALIER
3
+#version : 2.1
4
+#date de création : 2008-04-01
5
+#date de modification : 2009-03-12
6
+
7
+
8
+# pour donner un nom "raccourci" (incluant le chemin) au fichier backuperror.log :
9
+c=$HOME/Documents/Sauvegardes
10
+backup=$c/backuperror.log
11
+# à noter l'usage des ">" : un seul ">" renvoie le contenu du terminal dans le fichier indiqué en écrasant tout ce que contient déjà ce fichier.
12
+# ">>" renvoie le contenu du terminal sans écraser ce que contient déjà le fichier.
13
+# Le chiffre "2" suivi d'un seul ">" renvoie seulement les messages d'erreurs générés par le processus dans le fichier indiqué
14
+# en écrasant le contenu de ce fichier. "2>>" renvoie les erreurs sans écraser le contenu du fichier.
15
+
16
+
17
+
18
+
19
+
20
+# -----------------------------
21
+# Vérifie la présence du volume
22
+# -----------------------------
23
+
24
+# Vérifie la connexion au serveur de sauvegarde
25
+
26
+if ! ping -c 1 10.16.137.10
27
+then
28
+echo "Erreur, vous n'êtes pas connecté au serveur de sauvegarde."
29
+echo "Erreur, vous n'êtes pas connecté au serveur de sauvegarde." > $backup
30
+date >> $backup
31
+sleep 30
32
+sudo shutdown -P now
33
+exit
34
+fi
35
+
36
+
37
+
38
+
39
+
40
+# --------------------------------
41
+# Monte la partition de sauvegarde
42
+# --------------------------------
43
+
44
+# le script effectue le montage de la partition "Sauvegarde" (dossier de sauvegarde situé sur le serveur de sauvegarde). Il est nécessaire d'avoir créer une dossier /media/Sauvegarde/ pour que le montage puisse se faire. D'autre part, le parquet smbfs doit être installé sur la machine.
45
+
46
+nd=Chevalier	# nom du dossier de sauvegarde
47
+username=EES2	# nom de connexion au dossier de sauvegarde
48
+password=ees2	# mot de passe au dossier de sauvegarde
49
+uid=fred	# nom de de l'utilisateur du compte (sous Linux)
50
+gid=fred	# nom du groupe auquel appartient l'utilisateur (sous Linux)
51
+
52
+sudo mount -t smbfs -o username=$username,password=$password,iocharset=utf8,uid=$uid,gid=$gid //10.16.137.10/$nd /media/Sauvegarde/
53
+
54
+
55
+
56
+
57
+
58
+# -----------------------------------
59
+# Lancement de la sauvegarde générale
60
+# -----------------------------------
61
+
62
+echo
63
+echo "LA SAUVEGARDE GENERALE EST EN COURS D'EXECUTION AVANT ARRET DE L'ORDINATEUR"
64
+echo
65
+
66
+
67
+touch $backup
68
+
69
+# Sauvegardes vers la partition de sauvegarde : ces sauvegardes se font à l'aide d'un fichier list (qui doit être généré à côté de ce script) dans lequel il est nécessaire de mettre les sources et destination de la manière suivante :
70
+#"source" "destination" (en ommettant le # de commentaire ici présent)
71
+# e.g.: "/home/fred/Bureau/Thèse" "/media/Sauvegarde/Thèse"
72
+
73
+if [ ! -s $c/list ]
74
+then echo "le fichier list n'existe pas, il doit être créé (éditez le script de sauvegarde pour plus de renseignement (cf. ligne 68))"
75
+echo "le fichier list n'existe pas, il doit être créé (éditez le script de sauvegarde pour plus de renseignement (cf. ligne 68))" >> $backup
76
+sleep 30
77
+exit
78
+fi
79
+
80
+cp $c/list $c/list.u
81
+
82
+while [ -s $c/list.u ]
83
+do
84
+l=$(sed q $c/list.u)
85
+rsync -a --progress -u -delete $l 2>> $backup
86
+sed -i '1d' $c/list.u
87
+done
88
+
89
+rm $c/list.u
90
+
91
+
92
+
93
+
94
+
95
+# ----------------
96
+# Rapport d'erreur
97
+# ----------------
98
+# Insertion de la date à la fin de la liste d'erreur si le fichier backuperror n'est pas vide (c'est à dire s'il y a des erreurs),
99
+# ce que vérifie l'option "-s" :
100
+
101
+if [ -s $backup ]; then
102
+{
103
+  date >> $backup
104
+}
105
+else rm $backup
106
+fi
107
+
108
+
109
+
110
+
111
+
112
+# ---------------------
113
+# Arrêt de l'ordinateur
114
+# ---------------------
115
+
116
+#sudo shutdown -P now
117
+
0 118
new file mode 100644
... ...
@@ -0,0 +1,479 @@
1
+
2
+#!/bin/bash
3
+#auteur : Frédéric CHEVALIER
4
+#version : 0.0
5
+#date de création : 2009-02-16
6
+#date de modification :
7
+
8
+
9
+# ---------
10
+# Variables
11
+# ---------
12
+# cx : choix
13
+# dsa : dossier de sauvegarde
14
+# dsc : dossier de stockage des scripts
15
+
16
+
17
+
18
+# -------------
19
+# Message Titre
20
+# -------------
21
+echo "Installateur - Script de Sauvegarde v 2.0"
22
+
23
+
24
+
25
+
26
+# -----------------------
27
+# Message d'avertissement
28
+# -----------------------
29
+echo "Au cours de cette installation, vous devrez entrer votre mot de passe administrateur. Assurez-vous que vous ayez bien les droits administrateurs. Sinon, contactez l'administrateur du terminal."
30
+
31
+
32
+
33
+
34
+# ------------------------------------
35
+# Installation des paquets nécessaires
36
+# ------------------------------------
37
+echo "S'agit-il d'un serveur de sauvegarde sous :
38
+    1 - Microsoft Windows
39
+    2 - GNU/Linux
40
+
41
+Votre choix : "
42
+read reponse
43
+cx=$reponse
44
+
45
+case $cx in
46
+
47
+1)
48
+if [ ! -f /sbin/mount.cifs ]
49
+    then sudo apt-get install -y smbfs
50
+    type=smbfs
51
+    echo OK
52
+    else type=smbfs
53
+    echo OK
54
+fi
55
+;;
56
+
57
+2)
58
+if [ ! -f /sbin/mount.nfs ]
59
+    then sudo apt-get install -y nfs
60
+    type=nfs
61
+    echo OK
62
+    else type=nfs
63
+    echo OK
64
+fi
65
+
66
+esac
67
+
68
+
69
+
70
+
71
+# ------------------------------
72
+# Création du dossier de montage
73
+# ------------------------------
74
+echo "Création du dossier qui servira de point de montage du dossier sauvegarde présent sur le serveur distant :
75
+    1 - par défaut /media/Sauvegarde
76
+    2 - spécifier un dossier (attention à ne pas mettre de / à la fin du chemin)
77
+Votre choix : "
78
+read reponse
79
+cx=$reponse
80
+
81
+case $cx in
82
+
83
+1)
84
+dsa=/media/Sauvegarde
85
+sudo mkdir $dsa
86
+;;
87
+
88
+2)
89
+echo "Entrez le chemin du dossier à créer :"
90
+read d
91
+dsa=$d
92
+sudo mkdir $dsa
93
+
94
+esac
95
+
96
+
97
+
98
+
99
+# --------------------------
100
+# Création du dossier script
101
+# --------------------------
102
+echo "Création du dossier qui stockera les fichiers scripts nécessaires
103
+    1 - par défaut $HOME/Sauvegarde
104
+    2 - spécifier un dossier (attention à ne pas mettre de / à la fin du chemin)
105
+Votre choix : "
106
+read reponse
107
+cx=$reponse
108
+
109
+case $cx in
110
+
111
+1)
112
+dsc=$HOME/Sauvegarde
113
+mkdir $dsc
114
+;;
115
+
116
+2)
117
+echo "Entrez le chemin du dossier à créer :"
118
+read d
119
+dsc=$d
120
+mkdir $dsc
121
+
122
+esac
123
+
124
+
125
+
126
+
127
+# ---------------------------------------------------------
128
+# Récupération de l'UID et du GID de l'utilisateur en cours
129
+# ---------------------------------------------------------
130
+uid=$(grep $USER /etc/passwd | sed "s/:\([A-Z][a-z]\)/%/" | cut -d '%' -f1 | cut -d 'x' -f2 | sed -e "s/://" | sed -e "s/:\([0-9][0-9]*\)//")
131
+gid=$(grep $USER /etc/passwd | sed "s/:\([A-Z][a-z]\)/%/" | cut -d '%' -f1 | cut -d 'x' -f2 | sed -e "s/://" | sed -e "s/\([0-9][0-9]*\)://")
132
+
133
+
134
+
135
+
136
+# -------------------------------------------------------------------------
137
+# Informations relatives au dossier de sauvegarde se situant sur le serveur
138
+# -------------------------------------------------------------------------
139
+echo "Quelle est l'adresse IP du serveur de sauvegarde ?
140
+    1 - 10.16.137.10 (par défaut)
141
+    2 - spécifiez-la
142
+Votre choix : "
143
+read reponse
144
+cx=$reponse
145
+
146
+case $cx in
147
+
148
+1)
149
+IP=10.16.137.10
150
+;;
151
+2)
152
+echo "Entrez l'adresse IP du serveur :"
153
+read reponse
154
+IP=$reponse
155
+esac
156
+
157
+echo "Entrez le nom de votre dossier sur le serveur de sauvegarde (renseignez-vous en parcourant l'arborescence du réseau si nécessaire) :"
158
+read reponse
159
+nd=$reponse
160
+
161
+echo "Entrez le login correspondant à votre dossier de sauvegarde :"
162
+read reponse
163
+username=$reponse
164
+
165
+echo "Entrez le mot de passe correspondant à votre dossier de sauvegarde :"
166
+read reponse
167
+password=$reponse
168
+
169
+
170
+
171
+
172
+# --------------------------------------------------------------------------
173
+# Modification du fichier /etc/sudoers pour l'acquisition de nouveaux droits
174
+# --------------------------------------------------------------------------
175
+
176
+echo "Octroie du droit de monter une partition en tant qu'administrateur
177
+    1 - Oui (mais création d'une faille de sécurité)
178
+    2 - Non
179
+Votre choix : "
180
+read reponse
181
+cx=$reponse
182
+
183
+case $cx in
184
+
185
+1)
186
+if [ $type = smbfs ]
187
+    then
188
+    sudo bash -c "
189
+    cat >>/etc/sudoers <<EOT
190
+
191
+# Autorisation du mount par l'utilisateur "$USER"
192
+  $USER ALL=NOPASSWD:/sbin/mount.cifs
193
+
194
+EOT"
195
+fi
196
+
197
+if [ $type = nfs ]
198
+    then
199
+    sudo bash -c "
200
+    cat >>/etc/sudoers <<EOT
201
+
202
+# Autorisation du mount par l'utilisateur "$USER"
203
+  $USER ALL=NOPASSWD:/sbin/mount.nfs
204
+
205
+EOT"
206
+fi
207
+;;
208
+2)
209
+
210
+esac
211
+
212
+
213
+
214
+
215
+echo "Octroie du droit de démonter une partition en tant qu'administrateur
216
+    1 - Oui (mais création d'une faille de sécurité)
217
+    2 - Non
218
+Votre choix : "
219
+read reponse
220
+cx=$reponse
221
+
222
+case $cx in
223
+
224
+1)
225
+if [ $type = smbfs ]
226
+    then
227
+    sudo bash -c "
228
+    cat >>/etc/sudoers <<EOT
229
+
230
+# Autorisation du mount par l'utilisateur "$USER"
231
+  $USER ALL=NOPASSWD:/sbin/umount.cifs
232
+
233
+EOT"
234
+fi
235
+
236
+if [ $type = nfs ]
237
+    then
238
+    sudo bash -c "
239
+    cat >>/etc/sudoers <<EOT
240
+
241
+# Autorisation du mount par l'utilisateur "$USER"
242
+  $USER ALL=NOPASSWD:/sbin/umount.nfs
243
+
244
+EOT"
245
+fi
246
+;;
247
+2)
248
+
249
+esac
250
+
251
+
252
+
253
+
254
+echo "Octroie du droit d'éteindre le terminal en tant qu'administrateur
255
+    1 - Oui (mais création d'une faille de sécurité)
256
+    2 - Non
257
+Votre choix : "
258
+read reponse
259
+cx=$reponse
260
+
261
+case $cx in
262
+
263
+1)
264
+cat >>/etc/sudoers <<EOT
265
+# Autorisation du shutdown par l'utilisateur "$USER"
266
+  $USER ALL=NOPASSWD:/sbin/shutdown
267
+
268
+EOT
269
+;;
270
+
271
+2)
272
+
273
+esac
274
+
275
+
276
+
277
+# ------------------------
278
+# Création du fichier list
279
+# ------------------------
280
+
281
+echo "Voulez-vous créer le fichier liste qui contiendra les dossiers à sauvegarder ?
282
+    1 - Oui
283
+    2 - Non (consulter les commentaires du script de sauvegarde pour connaître le formatage nécessaire
284
+Votre choix : "
285
+read reponse
286
+cx=$reponse
287
+
288
+case $cx in
289
+
290
+1)
291
+touch $dsc/list
292
+a=0
293
+while [ $a -eq 0 ]
294
+do
295
+echo "Indiquez le chemin absolu du dossier : "
296
+read chemin
297
+ch=$chemin
298
+echo "Indiquez le noms que doit porter le dossier sur le serveur : "
299
+read nom
300
+nm=$nom
301
+echo "<$ch> <$dsa/$nm>" >> $dsc/list
302
+echo "Voulez-vous ajouter un dossier [o/n] : "
303
+read choix
304
+cx=$choix
305
+    if [ ! $cx -eq o ]
306
+        then a=1
307
+    fi
308
+done
309
+;;
310
+
311
+2)
312
+
313
+esac
314
+
315
+
316
+
317
+
318
+# --------------------------------
319
+# Création du script de sauvegarde
320
+# --------------------------------
321
+cat >$dsc/Sauvegarde <<EOT
322
+#!/bin/bash
323
+#auteur : Frédéric CHEVALIER
324
+#version : 2.3
325
+#date de création : 2008-04-01
326
+#date de modification : 2009-02-16
327
+
328
+
329
+# pour donner un nom "raccourci" (incluant le chemin) au fichier backuperror.log :
330
+c=$dsc
331
+backup=$c/backuperror.log
332
+# à noter l'usage des ">" : un seul ">" renvoie le contenu du terminal dans le fichier indiqué en écrasant tout ce que contient déjà ce fichier.
333
+# ">>" renvoie le contenu du terminal sans écraser ce que contient déjà le fichier.
334
+# Le chiffre "2" suivi d'un seul ">" renvoie seulement les messages d'erreurs générés par le processus dans le fichier indiqué
335
+# en écrasant le contenu de ce fichier. "2>>" renvoie les erreurs sans écraser le contenu du fichier.
336
+
337
+
338
+
339
+
340
+
341
+# -----------------------------
342
+# Vérifie la présence du volume
343
+# -----------------------------
344
+
345
+# Vérifie la connexion au serveur de sauvegarde
346
+
347
+if ! ping -c 1 10.16.137.10
348
+then
349
+echo "Erreur, vous n'êtes pas connecté au serveur de sauvegarde."
350
+echo "Erreur, vous n'êtes pas connecté au serveur de sauvegarde." > $backup
351
+date >> $backup
352
+sleep 30
353
+sudo shutdown -P now
354
+exit
355
+fi
356
+
357
+
358
+
359
+
360
+
361
+# --------------------------------
362
+# Monte la partition de sauvegarde
363
+# --------------------------------
364
+
365
+# le script effectue le montage de la partition "Sauvegarde" (dossier de sauvegarde situé sur le serveur de sauvegarde). Il est nécessaire d'avoir créer une dossier /media/Sauvegarde/ pour que le montage puisse se faire. D'autre part, le parquet smbfs doit être installé sur la machine.
366
+
367
+nd=Chevalier    # nom du dossier de sauvegarde
368
+username=EES2    # nom de connexion au dossier de sauvegarde
369
+password=ees2    # mot de passe au dossier de sauvegarde
370
+uid=fred    # nom de de l'utilisateur du compte (sous Linux)
371
+gid=fred    # nom du groupe auquel appartient l'utilisateur (sous Linux)
372
+
373
+sudo mount -t $type -o username=$username,password=$password,iocharset=utf8,uid=$uid,gid=$gid //$IP/$nd $dsa
374
+
375
+
376
+
377
+
378
+
379
+# -----------------------------------
380
+# Lancement de la sauvegarde générale
381
+# -----------------------------------
382
+
383
+echo
384
+echo "LA SAUVEGARDE GENERALE EST EN COURS D'EXECUTION AVANT ARRET DE L'ORDINATEUR"
385
+echo
386
+
387
+
388
+touch $backup
389
+
390
+# Sauvegardes vers la partition de sauvegarde : ces sauvegardes se font à l'aide d'un fichier list (qui doit être généré à côté de ce script) dans lequel il est nécessaire de mettre les sources et destinations de la manière suivante :
391
+#<source> <destination> (en ommettant le # de commentaire ici présent)
392
+# e.g.: </home/fred/Bureau/Thèse> </media/Sauvegarde/Thèse>
393
+
394
+if [ ! -s $c/list ]
395
+then echo "le fichier list n'existe pas, il doit être créé (éditez le script de sauvegarde pour plus de renseignement (cf. ligne 69))"
396
+echo "le fichier list n'existe pas, il doit être créé (éditez le script de sauvegarde pour plus de renseignement (cf. ligne 69))" >> $backup
397
+sleep 30
398
+exit
399
+fi
400
+
401
+cp $c/list $c/list.u
402
+sed -i 's/> </>\n</g' $c/list.u
403
+sed -i 's/<\|>//g' $c/list.u
404
+
405
+while [ -s $c/list.u ]
406
+do
407
+s=$(sed q $c/list.u)
408
+sed -i '1d' $c/list.u
409
+d=$(sed q $c/list.u)
410
+sed -i '1d' $c/list.u
411
+
412
+rsync -a --progress -u --delete-after "$s" "$d" 2>> $backup
413
+
414
+done
415
+
416
+rm $c/list.u
417
+
418
+
419
+
420
+
421
+
422
+# ----------------
423
+# Rapport d'erreur
424
+# ----------------
425
+# Insertion de la date à la fin de la liste d'erreur si le fichier backuperror n'est pas vide (c'est à dire s'il y a des erreurs),
426
+# ce que vérifie l'option "-s" :
427
+
428
+if [ -s $backup ]
429
+then date >> $backup
430
+else rm $backup
431
+fi
432
+
433
+
434
+
435
+
436
+
437
+# ---------------------
438
+# Arrêt de l'ordinateur
439
+# ---------------------
440
+
441
+sudo shutdown -P now
442
+
443
+EOT
444
+
445
+chmod u+x $dsc/Sauvegarde
446
+
447
+ln -s $dsc/Sauvegarde $HOME/Bureau/Sauvegarde
448
+
449
+
450
+
451
+
452
+# --------------------------------------
453
+# Création du script de rapport d'erreur
454
+# --------------------------------------
455
+
456
+cat >$dsc/Rapport <<EOT
457
+#!/bin/bash
458
+# ce script est destiné à être exécuté en tache de fond lors du démarrage de l'ordinateur... Il a pour objet de signaler les éventuelles erreurs de la sauvegarde lancée lors de l'arrêt précédent de l'ordinateur.
459
+#
460
+# Pour donner un nom abrégé au fichier en indiquant le chemin correspondant.
461
+# ("backuperror.log" est le fichier destiné à enregistrer les éventuelles erreurs de sauvegarde.)
462
+backup=$dsc/backuperror.log
463
+# Indique une action (l'édition par "gedit") si le fichier n'est pas vide (ce que vérifie l'option -s) :
464
+if [ -s $backup ]; then
465
+{
466
+  gedit $backup
467
+}
468
+# efface le fichier pour qu'il ne soit ouvert au démarrage suivant de l'ordinateur que s'il a été recréé avec mention d'erreurs lors du déroulement de la sauvegarde suivante.
469
+rm $backup
470
+fi
471
+
472
+EOT
473
+
474
+chmod u+x $dsc/Rapport
475
+
476
+
477
+echo "L'installation est terminé"
478
+sleep 5
479
+
0 480
new file mode 100644
... ...
@@ -0,0 +1,439 @@
1
+
2
+#!/bin/bash
3
+#auteur : Frédéric CHEVALIER
4
+#version : 0.1
5
+#date de création : 2009-02-16
6
+#date de modification : 2010-05-22
7
+
8
+
9
+# ---------
10
+# Variables
11
+# ---------
12
+# cx : choix
13
+# dsa : dossier de sauvegarde
14
+# dsc : dossier de stockage des scripts
15
+
16
+
17
+# -----------------------
18
+# Message d'avertissement
19
+# -----------------------
20
+zenity --info --title="Installateur - Script de Sauvegarde v 2.0" --text="Au cours de cette installation, vous devrez entrer votre mot de passe administrateur.
21
+Assurez-vous que vous ayez bien les droits administrateurs. Sinon, contactez l'administrateur de l'ordinateur."
22
+
23
+
24
+
25
+
26
+
27
+# ------------------------------------
28
+# Installation des paquets nécessaires
29
+# ------------------------------------
30
+cx=$(zenity --list --title="Installateur - Script de Sauvegarde v 2.0" --text="S'agit-il d'un serveur de sauvegarde sous :" --column="" "1 - Microsoft Windows" "2 - GNU/Linux")
31
+
32
+
33
+case $cx in
34
+
35
+1 - Microsoft Windows)
36
+if [ ! -f /sbin/mount.cifs ]
37
+	then sudo -K | zenity --entry --hide-text --text="Veuillez entrer le mot de passe Sudo" | sudo -S -s
38
+	sudo apt-get install -y smbfs
39
+	type=smbfs
40
+	echo OK
41
+	else type=smbfs
42
+	echo OK
43
+fi
44
+;;
45
+
46
+2 - GNU/Linux)
47
+if [ ! -f /sbin/mount.nfs ]
48
+	then sudo -K | zenity --entry --hide-text --text="Veuillez entrer le mot de passe Sudo" | sudo -S -s
49
+	sudo apt-get install -y nfs
50
+	type=nfs
51
+	echo OK
52
+	else type=nfs
53
+	echo OK
54
+fi
55
+
56
+esac
57
+
58
+
59
+
60
+
61
+# ------------------------------
62
+# Création du dossier de montage
63
+# ------------------------------
64
+cx=$(zenity --list --title="Installateur - Script de Sauvegarde v 2.0" --text="Création du dossier qui servira de point de montage du dossier sauvegarde présent sur le serveur distant :" --column="" "1 - par défaut /media/Sauvegarde" "2 - spécifier un dossier (attention à ne pas mettre de / à la fin du chemin)")
65
+
66
+case $cx in
67
+
68
+1 - par défaut /media/Sauvegarde)
69
+dsa=/media/Sauvegarde
70
+sudo -K | zenity --entry --hide-text --text="Veuillez entrer le mot de passe Sudo" | sudo -S -s
71
+sudo mkdir $dsa
72
+;;
73
+
74
+2 - spécifier un dossier (attention à ne pas mettre de / à la fin du chemin))
75
+zenity --info --title="Installateur - Script de Sauvegarde v 2.0" --text="Veuillez sélectionner le dossier dans lequel sera créé le point de montage"
76
+d=$(zenity --file-selection --title="Installateur - Script de Sauvegarde v 2.0" --directory)
77
+pm=$(zenity --entry --title="Installateur - Script de Sauvegarde v 2.0" --text="Quel nom doit porter le point de montage ?")
78
+dsa=$d$pm # !!! bug dans le nom généré ??? !!!
79
+sudo -K | zenity --entry --hide-text --text="Veuillez entrer le mot de passe Sudo" | sudo -S -s
80
+sudo mkdir $dsa
81
+
82
+esac
83
+
84
+
85
+
86
+
87
+# --------------------------
88
+# Création du dossier script
89
+# --------------------------
90
+cx=$(zenity --list --title="Installateur - Script de Sauvegarde v 2.0" --text="Création du dossier qui stockera les fichiers scripts nécessaires" --column="" "1 - par défaut $HOME/Sauvegarde" "2 - spécifier un dossier (attention à ne pas mettre de / à la fin du chemin)")
91
+
92
+case $cx in
93
+
94
+1 - par défaut $HOME/Sauvegarde)
95
+dsc=$HOME/Sauvegarde
96
+mkdir $dsc
97
+;;
98
+
99
+2 - spécifier un dossier (attention à ne pas mettre de / à la fin du chemin))
100
+zenity --info --title="Installateur - Script de Sauvegarde v 2.0" --text="Veuillez sélectionner le dossier dans lequel sera créé dossier contenant les futurs fichiers"
101
+d=$(zenity --file-selection --title="Installateur - Script de Sauvegarde v 2.0" --directory)
102
+f=$(zenity --entry --title="Installateur - Script de Sauvegarde v 2.0" --text="Quel nom doit porter le point de montage ?")
103
+dsc=$d$f # !!! bug dans le nom généré ??? !!!
104
+mkdir $dsc
105
+
106
+esac
107
+
108
+
109
+
110
+
111
+# ---------------------------------------------------------
112
+# Récupération de l'UID et du GID de l'utilisateur en cours
113
+# ---------------------------------------------------------
114
+uid=$(grep $USER /etc/passwd | sed "s/:\([A-Z][a-z]\)/%/" | cut -d '%' -f1 | cut -d 'x' -f2 | sed -e "s/://" | sed -e "s/:\([0-9][0-9]*\)//")
115
+gid=$(grep $USER /etc/passwd | sed "s/:\([A-Z][a-z]\)/%/" | cut -d '%' -f1 | cut -d 'x' -f2 | sed -e "s/://" | sed -e "s/\([0-9][0-9]*\)://")
116
+
117
+
118
+
119
+
120
+# -------------------------------------------------------------------------
121
+# Informations relatives au dossier de sauvegarde se situant sur le serveur
122
+# -------------------------------------------------------------------------
123
+cx=$(zenity --list --title="Installateur - Script de Sauvegarde v 2.0" --text="Quelle est l'adresse IP du serveur de sauvegarde ?" --column="" "1 - 10.16.137.10 (par défaut)" "2 - spécifiez-la")
124
+
125
+case $cx in
126
+
127
+1 - 10.16.137.10 (par défaut))
128
+IP=10.16.137.10
129
+;;
130
+2 - spécifiez-la)
131
+IP=$(zenity --entry --title="Installateur - Script de Sauvegarde v 2.0" --text="Entrez l'adresse IP du serveur :")
132
+esac
133
+
134
+zenity --info --title="Installateur - Script de Sauvegarde v 2.0" --text="Entrez le nom de votre dossier sur le serveur de sauvegarde (renseignez-vous en parcourant l'arborescence du réseau si nécessaire) :"
135
+nd=$(zenity --file-selection --title="Installateur - Script de Sauvegarde v 2.0" --directory)
136
+
137
+username=$(zenity --entry --title="Installateur - Script de Sauvegarde v 2.0" --text="Entrez le login correspondant à votre dossier de sauvegarde :")
138
+
139
+password=$(zenity --entry --title="Installateur - Script de Sauvegarde v 2.0" --text="Entrez le mot de passe correspondant à votre dossier de sauvegarde :")
140
+
141
+
142
+
143
+
144
+# --------------------------------------------------------------------------
145
+# Modification du fichier /etc/sudoers pour l'acquisition de nouveaux droits
146
+# --------------------------------------------------------------------------
147
+
148
+cx=$(zenity --list --title="Installateur - Script de Sauvegarde v 2.0" --text="Octroie du droit de monter une partition en tant qu'administrateur" --column="" "1 - Oui (mais création d'une faille de sécurité)" "2 - Non")
149
+
150
+case $cx in
151
+
152
+1 - Oui (mais création d\'une faille de sécurité))
153
+if [ $type = smbfs ]
154
+	then sudo -K | zenity --entry --hide-text --text="Veuillez entrer le mot de passe Sudo" | sudo -S -s
155
+	sudo bash -c "
156
+	cat >>/etc/sudoers <<EOT
157
+
158
+# Autorisation du mount par l'utilisateur "$USER"
159
+  $USER ALL=NOPASSWD:/sbin/mount.cifs
160
+
161
+EOT"
162
+fi
163
+
164
+if [ $type = nfs ]
165
+	then sudo -K | zenity --entry --hide-text --text="Veuillez entrer le mot de passe Sudo" | sudo -S -s
166
+	sudo bash -c "
167
+	cat >>/etc/sudoers <<EOT
168
+
169
+# Autorisation du mount par l'utilisateur "$USER"
170
+  $USER ALL=NOPASSWD:/sbin/mount.nfs
171
+
172
+EOT"
173
+fi
174
+;;
175
+2 - Non)
176
+
177
+esac
178
+
179
+
180
+
181
+
182
+cx=$(zenity --list --title="Installateur - Script de Sauvegarde v 2.0" --text="Octroie du droit de démonter une partition en tant qu'administrateur" --column="" "1 - Oui (mais création d'une faille de sécurité)" "2 - Non")
183
+
184
+case $cx in
185
+
186
+1 - Oui (mais création d\'une faille de sécurité))
187
+if [ $type = smbfs ]
188
+	then sudo -K | zenity --entry --hide-text --text="Veuillez entrer le mot de passe Sudo" | sudo -S -s
189
+	sudo bash -c "
190
+	cat >>/etc/sudoers <<EOT
191
+
192
+# Autorisation du mount par l'utilisateur "$USER"
193
+  $USER ALL=NOPASSWD:/sbin/umount.cifs
194
+
195
+EOT"
196
+fi
197
+
198
+if [ $type = nfs ]
199
+	then sudo -K | zenity --entry --hide-text --text="Veuillez entrer le mot de passe Sudo" | sudo -S -s
200
+	sudo bash -c "
201
+	cat >>/etc/sudoers <<EOT
202
+
203
+# Autorisation du mount par l'utilisateur "$USER"
204
+  $USER ALL=NOPASSWD:/sbin/umount.nfs
205
+
206
+EOT"
207
+fi
208
+;;
209
+2 - Non)
210
+
211
+esac
212
+
213
+
214
+
215
+
216
+cx=$(zenity --list --title="Installateur - Script de Sauvegarde v 2.0" --text="Octroie du droit d'éteindre le terminal en tant qu'administrateur" --column="" "1 - Oui (mais création d'une faille de sécurité)" "2 - Non")
217
+
218
+case $cx in
219
+
220
+1 - Oui (mais création d\'une faille de sécurité))
221
+then sudo -K | zenity --entry --hide-text --text="Veuillez entrer le mot de passe Sudo" | sudo -S -s
222
+sudo bash -c "
223
+cat >>/etc/sudoers <<EOT
224
+
225
+# Autorisation du shutdown par l'utilisateur "$USER"
226
+  $USER ALL=NOPASSWD:/sbin/shutdown
227
+
228
+EOT"
229
+;;
230
+
231
+2 - Non)
232
+
233
+esac
234
+
235
+
236
+
237
+# ------------------------
238
+# Création du fichier list
239
+# ------------------------
240
+
241
+echo "Voulez-vous créer le fichier liste qui contiendra les dossiers à sauvegarder ?
242
+    1 - Oui
243
+    2 - Non (consulter les commentaires du script de sauvegarde pour connaître le formatage nécessaire
244
+Votre choix : "
245
+read reponse
246
+cx=$reponse
247
+
248
+case $cx in
249
+
250
+1)
251
+touch $dsc/list
252
+a=0
253
+while [ $a -eq 0 ]
254
+do
255
+echo "Indiquez le chemin absolu du dossier : "
256
+read chemin
257
+ch=$chemin
258
+echo "Indiquez le noms que doit porter le dossier sur le serveur : "
259
+read nom
260
+nm=$nom
261
+echo "<$ch> <$dsa/$nm>" >> $dsc/list
262
+echo "Voulez-vous ajouter un dossier [o/n] : "
263
+read choix
264
+cx=$choix
265
+    if [ ! $cx -eq o ]
266
+        then a=1
267
+    fi
268
+done
269
+;;
270
+
271
+2)
272
+
273
+esac
274
+
275
+
276
+
277
+
278
+# --------------------------------
279
+# Création du script de sauvegarde
280
+# --------------------------------
281
+cat >$dsc/Sauvegarde <<EOT
282
+#!/bin/bash
283
+#auteur : Frédéric CHEVALIER
284
+#version : 2.3
285
+#date de création : 2008-04-01
286
+#date de modification : 2009-02-16
287
+
288
+
289
+# pour donner un nom "raccourci" (incluant le chemin) au fichier backuperror.log :
290
+c=$dsc
291
+backup=$c/backuperror.log
292
+# à noter l'usage des ">" : un seul ">" renvoie le contenu du terminal dans le fichier indiqué en écrasant tout ce que contient déjà ce fichier.
293
+# ">>" renvoie le contenu du terminal sans écraser ce que contient déjà le fichier.
294
+# Le chiffre "2" suivi d'un seul ">" renvoie seulement les messages d'erreurs générés par le processus dans le fichier indiqué
295
+# en écrasant le contenu de ce fichier. "2>>" renvoie les erreurs sans écraser le contenu du fichier.
296
+
297
+
298
+
299
+
300
+
301
+# -----------------------------
302
+# Vérifie la présence du volume
303
+# -----------------------------
304
+
305
+# Vérifie la connexion au serveur de sauvegarde
306
+
307
+if ! ping -c 1 10.16.137.10
308
+then
309
+echo "Erreur, vous n'êtes pas connecté au serveur de sauvegarde."
310
+echo "Erreur, vous n'êtes pas connecté au serveur de sauvegarde." > $backup
311
+date >> $backup
312
+sleep 30
313
+sudo shutdown -P now
314
+exit
315
+fi
316
+
317
+
318
+
319
+
320
+
321
+# --------------------------------
322
+# Monte la partition de sauvegarde
323
+# --------------------------------
324
+
325
+# le script effectue le montage de la partition "Sauvegarde" (dossier de sauvegarde situé sur le serveur de sauvegarde). Il est nécessaire d'avoir créer une dossier /media/Sauvegarde/ pour que le montage puisse se faire. D'autre part, le parquet smbfs doit être installé sur la machine.
326
+
327
+nd=Chevalier    # nom du dossier de sauvegarde
328
+username=EES2    # nom de connexion au dossier de sauvegarde
329
+password=ees2    # mot de passe au dossier de sauvegarde
330
+uid=fred    # nom de de l'utilisateur du compte (sous Linux)
331
+gid=fred    # nom du groupe auquel appartient l'utilisateur (sous Linux)
332
+
333
+sudo mount -t $type -o username=$username,password=$password,iocharset=utf8,uid=$uid,gid=$gid //$IP/$nd $dsa
334
+
335
+
336
+
337
+
338
+
339
+# -----------------------------------
340
+# Lancement de la sauvegarde générale
341
+# -----------------------------------
342
+
343
+echo
344
+echo "LA SAUVEGARDE GENERALE EST EN COURS D'EXECUTION AVANT ARRET DE L'ORDINATEUR"
345
+echo
346
+
347
+
348
+touch $backup
349
+
350
+# Sauvegardes vers la partition de sauvegarde : ces sauvegardes se font à l'aide d'un fichier list (qui doit être généré à côté de ce script) dans lequel il est nécessaire de mettre les sources et destinations de la manière suivante :
351
+#<source> <destination> (en ommettant le # de commentaire ici présent)
352
+# e.g.: </home/fred/Bureau/Thèse> </media/Sauvegarde/Thèse>
353
+
354
+if [ ! -s $c/list ]
355
+then echo "le fichier list n'existe pas, il doit être créé (éditez le script de sauvegarde pour plus de renseignement (cf. ligne 69))"
356
+echo "le fichier list n'existe pas, il doit être créé (éditez le script de sauvegarde pour plus de renseignement (cf. ligne 69))" >> $backup
357
+sleep 30
358
+exit
359
+fi
360
+
361
+cp $c/list $c/list.u
362
+sed -i 's/> </>\n</g' $c/list.u
363
+sed -i 's/<\|>//g' $c/list.u
364
+
365
+while [ -s $c/list.u ]
366
+do
367
+s=$(sed q $c/list.u)
368
+sed -i '1d' $c/list.u
369
+d=$(sed q $c/list.u)
370
+sed -i '1d' $c/list.u
371
+
372
+rsync -a --progress -u --delete-after "$s" "$d" 2>> $backup
373
+
374
+done
375
+
376
+rm $c/list.u
377
+
378
+
379
+
380
+
381
+
382
+# ----------------
383
+# Rapport d'erreur
384
+# ----------------
385
+# Insertion de la date à la fin de la liste d'erreur si le fichier backuperror n'est pas vide (c'est à dire s'il y a des erreurs),
386
+# ce que vérifie l'option "-s" :
387
+
388
+if [ -s $backup ]
389
+then date >> $backup
390
+else rm $backup
391
+fi
392
+
393
+
394
+
395
+
396
+
397
+# ---------------------
398
+# Arrêt de l'ordinateur
399
+# ---------------------
400
+
401
+sudo shutdown -P now
402
+
403
+EOT
404
+
405
+chmod u+x $dsc/Sauvegarde
406
+
407
+ln -s $dsc/Sauvegarde $HOME/Bureau/Sauvegarde
408
+
409
+
410
+
411
+
412
+# --------------------------------------
413
+# Création du script de rapport d'erreur
414
+# --------------------------------------
415
+
416
+cat >$dsc/Rapport <<EOT
417
+#!/bin/bash
418
+# ce script est destiné à être exécuté en tache de fond lors du démarrage de l'ordinateur... Il a pour objet de signaler les éventuelles erreurs de la sauvegarde lancée lors de l'arrêt précédent de l'ordinateur.
419
+#
420
+# Pour donner un nom abrégé au fichier en indiquant le chemin correspondant.
421
+# ("backuperror.log" est le fichier destiné à enregistrer les éventuelles erreurs de sauvegarde.)
422
+backup=$dsc/backuperror.log
423
+# Indique une action (l'édition par "gedit") si le fichier n'est pas vide (ce que vérifie l'option -s) :
424
+if [ -s $backup ]; then
425
+{
426
+  gedit $backup
427
+}
428
+# efface le fichier pour qu'il ne soit ouvert au démarrage suivant de l'ordinateur que s'il a été recréé avec mention d'erreurs lors du déroulement de la sauvegarde suivante.
429
+rm $backup
430
+fi
431
+
432
+EOT
433
+
434
+chmod u+x $dsc/Rapport
435
+
436
+
437
+echo "L'installation est terminé"
438
+sleep 5
439
+
0 440
new file mode 100644
... ...
@@ -0,0 +1,472 @@
1
+
2
+#!/bin/bash
3
+#auteur : Frédéric CHEVALIER
4
+#version : 0.1
5
+#date de création : 2009-02-16
6
+#date de modification : 2010-05-22
7
+
8
+
9
+# ---------
10
+# Variables
11
+# ---------
12
+# cx : choix
13
+# dsa : dossier de sauvegarde
14
+# dsc : dossier de stockage des scripts
15
+
16
+
17
+# -----------------------
18
+# Message d'avertissement
19
+# -----------------------
20
+zenity --info --title="Installateur - Script de Sauvegarde v 2.0" --text="Au cours de cette installation, vous devrez entrer votre mot de passe administrateur.
21
+Assurez-vous que vous ayez bien les droits administrateurs. Sinon, contactez l'administrateur de l'ordinateur."
22
+
23
+
24
+
25
+
26
+
27
+# ------------------------------------
28
+# Installation des paquets nécessaires
29
+# ------------------------------------
30
+echo "S'agit-il d'un serveur de sauvegarde sous :
31
+    1 - Microsoft Windows
32
+    2 - GNU/Linux
33
+
34
+Votre choix : "
35
+read reponse
36
+cx=$reponse
37
+
38
+case $cx in
39
+
40
+1)
41
+if [ ! -f /sbin/mount.cifs ]
42
+    then sudo apt-get install -y smbfs
43
+    type=smbfs
44
+    echo OK
45
+    else type=smbfs
46
+    echo OK
47
+fi
48
+;;
49
+
50
+2)
51
+if [ ! -f /sbin/mount.nfs ]
52
+    then sudo apt-get install -y nfs
53
+    type=nfs
54
+    echo OK
55
+    else type=nfs
56
+    echo OK
57
+fi
58
+
59
+esac
60
+
61
+
62
+
63
+
64
+# ------------------------------
65
+# Création du dossier de montage
66
+# ------------------------------
67
+echo "Création du dossier qui servira de point de montage du dossier sauvegarde présent sur le serveur distant :
68
+    1 - par défaut /media/Sauvegarde
69
+    2 - spécifier un dossier (attention à ne pas mettre de / à la fin du chemin)
70
+Votre choix : "
71
+read reponse
72
+cx=$reponse
73
+
74
+case $cx in
75
+
76
+1)
77
+dsa=/media/Sauvegarde
78
+sudo mkdir $dsa
79
+;;
80
+
81
+2)
82
+echo "Entrez le chemin du dossier à créer :"
83
+read d
84
+dsa=$d
85
+sudo mkdir $dsa
86
+
87
+esac
88
+
89
+
90
+
91
+
92
+# --------------------------
93
+# Création du dossier script
94
+# --------------------------
95
+echo "Création du dossier qui stockera les fichiers scripts nécessaires
96
+    1 - par défaut $HOME/Sauvegarde
97
+    2 - spécifier un dossier (attention à ne pas mettre de / à la fin du chemin)
98
+Votre choix : "
99
+read reponse
100
+cx=$reponse
101
+
102
+case $cx in
103
+
104
+1)
105
+dsc=$HOME/Sauvegarde
106
+mkdir $dsc
107
+;;
108
+
109
+2)
110
+echo "Entrez le chemin du dossier à créer :"
111
+read d
112
+dsc=$d
113
+mkdir $dsc
114
+
115
+esac
116
+
117
+
118
+
119
+
120
+# ---------------------------------------------------------
121
+# Récupération de l'UID et du GID de l'utilisateur en cours
122
+# ---------------------------------------------------------
123
+uid=$(grep $USER /etc/passwd | sed "s/:\([A-Z][a-z]\)/%/" | cut -d '%' -f1 | cut -d 'x' -f2 | sed -e "s/://" | sed -e "s/:\([0-9][0-9]*\)//")
124
+gid=$(grep $USER /etc/passwd | sed "s/:\([A-Z][a-z]\)/%/" | cut -d '%' -f1 | cut -d 'x' -f2 | sed -e "s/://" | sed -e "s/\([0-9][0-9]*\)://")
125
+
126
+
127
+
128
+
129
+# -------------------------------------------------------------------------
130
+# Informations relatives au dossier de sauvegarde se situant sur le serveur
131
+# -------------------------------------------------------------------------
132
+echo "Quelle est l'adresse IP du serveur de sauvegarde ?
133
+    1 - 10.16.137.10 (par défaut)
134
+    2 - spécifiez-la
135
+Votre choix : "
136
+read reponse
137
+cx=$reponse
138
+
139
+case $cx in
140
+
141
+1)
142
+IP=10.16.137.10
143
+;;
144
+2)
145
+echo "Entrez l'adresse IP du serveur :"
146
+read reponse
147
+IP=$reponse
148
+esac
149
+
150
+echo "Entrez le nom de votre dossier sur le serveur de sauvegarde (renseignez-vous en parcourant l'arborescence du réseau si nécessaire) :"
151
+read reponse
152
+nd=$reponse
153
+
154
+echo "Entrez le login correspondant à votre dossier de sauvegarde :"
155
+read reponse
156
+username=$reponse
157
+
158
+echo "Entrez le mot de passe correspondant à votre dossier de sauvegarde :"
159
+read reponse
160
+password=$reponse
161
+
162
+
163
+
164
+
165
+# --------------------------------------------------------------------------
166
+# Modification du fichier /etc/sudoers pour l'acquisition de nouveaux droits
167
+# --------------------------------------------------------------------------
168
+
169
+echo "Octroie du droit de monter une partition en tant qu'administrateur
170
+    1 - Oui (mais création d'une faille de sécurité)
171
+    2 - Non
172
+Votre choix : "
173
+read reponse
174
+cx=$reponse
175
+
176
+case $cx in
177
+
178
+1)
179
+if [ $type = smbfs ]
180
+    then
181
+    sudo bash -c "
182
+    cat >>/etc/sudoers <<EOT
183
+
184
+# Autorisation du mount par l'utilisateur "$USER"
185
+  $USER ALL=NOPASSWD:/sbin/mount.cifs
186
+
187
+EOT"
188
+fi
189
+
190
+if [ $type = nfs ]
191
+    then
192
+    sudo bash -c "
193
+    cat >>/etc/sudoers <<EOT
194
+
195
+# Autorisation du mount par l'utilisateur "$USER"
196
+  $USER ALL=NOPASSWD:/sbin/mount.nfs
197
+
198
+EOT"
199
+fi
200
+;;
201
+2)
202
+
203
+esac
204
+
205
+
206
+
207
+
208
+echo "Octroie du droit de démonter une partition en tant qu'administrateur
209
+    1 - Oui (mais création d'une faille de sécurité)
210
+    2 - Non
211
+Votre choix : "
212
+read reponse
213
+cx=$reponse
214
+
215
+case $cx in
216
+
217
+1)
218
+if [ $type = smbfs ]
219
+    then
220
+    sudo bash -c "
221
+    cat >>/etc/sudoers <<EOT
222
+
223
+# Autorisation du mount par l'utilisateur "$USER"
224
+  $USER ALL=NOPASSWD:/sbin/umount.cifs
225
+
226
+EOT"
227
+fi
228
+
229
+if [ $type = nfs ]
230
+    then
231
+    sudo bash -c "
232
+    cat >>/etc/sudoers <<EOT
233
+
234
+# Autorisation du mount par l'utilisateur "$USER"
235
+  $USER ALL=NOPASSWD:/sbin/umount.nfs
236
+
237
+EOT"
238
+fi
239
+;;
240
+2)
241
+
242
+esac
243
+
244
+
245
+
246
+
247
+echo "Octroie du droit d'éteindre le terminal en tant qu'administrateur
248
+    1 - Oui (mais création d'une faille de sécurité)
249
+    2 - Non
250
+Votre choix : "
251
+read reponse
252
+cx=$reponse
253
+
254
+case $cx in
255
+
256
+1)
257
+cat >>/etc/sudoers <<EOT
258
+# Autorisation du shutdown par l'utilisateur "$USER"
259
+  $USER ALL=NOPASSWD:/sbin/shutdown
260
+
261
+EOT
262
+;;
263
+
264
+2)
265
+
266
+esac
267
+
268
+
269
+
270
+# ------------------------
271
+# Création du fichier list
272
+# ------------------------
273
+
274
+echo "Voulez-vous créer le fichier liste qui contiendra les dossiers à sauvegarder ?
275
+    1 - Oui
276
+    2 - Non (consulter les commentaires du script de sauvegarde pour connaître le formatage nécessaire
277
+Votre choix : "
278
+read reponse
279
+cx=$reponse
280
+
281
+case $cx in
282
+
283
+1)
284
+touch $dsc/list
285
+a=0
286
+while [ $a -eq 0 ]
287
+do
288
+echo "Indiquez le chemin absolu du dossier : "
289
+read chemin
290
+ch=$chemin
291
+echo "Indiquez le noms que doit porter le dossier sur le serveur : "
292
+read nom
293
+nm=$nom
294
+echo "<$ch> <$dsa/$nm>" >> $dsc/list
295
+echo "Voulez-vous ajouter un dossier [o/n] : "
296
+read choix
297
+cx=$choix
298
+    if [ ! $cx -eq o ]
299
+        then a=1
300
+    fi
301
+done
302
+;;
303
+
304
+2)
305
+
306
+esac
307
+
308
+
309
+
310
+
311
+# --------------------------------
312
+# Création du script de sauvegarde
313
+# --------------------------------
314
+cat >$dsc/Sauvegarde <<EOT
315
+#!/bin/bash
316
+#auteur : Frédéric CHEVALIER
317
+#version : 2.3
318
+#date de création : 2008-04-01
319
+#date de modification : 2009-02-16
320
+
321
+
322
+# pour donner un nom "raccourci" (incluant le chemin) au fichier backuperror.log :
323
+c=$dsc
324
+backup=$c/backuperror.log
325
+# à noter l'usage des ">" : un seul ">" renvoie le contenu du terminal dans le fichier indiqué en écrasant tout ce que contient déjà ce fichier.
326
+# ">>" renvoie le contenu du terminal sans écraser ce que contient déjà le fichier.
327
+# Le chiffre "2" suivi d'un seul ">" renvoie seulement les messages d'erreurs générés par le processus dans le fichier indiqué
328
+# en écrasant le contenu de ce fichier. "2>>" renvoie les erreurs sans écraser le contenu du fichier.
329
+
330
+
331
+
332
+
333
+
334
+# -----------------------------
335
+# Vérifie la présence du volume
336
+# -----------------------------
337
+
338
+# Vérifie la connexion au serveur de sauvegarde
339
+
340
+if ! ping -c 1 10.16.137.10
341
+then
342
+echo "Erreur, vous n'êtes pas connecté au serveur de sauvegarde."
343
+echo "Erreur, vous n'êtes pas connecté au serveur de sauvegarde." > $backup
344
+date >> $backup
345
+sleep 30
346
+sudo shutdown -P now
347
+exit
348
+fi
349
+
350
+
351
+
352
+
353
+
354
+# --------------------------------
355
+# Monte la partition de sauvegarde
356
+# --------------------------------
357
+
358
+# le script effectue le montage de la partition "Sauvegarde" (dossier de sauvegarde situé sur le serveur de sauvegarde). Il est nécessaire d'avoir créer une dossier /media/Sauvegarde/ pour que le montage puisse se faire. D'autre part, le parquet smbfs doit être installé sur la machine.
359
+
360
+nd=Chevalier    # nom du dossier de sauvegarde
361
+username=EES2    # nom de connexion au dossier de sauvegarde
362
+password=ees2    # mot de passe au dossier de sauvegarde
363
+uid=fred    # nom de de l'utilisateur du compte (sous Linux)
364
+gid=fred    # nom du groupe auquel appartient l'utilisateur (sous Linux)
365
+
366
+sudo mount -t $type -o username=$username,password=$password,iocharset=utf8,uid=$uid,gid=$gid //$IP/$nd $dsa
367
+
368
+
369
+
370
+
371
+
372
+# -----------------------------------
373
+# Lancement de la sauvegarde générale
374
+# -----------------------------------
375
+
376
+echo
377
+echo "LA SAUVEGARDE GENERALE EST EN COURS D'EXECUTION AVANT ARRET DE L'ORDINATEUR"
378
+echo
379
+
380
+
381
+touch $backup
382
+
383
+# Sauvegardes vers la partition de sauvegarde : ces sauvegardes se font à l'aide d'un fichier list (qui doit être généré à côté de ce script) dans lequel il est nécessaire de mettre les sources et destinations de la manière suivante :
384
+#<source> <destination> (en ommettant le # de commentaire ici présent)
385
+# e.g.: </home/fred/Bureau/Thèse> </media/Sauvegarde/Thèse>
386
+
387
+if [ ! -s $c/list ]
388
+then echo "le fichier list n'existe pas, il doit être créé (éditez le script de sauvegarde pour plus de renseignement (cf. ligne 69))"
389
+echo "le fichier list n'existe pas, il doit être créé (éditez le script de sauvegarde pour plus de renseignement (cf. ligne 69))" >> $backup
390
+sleep 30
391
+exit
392
+fi
393
+
394
+cp $c/list $c/list.u
395
+sed -i 's/> </>\n</g' $c/list.u
396
+sed -i 's/<\|>//g' $c/list.u
397
+
398
+while [ -s $c/list.u ]
399
+do
400
+s=$(sed q $c/list.u)
401
+sed -i '1d' $c/list.u
402
+d=$(sed q $c/list.u)
403
+sed -i '1d' $c/list.u
404
+
405
+rsync -a --progress -u --delete-after "$s" "$d" 2>> $backup
406
+
407
+done
408
+
409
+rm $c/list.u
410
+
411
+
412
+
413
+
414
+
415
+# ----------------
416
+# Rapport d'erreur
417
+# ----------------
418
+# Insertion de la date à la fin de la liste d'erreur si le fichier backuperror n'est pas vide (c'est à dire s'il y a des erreurs),
419
+# ce que vérifie l'option "-s" :
420
+
421
+if [ -s $backup ]
422
+then date >> $backup
423
+else rm $backup
424
+fi
425
+
426
+
427
+
428
+
429
+
430
+# ---------------------
431
+# Arrêt de l'ordinateur
432
+# ---------------------
433
+
434
+sudo shutdown -P now
435
+
436
+EOT
437
+
438
+chmod u+x $dsc/Sauvegarde
439
+
440
+ln -s $dsc/Sauvegarde $HOME/Bureau/Sauvegarde
441
+
442
+
443
+
444
+
445
+# --------------------------------------
446
+# Création du script de rapport d'erreur
447
+# --------------------------------------
448
+
449
+cat >$dsc/Rapport <<EOT
450
+#!/bin/bash
451
+# ce script est destiné à être exécuté en tache de fond lors du démarrage de l'ordinateur... Il a pour objet de signaler les éventuelles erreurs de la sauvegarde lancée lors de l'arrêt précédent de l'ordinateur.
452
+#
453
+# Pour donner un nom abrégé au fichier en indiquant le chemin correspondant.
454
+# ("backuperror.log" est le fichier destiné à enregistrer les éventuelles erreurs de sauvegarde.)
455
+backup=$dsc/backuperror.log
456
+# Indique une action (l'édition par "gedit") si le fichier n'est pas vide (ce que vérifie l'option -s) :
457
+if [ -s $backup ]; then
458
+{
459
+  gedit $backup
460
+}
461
+# efface le fichier pour qu'il ne soit ouvert au démarrage suivant de l'ordinateur que s'il a été recréé avec mention d'erreurs lors du déroulement de la sauvegarde suivante.
462
+rm $backup
463
+fi
464
+
465
+EOT
466
+
467
+chmod u+x $dsc/Rapport
468
+
469
+
470
+echo "L'installation est terminé"
471
+sleep 5
472
+
0 473
new file mode 100644
... ...
@@ -0,0 +1,421 @@
1
+#!/bin/bash
2
+#auteur : Frédéric CHEVALIER
3
+#version : 2.0
4
+#date de création : 2009-02-16
5
+#date de modification : 2010-09-27
6
+
7
+
8
+# ---------
9
+# Variables
10
+# ---------
11
+# cx : choix
12
+# dsa : dossier de sauvegarde
13
+# dsc : dossier de stockage des scripts
14
+
15
+
16
+# -----------------------
17
+# Message d'avertissement
18
+# -----------------------
19
+zenity --info --title="Installateur - Script de Sauvegarde v 2.0" --text="Au cours de cette installation, vous devrez entrer votre mot de passe administrateur.
20
+Assurez-vous que vous ayez bien les droits administrateurs. Sinon, contactez l'administrateur de l'ordinateur."
21
+
22
+
23
+
24
+
25
+
26
+# ------------------------------------
27
+# Installation des paquets nécessaires
28
+# ------------------------------------
29
+cx=$(zenity --list --title="Installateur - Script de Sauvegarde v 2.0" --text="S'agit-il d'un serveur de sauvegarde sous :" --column="" "1 - Microsoft Windows" "2 - GNU/Linux")
30
+
31
+
32
+case $cx in
33
+
34
+1 - Microsoft Windows)
35
+if [ ! -f /sbin/mount.cifs ]
36
+	then sudo -K | zenity --entry --hide-text --text="Veuillez entrer le mot de passe Sudo" | sudo -S -s
37
+	sudo apt-get install -y smbfs
38
+	type=smbfs
39
+	echo OK
40
+	else type=smbfs
41
+	echo OK
42
+fi
43
+;;
44
+
45
+2 - GNU/Linux)
46
+if [ ! -f /sbin/mount.nfs ]
47
+	then sudo -K | zenity --entry --hide-text --text="Veuillez entrer le mot de passe Sudo" | sudo -S -s
48
+	sudo apt-get install -y nfs
49
+	type=nfs
50
+	echo OK
51
+	else type=nfs
52
+	echo OK
53
+fi
54
+
55
+esac
56
+
57
+
58
+
59
+
60
+# ------------------------------
61
+# Création du dossier de montage
62
+# ------------------------------
63
+cx=$(zenity --list --title="Installateur - Script de Sauvegarde v 2.0" --text="Création du dossier qui servira de point de montage du dossier sauvegarde présent sur le serveur distant :" --column="" "1 - par défaut /media/Sauvegarde" "2 - spécifier un dossier (attention à ne pas mettre de / à la fin du chemin)")
64
+
65
+case $cx in
66
+
67
+1 - par défaut /media/Sauvegarde)
68
+dsa=/media/Sauvegarde
69
+sudo -K | zenity --entry --hide-text --text="Veuillez entrer le mot de passe Sudo" | sudo -S -s
70
+sudo mkdir "$dsa"
71
+;;
72
+
73
+2 - spécifier un dossier (attention à ne pas mettre de / à la fin du chemin))
74
+zenity --info --title="Installateur - Script de Sauvegarde v 2.0" --text="Veuillez sélectionner le dossier dans lequel sera créé le point de montage"
75
+d=$(zenity --file-selection --title="Installateur - Script de Sauvegarde v 2.0" --directory)
76
+pm=$(zenity --entry --title="Installateur - Script de Sauvegarde v 2.0" --text="Quel nom doit porter le point de montage ?")
77
+dsa="$d""$pm" # !!! bug dans le nom généré ??? !!!
78
+sudo -K | zenity --entry --hide-text --text="Veuillez entrer le mot de passe Sudo" | sudo -S -s
79
+sudo mkdir "$dsa"
80
+
81
+esac
82
+
83
+
84
+
85
+
86
+# --------------------------
87
+# Création du dossier script
88
+# --------------------------
89
+cx=$(zenity --list --title="Installateur - Script de Sauvegarde v 2.0" --text="Création du dossier qui stockera les fichiers scripts nécessaires" --column="" "1 - par défaut $HOME/Sauvegarde" "2 - spécifier un dossier (attention à ne pas mettre de / à la fin du chemin)")
90
+
91
+case $cx in
92
+
93
+1 - par défaut $HOME/Sauvegarde)
94
+dsc="$HOME"/Sauvegarde
95
+mkdir "$dsc"
96
+;;
97
+
98
+2 - spécifier un dossier (attention à ne pas mettre de / à la fin du chemin))
99
+zenity --info --title="Installateur - Script de Sauvegarde v 2.0" --text="Veuillez sélectionner le dossier dans lequel sera créé dossier contenant les futurs fichiers"
100
+d=$(zenity --file-selection --title="Installateur - Script de Sauvegarde v 2.0" --directory)
101
+f=$(zenity --entry --title="Installateur - Script de Sauvegarde v 2.0" --text="Quel nom doit porter le point de montage ?")
102
+dsc="$d""$f" # !!! bug dans le nom généré ??? !!!
103
+mkdir "$dsc"
104
+
105
+esac
106
+
107
+
108
+
109
+
110
+# ---------------------------------------------------------
111
+# Récupération de l'UID et du GID de l'utilisateur en cours
112
+# ---------------------------------------------------------
113
+uid=$(grep $USER /etc/passwd | sed "s/:\([A-Z][a-z]\)/%/" | cut -d '%' -f1 | cut -d 'x' -f2 | sed -e "s/://" | sed -e "s/:\([0-9][0-9]*\)//")
114
+gid=$(grep $USER /etc/passwd | sed "s/:\([A-Z][a-z]\)/%/" | cut -d '%' -f1 | cut -d 'x' -f2 | sed -e "s/://" | sed -e "s/\([0-9][0-9]*\)://")
115
+
116
+
117
+
118
+
119
+# -------------------------------------------------------------------------
120
+# Informations relatives au dossier de sauvegarde se situant sur le serveur
121
+# -------------------------------------------------------------------------
122
+cx=$(zenity --list --title="Installateur - Script de Sauvegarde v 2.0" --text="Quelle est l'adresse IP du serveur de sauvegarde ?" --column="" "1 - 10.16.137.10 (par défaut)" "2 - spécifiez-la")
123
+
124
+case $cx in
125
+
126
+1 - 10.16.137.10 (par défaut))
127
+IP=10.16.137.10
128
+;;
129
+2 - spécifiez-la)
130
+IP=$(zenity --entry --title="Installateur - Script de Sauvegarde v 2.0" --text="Entrez l'adresse IP du serveur :")
131
+esac
132
+
133
+nd=$(zenity --entry --title="Installateur - Script de Sauvegarde v 2.0" --text="Entrez le nom de votre dossier sur le serveur de sauvegarde (renseignez-vous en parcourant l'arborescence du réseau si nécessaire)")
134
+
135
+username=$(zenity --entry --title="Installateur - Script de Sauvegarde v 2.0" --text="Entrez le login correspondant à votre dossier de sauvegarde :")
136
+
137
+password=$(zenity --entry --title="Installateur - Script de Sauvegarde v 2.0" --text="Entrez le mot de passe correspondant à votre dossier de sauvegarde :")
138
+
139
+
140
+
141
+
142
+# --------------------------------------------------------------------------
143
+# Modification du fichier /etc/sudoers pour l'acquisition de nouveaux droits
144
+# --------------------------------------------------------------------------
145
+
146
+cx=$(zenity --list --title="Installateur - Script de Sauvegarde v 2.0" --text="Octroie du droit de monter une partition en tant qu'administrateur" --column="" "1 - Oui (mais création d'une faille de sécurité)" "2 - Non")
147
+
148
+case $cx in
149
+
150
+1 - Oui (mais création d\'une faille de sécurité))
151
+if [ $type = smbfs ]
152
+	then sudo -K | zenity --entry --hide-text --text="Veuillez entrer le mot de passe Sudo" | sudo -S -s
153
+	sudo bash -c "
154
+	cat >>/etc/sudoers <<EOT
155
+
156
+# Autorisation du mount par l'utilisateur "$USER"
157
+  $USER ALL=NOPASSWD:/sbin/mount.cifs
158
+
159
+EOT"
160
+fi
161
+
162
+if [ $type = nfs ]
163
+	then sudo -K | zenity --entry --hide-text --text="Veuillez entrer le mot de passe Sudo" | sudo -S -s
164
+	sudo bash -c "
165
+	cat >>/etc/sudoers <<EOT
166
+
167
+# Autorisation du mount par l'utilisateur "$USER"
168
+  $USER ALL=NOPASSWD:/sbin/mount.nfs
169
+
170
+EOT"
171
+fi
172
+;;
173
+2 - Non)
174
+
175
+esac
176
+
177
+
178
+
179
+
180
+cx=$(zenity --list --title="Installateur - Script de Sauvegarde v 2.0" --text="Octroie du droit de démonter une partition en tant qu'administrateur" --column="" "1 - Oui (mais création d'une faille de sécurité)" "2 - Non")
181
+
182
+case $cx in
183
+
184
+1 - Oui (mais création d\'une faille de sécurité))
185
+if [ $type = smbfs ]
186
+	then sudo -K | zenity --entry --hide-text --text="Veuillez entrer le mot de passe Sudo" | sudo -S -s
187
+	sudo bash -c "
188
+	cat >>/etc/sudoers <<EOT
189
+
190
+# Autorisation du mount par l'utilisateur "$USER"
191
+  $USER ALL=NOPASSWD:/sbin/umount.cifs
192
+
193
+EOT"
194
+fi
195
+
196
+if [ $type = nfs ]
197
+	then sudo -K | zenity --entry --hide-text --text="Veuillez entrer le mot de passe Sudo" | sudo -S -s
198
+	sudo bash -c "
199
+	cat >>/etc/sudoers <<EOT
200
+
201
+# Autorisation du mount par l'utilisateur "$USER"
202
+  $USER ALL=NOPASSWD:/sbin/umount.nfs
203
+
204
+EOT"
205
+fi
206
+;;
207
+2 - Non)
208
+
209
+esac
210
+
211
+
212
+
213
+
214
+cx=$(zenity --list --title="Installateur - Script de Sauvegarde v 2.0" --text="Octroie du droit d'éteindre le terminal en tant qu'administrateur" --column="" "1 - Oui (mais création d'une faille de sécurité)" "2 - Non")
215
+
216
+case $cx in
217
+
218
+1 - Oui (mais création d\'une faille de sécurité))
219
+then sudo -K | zenity --entry --hide-text --text="Veuillez entrer le mot de passe Sudo" | sudo -S -s
220
+sudo bash -c "
221
+cat >>/etc/sudoers <<EOT
222
+
223
+# Autorisation du shutdown par l'utilisateur "$USER"
224
+  $USER ALL=NOPASSWD:/sbin/shutdown
225
+
226
+EOT"
227
+;;
228
+
229
+2 - Non)
230
+
231
+esac
232
+
233
+
234
+
235
+# ------------------------
236
+# Création du fichier list
237
+# ------------------------
238
+
239
+cx=$(zenity --list --title="Installateur - Script de Sauvegarde v 2.0" --text="Voulez-vous créer le fichier liste qui contiendra les dossiers à sauvegarder ?" --column="" "1 - Oui" "2 - Non (consulter les commentaires du script de sauvegarde pour connaître le formatage nécessaire)")
240
+
241
+case $cx in
242
+
243
+1 - Oui)
244
+touch "$dsc"/list
245
+a=0
246
+while [ $a -eq 0 ]
247
+do
248
+d=$(zenity --file-selection --title="" --filename="$HOME/" --directory); if [ $? -eq 1 ];then rm "$dsc"/list; exit 1; fi;
249
+n=$(zenity --entry --title="Installateur - Script de Sauvegarde v 2.0" --text="Indiquez le nom que doit porter le dossier sur le serveur"); if [ $? -eq 1 ];then rm "$dsc"/list; exit 1; fi;
250
+echo "<$d> <$dsa/$n>" >> "$dsc"/list
251
+cx=$(zenity --list --title="Installateur - Script de Sauvegarde v 2.0" --text="Voulez-vous ajouter un dossier ?" --column="" "1 - Oui" "2 - Non")
252
+    if [ ! $cx -eq "1 - Oui" ]
253
+        then a=1
254
+    fi
255
+done
256
+;;
257
+
258
+2 - Non (consulter les commentaires du script de sauvegarde pour connaître le formatage nécessaire))
259
+
260
+esac
261
+
262
+
263
+
264
+
265
+# --------------------------------
266
+# Création du script de sauvegarde
267
+# --------------------------------
268
+cat >"$dsc"/Sauvegarde <<EOT
269
+#!/bin/bash
270
+#auteur : Frédéric CHEVALIER
271
+#version : 2.4
272
+#date de création : 2008-04-01
273
+#date de modification : 2010-09-27
274
+
275
+
276
+# pour donner un nom "raccourci" (incluant le chemin) au fichier backuperror.log :
277
+backup="$dsc"/backuperror.log
278
+# à noter l'usage des ">" : un seul ">" renvoie le contenu du terminal dans le fichier indiqué en écrasant tout ce que contient déjà ce fichier.
279
+# ">>" renvoie le contenu du terminal sans écraser ce que contient déjà le fichier.
280
+# Le chiffre "2" suivi d'un seul ">" renvoie seulement les messages d'erreurs générés par le processus dans le fichier indiqué
281
+# en écrasant le contenu de ce fichier. "2>>" renvoie les erreurs sans écraser le contenu du fichier.
282
+
283
+
284
+
285
+
286
+
287
+# -----------------------------
288
+# Vérifie la présence du volume
289
+# -----------------------------
290
+
291
+# Vérifie la connexion au serveur de sauvegarde
292
+
293
+if ! ping -c 1 $IP
294
+then
295
+echo "Erreur, vous n'êtes pas connecté au serveur de sauvegarde."
296
+echo "Erreur, vous n'êtes pas connecté au serveur de sauvegarde." > $backup
297
+date >> $backup
298
+sleep 30
299
+sudo shutdown -P now
300
+exit
301
+fi
302
+
303
+
304
+
305
+
306
+
307
+# --------------------------------
308
+# Monte la partition de sauvegarde
309
+# --------------------------------
310
+
311
+# le script effectue le montage de la partition "Sauvegarde" (dossier de sauvegarde situé sur le serveur de sauvegarde). Il est nécessaire d'avoir créer une dossier /media/Sauvegarde/ pour que le montage puisse se faire. D'autre part, le parquet smbfs doit être installé sur la machine.
312
+
313
+sudo mount -t $type -o username="$username",password="$password",iocharset=utf8,uid="$uid",gid="$gid" //$IP/"$nd" "$dsa"
314
+
315
+
316
+
317
+
318
+
319
+# -----------------------------------
320
+# Lancement de la sauvegarde générale
321
+# -----------------------------------
322
+
323
+echo
324
+echo "LA SAUVEGARDE GENERALE EST EN COURS D'EXECUTION AVANT ARRET DE L'ORDINATEUR"
325
+echo
326
+
327
+
328
+touch $backup
329
+
330
+# Sauvegardes vers la partition de sauvegarde : ces sauvegardes se font à l'aide d'un fichier list (qui doit être généré à côté de ce script) dans lequel il est nécessaire de mettre les sources et destinations de la manière suivante :
331
+#<source> <destination> (en ommettant le # de commentaire ici présent)
332
+# e.g.: </home/fred/Bureau/Thèse> </media/Sauvegarde/Thèse>
333
+
334
+if [ ! -s "$dsc"/list ]
335
+then echo "le fichier list n'existe pas, il doit être créé (éditez le script de sauvegarde pour plus de renseignement (cf. ligne 69))"
336
+echo "le fichier list n'existe pas, il doit être créé (éditez le script de sauvegarde pour plus de renseignement (cf. ligne 69))" >> $backup
337
+sleep 30
338
+exit
339
+fi
340
+
341
+cp "$dsc"/list "$dsc"/list.u
342
+sed -i 's/> </>\n</g' "$dsc"/list.u
343
+sed -i 's/<\|>//g' "$dsc"/list.u
344
+
345
+while [ -s "$dsc"/list.u ]
346
+do
347
+s=$(sed q "$dsc"/list.u)
348
+sed -i '1d' "$dsc"/list.u
349
+d=$(sed q "$dsc"/list.u)
350
+sed -i '1d' "$dsc"/list.u
351
+
352
+rsync -a --progress -u --delete-after "$s" "$d" 2>> $backup
353
+
354
+done
355
+
356
+rm "$dsc"/list.u
357
+
358
+
359
+
360
+
361
+
362
+# ----------------
363
+# Rapport d'erreur
364
+# ----------------
365
+# Insertion de la date à la fin de la liste d'erreur si le fichier backuperror n'est pas vide (c'est à dire s'il y a des erreurs),
366
+# ce que vérifie l'option "-s" :
367
+
368
+if [ -s $backup ]
369
+then date >> $backup
370
+else rm $backup
371
+fi
372
+
373
+
374
+
375
+
376
+
377
+# ---------------------
378
+# Arrêt de l'ordinateur
379
+# ---------------------
380
+
381
+sudo shutdown -P now
382
+
383
+EOT
384
+
385
+chmod u+x "$dsc"/Sauvegarde
386
+
387
+ln -s "$dsc"/Sauvegarde "$HOME"/Bureau/Sauvegarde
388
+
389
+
390
+
391
+
392
+# --------------------------------------
393
+# Création du script de rapport d'erreur
394
+# --------------------------------------
395
+
396
+cat >"$dsc"/Rapport <<EOT
397
+#!/bin/bash
398
+# ce script est destiné à être exécuté en tache de fond lors du démarrage de l'ordinateur... Il a pour objet de signaler les éventuelles erreurs de la sauvegarde lancée lors de l'arrêt précédent de l'ordinateur.
399
+#
400
+# Pour donner un nom abrégé au fichier en indiquant le chemin correspondant.
401
+# ("backuperror.log" est le fichier destiné à enregistrer les éventuelles erreurs de sauvegarde.)
402
+backup=$dsc/backuperror.log
403
+# Indique une action (l'édition par "gedit") si le fichier n'est pas vide (ce que vérifie l'option -s) :
404
+if [ -s $backup ]; then
405
+{
406
+  gedit $backup
407
+}
408
+# efface le fichier pour qu'il ne soit ouvert au démarrage suivant de l'ordinateur que s'il a été recréé avec mention d'erreurs lors du déroulement de la sauvegarde suivante.
409
+rm $backup
410
+fi
411
+
412
+EOT
413
+
414
+chmod u+x $dsc/Rapport
415
+
416
+
417
+echo "L'installation est terminé"
418
+sleep 5
419
+
420
+exit 0
421
+
0 422
new file mode 100644
... ...
@@ -0,0 +1,3 @@
1
+</home/fred/Thèse> </media/Sauvegarde/Thèse>
2
+</home/fred/Associations> </media/Sauvegarde/Associations>
3
+</home/fred/Enseignements> </media/Sauvegarde/Enseignements>