Evolution script sauvegarde-1 Le sujet est résolu

Demande d'aide : c'est ici.
Avatar de l’utilisateur
DbFr871
Membre très actif
Membre très actif
Messages : 1140
Inscription : 17 mai 2016, 20:48
Localisation : Nègrepelissien
Contact :
Status : Hors-ligne

MicP a écrit : 11 sept. 2017, 20:57 Bonsoir

Je l'ai un peu simplifiée :

Code : Tout sélectionner

…
mountpoint /media/bernard/Sauv1To-a >/dev/null || { echo "Attention, Sauv1To-a absent"; exit; }
…

Bien sûr, la ligne ci-dessus pourrait être écrite comme ci-dessous :

Code : Tout sélectionner

…
if ! mountpoint /media/bernard/Sauv1To-a >/dev/null
then
    echo "Attention, Sauv1To-a absent"
    exit
fi
…
.
Je te remercie pour la précision... :wink:

Je cherchais à comprendre la signification de mountpoint, et je l'ai eue avec la commande :

Code : Tout sélectionner

$ lsblk
NAME   MAJ:MIN RM   SIZE RO TYPE MOUNTPOINT
sda      8:0    0 465,8G  0 disk 
└─sda1   8:1    0 465,8G  0 part /
sdb      8:16   0 465,8G  0 disk 
└─sdb1   8:17   0 465,8G  0 part /media/usb0
sdc      8:32   0 931,5G  0 disk 
└─sdc1   8:33   0 931,5G  0 part /media/bernard/Sauv1To-a
sdd      8:48   0 223,6G  0 disk 
└─sdd1   8:49   0 223,6G  0 part /media/bernard/SSD224Go
bernard-portable:~$
.
et ça va beaucoup mieux, lorsque je "comprends"... :wink:

Encore merci, je vais tester et donnerai le résultat :wink:
Cordialement,
Bernard
Debian9.1Stretch-XFCE-64bits-Sony-Vaio,Intel-P8400-2.26GHz,DD-SeagateSSHD500Go,GeForce9300M-GS-256Mo
MicP
Modérateur
Modérateur
Messages : 896
Inscription : 16 avr. 2016, 22:14
Status : Hors-ligne

Pour savoir de quoi il s'agit, tu peux utiliser les pages man :

Code : Tout sélectionner

man mountpoint
Et si je l'avais fait, j'aurais pu voir qu'il n'était pas nécessaire de rediriger vers /dev/null (la poubelle) le message qui est retourné la commande mountpoint
Il me suffisait d'utiliser l'option -q de cette commande,
ce qui donne :

Code : Tout sélectionner

mountpoint /media/bernard/Sauv1To-a -q || { echo "Attention, Sauv1To-a absent";  exit }

=======
Tu pourrais même te passer de créer le message,
puisqu'il est déjà généré par la commande

Code : Tout sélectionner

mountpoint /media/bernard/Sauv1To-a || exit 
mais du coup, si le point de mountage existe bien, avant d'exécuter les commandes qui suivent,
le message suivant sera affiché :

Code : Tout sélectionner

/media/bernard/Sauv1To-a is a mountpoint
Avatar de l’utilisateur
DbFr871
Membre très actif
Membre très actif
Messages : 1140
Inscription : 17 mai 2016, 20:48
Localisation : Nègrepelissien
Contact :
Status : Hors-ligne

je viens d'insérer les différentes lignes, puis ai déconnecté tous les supports de sauvegarde, et voici le script :

Code : Tout sélectionner

...
#
#SSD224Go
if ! mountpoint /media/bernard/SSD224Go -q || { echo "Attention, SSD224Go absent";  exit }
#fi
	echo -e $CYAN "-----------\nSynchronisation en cours...\n ------------"
rsync -a -P --del --stats /home/bernard/DocumentsPerso /media/bernard/SSD224Go 2>> $backup
rsync -a -P --del --stats /home/bernard/MesDocuments /media/bernard/SSD224Go 2>> $backup
rsync -a -P --del --stats /home/bernard/MesPhotos /media/bernard/SSD224Go 2>> $backup
rsync -a -P --del --stats /home/bernard/MesScripts /media/bernard/SSD224Go 2>> $backup
#
#
#DDSauv1To-a
if ! mountpoint /media/bernard/Sauv1To-a/SauvDdPrincipal1 -q || { echo "Attention, Sauv1To-a absent";  exit }
#fi
	echo -e $ROSE "-----------\nSynchronisation en cours...\n ------------"
rsync -a -P --del --stats /home /media/bernard/Sauv1To-a/SauvDdPrincipal1 2>> $backup
rsync -a -P --del --stats /etc /media/bernard/Sauv1To-a/SauvDdPrincipal1 2>> $backup
rsync -a -P --del --stats /var /media/bernard/Sauv1To-a/SauvDdPrincipal1 2>> $backup
#
#
#DD500Go
if ! mountpoint /media/usb0/SauvDdPrincipal2 -q || { echo "Attention, DD500Go absent";  exit }
#fi
	echo -e $BLEU "-----------\nSynchronisation en cours...\n ------------"
rsync -a -P --del --stats /home /media/usb0/SauvDdPrincipal2 2>> $backup
rsync -a -P --del --stats /etc /media/usb0/SauvDdPrincipal2 2>> $backup
rsync -a -P --del --stats /var /media/usb0/SauvDdPrincipal2 2>> $backup
#
#
# Vérification des liens = faite
# 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), ce que vérifie l'option "-s" :
if [ -s $backup ]; then
{
  date >> $backup
}
fi
		# Mise à jour de l'heure
		Heure=$(date +%T)
	echo -e $STNDT "Sauvegarde terminée à  : $Heure le $Date\n"
else
	echo -e $STNDT "Procédure interrompue par l'utilisateur."
fi
read -p "Pour fermer le programme de sauvegarde  : Ctrl + C"
# ---- fin du script ----
.


puis la réponse à la commande;

bernard# /home/bernard/MesScripts/Sauvegarde_portable_Sauv1T_500go_SSD224Go
Exécuter la sauvegarde ? [o/N]
/home/bernard/MesScripts/Sauvegarde_portable_Sauv1T_500go_SSD224Go: ligne 90: erreur de syntaxe près du symbole inattendu « else »
/home/bernard/MesScripts/Sauvegarde_portable_Sauv1T_500go_SSD224Go: ligne 90: `else'
bernard#

.
ai-je fait un oubli... ?
Cordialement,
Bernard
Debian9.1Stretch-XFCE-64bits-Sony-Vaio,Intel-P8400-2.26GHz,DD-SeagateSSHD500Go,GeForce9300M-GS-256Mo
MicP
Modérateur
Modérateur
Messages : 896
Inscription : 16 avr. 2016, 22:14
Status : Hors-ligne

=======

Code : Tout sélectionner

ligne 90: erreur de syntaxe près du symbole inattendu « else »
Comme il s'agit d'un extrait du script, on ne peut pas savoir où se trouve la ligne 90
mais on peut voir des if sans else et surtout sans les fi qui devraient suivre.

=======
/media/usb0
/media/bernard/Sauv1To-a
/media/bernard/SSD224Go

sont effectivement 3 points de mountages.
Ils peuvent donc être testés avec la commande mountpoint

Mais
/media/bernard/Sauv1To-a/SauvDdPrincipal1
/media/usb0/SauvDdPrincipal2

ne sont pas des points de mountages.
Donc, avec ces répertoires, la commande mountpoint ne pourra renvoyer qu'un message d'erreur.

=======

Code : Tout sélectionner

#SSD224Go
if ! mountpoint /media/bernard/SSD224Go -q || { echo "Attention, SSD224Go absent";  exit }
#fi
à remplacer par :

Code : Tout sélectionner

#SSD224Go
mountpoint /media/bernard/SSD224Go -q || { echo "Attention, SSD224Go absent"; exit; }

=======

Code : Tout sélectionner

#DDSauv1To-a
if ! mountpoint /media/bernard/Sauv1To-a/SauvDdPrincipal1 -q || { echo "Attention, Sauv1To-a absent";  exit }
#fi
à remplacer par :

Code : Tout sélectionner

#DDSauv1To-a
mountpoint /media/bernard/Sauv1To-a -q           || { echo "Attention, Sauv1To-a absent"; exit; }
[ -d /media/bernard/Sauv1To-a/SauvDdPrincipal1 ] || { echo "Attention, répertoire /media/bernard/Sauv1To-a/SauvDdPrincipal1 absent"; exit; }

=======

Code : Tout sélectionner

#DD500Go
if ! mountpoint /media/usb0/SauvDdPrincipal2 -q || { echo "Attention, DD500Go absent";  exit }
#fi
à remplacer par :

Code : Tout sélectionner

#DD500Go
mountpoint /media/usb0 -q           || { echo "Attention, DD500Go absent"; exit; }
[ -d /media/usb0/SauvDdPrincipal2 ] || { echo "Attention, répertoire /media/usb0/SauvDdPrincipal2 absent"; exit; }
Avatar de l’utilisateur
DbFr871
Membre très actif
Membre très actif
Messages : 1140
Inscription : 17 mai 2016, 20:48
Localisation : Nègrepelissien
Contact :
Status : Hors-ligne

MicP a écrit : 12 sept. 2017, 05:28 ...
.


revoici le script et le N° des lignes, si cela ne perturbe pas la présentation :

Code : Tout sélectionner

1#!/bin/bash
2#
3# Ce script permet de faire une sauvegarde incrémentale manuelle avec "rsync"
4# Il peut être lancé à partir d'un bouton personnalisé dans un tableau de bord.
5#
6# Variables de couleurs
7 VERT="\\033[1;32m"
8 STNDT="\\033[0;39m"
9 ROUGE="\\033[1;31m"
10 ROSE="\\033[1;35m"
11 BLEU="\\033[1;34m"
12 BLANC="\\033[0;02m"
13 JAUNE="\\033[1;33m"
14 CYAN="\\033[1;36m"
15#
16 Date=$(date +%d-%m-%Y)
17 Heure=$(date +%T)
18#		echo -e $BLEU "Sûr de vouloir exécuter la sauvegarde du Portable ? o/N"
19#		read ANSWER
20#if [ $ANSWER == o ] ;
21#
22 echo -e $BLEU "Exécuter la sauvegarde ? [o/N]"; # Pour plus de lisibilité, la réponse par défaut est donnée en majuscule à la suite de la question.
23 read -sn1;                                      # Pas la peine d'entrer plus d'un caractère ni d'appuyer sur la touche entrée.
24 if [[ $REPLY =~ [yYoO] ]] ||                    # La variable REPLY est automatiquement créée par la fonction read du bash (builtins)
25   { echo -e $ROUGE "Abandon sauvegarde.";
26	 echo -e $STNDT "Sortie Sauvegarde"; exit; } 
27#
28 then
29    echo -e $VERT "Sauvegarde lancée !" # Seulement si l'utilisateur a appuyé sur la touche "y" "Y" "o" ou "O"
30#fi
31#then
32	echo -e $JAUNE "----\nLancement sauvegarde à : $Heure le $Date"
33	echo -e $ROSE "-----------\nSynchronisation en cours...\n ------------"
34#
35# pour donner un nom "raccourci" (incluant le chemin) au fichier backuperror0.log :
36 backup=/home/bernard/bin/Sauvegardes/backuperror0Del-portable_Sauv1T_500go_SSD224Go.log
37#
38 aptitude search '~i !~M' -F '%p' > /home/mes_paquetsPortable
39#
40 dpkg --get-selections > liste-des-paquets1
41#
42# à noter l'usage des ">" :
43# Un seul ">" renvoie le contenu du terminal dans le fichier indiqué
44# en écrasant tout ce que contient déjà ce fichier.
45# ">>" renvoie le contenu du terminal sans écraser ce que contient déjà le fichier.
46# Le chiffre "2" suivi d'un seul ">" renvoie seulement les messages d'erreurs
47# générés par le processus dans le fichier indiqué en écrasant le contenu de ce fichier.
48# "2>>" renvoie les erreurs sans écraser le contenu du fichier.
49#
50#
51#SSD224Go
52mountpoint /media/bernard/SSD224Go -q || { echo "Attention, SSD224Go absent";  exit }
53	echo -e $CYAN "-----------\nSynchronisation en cours...\n ------------"
54 rsync -a -P --del --stats /home/bernard/DocumentsPerso /media/bernard/SSD224Go 2>> $backup
55 rsync -a -P --del --stats /home/bernard/MesDocuments /media/bernard/SSD224Go 2>> $backup
56 rsync -a -P --del --stats /home/bernard/MesPhotos /media/bernard/SSD224Go 2>> $backup
57 rsync -a -P --del --stats /home/bernard/MesScripts /media/bernard/SSD224Go 2>> $backup
58#
59#
60#DDSauv1To-a
61 mountpoint /media/bernard/Sauv1To-a -q || { echo "Attention, Sauv1To-a absent";  exit }
62 [ -d /media/bernard/Sauv1To-a/SauvDdPrincipal1 ] || { echo "Attention, répertoire /media/bernard/Sauv1To-a/SauvDdPrincipal1 absent"; exit; }
63	echo -e $ROSE "-----------\nSynchronisation en cours...\n ------------"
64 rsync -a -P --del --stats /home /media/bernard/Sauv1To-a/SauvDdPrincipal1 2>> $backup
65 rsync -a -P --del --stats /etc /media/bernard/Sauv1To-a/SauvDdPrincipal1 2>> $backup
66 rsync -a -P --del --stats /var /media/bernard/Sauv1To-a/SauvDdPrincipal1 2>> $backup
67#
68#
69#DD500Go
70 mountpoint /media/usb0 -q || { echo "Attention, DD500Go absent";  exit }
71 [ -d /media/usb0/SauvDdPrincipal2 ] || { echo "Attention, répertoire /media/usb0/SauvDdPrincipal2 absent"; exit; }
72	echo -e $BLEU "-----------\nSynchronisation en cours...\n ------------"
73 rsync -a -P --del --stats /home /media/usb0/SauvDdPrincipal2 2>> $backup
74 rsync -a -P --del --stats /etc /media/usb0/SauvDdPrincipal2 2>> $backup
75 rsync -a -P --del --stats /var /media/usb0/SauvDdPrincipal2 2>> $backup
76#
77#
78# Vérification des liens = faite
79# Insertion de la date à la fin de la liste d'erreur si le fichier backuperror
80# n'est pas vide (c'est à dire s'il y a des erreurs), ce que vérifie l'option "-s" :
81 if [ -s $backup ]; then
82 {
83   date >> $backup
84 }
85#fi
86 		# Mise à jour de l'heure
87		Heure=$(date +%T)
88	echo -e $STNDT "Sauvegarde terminée à  : $Heure le $Date\n"
89 else
90	echo -e $STNDT "Procédure interrompue par l'utilisateur."
91 fi
92 read -p "Pour fermer le programme de sauvegarde  : Ctrl + C"
93# ---- fin du script ----
.

J'ai fait comme indiqué, déconnecté tous les supports de sauvegarde, et voici le résultat :
bernard# /home/bernard/MesScripts/Sauvegarde_portable_Sauv1T_500go_SSD224Go
Exécuter la sauvegarde ? [o/N]
/home/bernard/MesScripts/Sauvegarde_portable_Sauv1T_500go_SSD224Go: ligne 94: erreur de syntaxe : fin de fichier prématurée
bernard#

.
la ligne 94 est vide... et hors script...
j'ai dû oublier une "commande"

Mais déjà, Merci, il n'écrit plus, alors que les supports de sauvegardes sont absents... :wink:
Cordialement,
Bernard
Debian9.1Stretch-XFCE-64bits-Sony-Vaio,Intel-P8400-2.26GHz,DD-SeagateSSHD500Go,GeForce9300M-GS-256Mo
MicP
Modérateur
Modérateur
Messages : 896
Inscription : 16 avr. 2016, 22:14
Status : Hors-ligne

Code : Tout sélectionner

ligne 94: erreur de syntaxe : fin de fichier prématurée
C'est parce que le fi correspondant au if de la ligne N°24
n'a pas été trouvé dans le fichier.

Il faudrait donc ajouter une ligne (N°94 <=> à la fin du fichier)
dans laquelle il faudra mettre seulement le fi manquant.

=======
Ou alors :

tu remplace le bloc de lignes :

Code : Tout sélectionner

24 if [[ $REPLY =~ [yYoO] ]] ||                    # La variable REPLY est automatiquement créée par la fonction read du bash (builtins)
25   { echo -e $ROUGE "Abandon sauvegarde.";
26	 echo -e $STNDT "Sortie Sauvegarde"; exit; } 
27#
28 then
par seulement cette unique ligne :

Code : Tout sélectionner

[[ $REPLY =~ [yYoO] ]] || { echo -e $ROUGE "Abandon sauvegarde."; echo -e $STNDT "Sortie Sauvegarde"; exit; }   # La variable REPLY est automatiquement créée par la fonction read du bash (builtins)
et, bien sûr, comme tu aura supprimé le if qui était à la ligne N°24,
tu n'aura pas besoin de rajouter une ligne à la fin du fichier contenant le fi qui manquait.
Avatar de l’utilisateur
DbFr871
Membre très actif
Membre très actif
Messages : 1140
Inscription : 17 mai 2016, 20:48
Localisation : Nègrepelissien
Contact :
Status : Hors-ligne

nous sommes proche de la "réussite"...

après avoir modifié le script en ajoutant ce que tu as indiqué :wink:
il reste :
bernard# /home/bernard/MesScripts/Sauvegarde_portable_Sauv1T_500go_SSD224Go
Exécuter la sauvegarde ? [o/N]
/home/bernard/MesScripts/Sauvegarde_portable_Sauv1T_500go_SSD224Go: ligne 29: erreur de syntaxe près du symbole inattendu « then »
/home/bernard/MesScripts/Sauvegarde_portable_Sauv1T_500go_SSD224Go: ligne 29: `then'
bernard#

.

alors j'ai commenté le "then" de la ligne 29, et j'obtiens maintenant :
bernard# /home/bernard/MesScripts/Sauvegarde_portable_Sauv1T_500go_SSD224Go
Exécuter la sauvegarde ? [o/N]
Sauvegarde lancée !
----
Lancement sauvegarde à : 13:53:01 le 12-09-2017
-----------
Synchronisation en cours...
------------
/home/bernard/MesScripts/Sauvegarde_portable_Sauv1T_500go_SSD224Go: ligne 95: erreur de syntaxe : fin de fichier prématurée
bernard#

.

Nous devons être proche de la solution... car, le script se lance mais s'arrête après la synchronisation... avec une erreur de syntaxe, j'ai donc omis une commande...
Cordialement,
Bernard
Debian9.1Stretch-XFCE-64bits-Sony-Vaio,Intel-P8400-2.26GHz,DD-SeagateSSHD500Go,GeForce9300M-GS-256Mo
MicP
Modérateur
Modérateur
Messages : 896
Inscription : 16 avr. 2016, 22:14
Status : Hors-ligne

Normalement, il ne devait plus rester qu'un seul then
et c'est celui de la ligne 81 :

Code : Tout sélectionner

if [ -s $backup ]; then
Donc je ne comprends pas comment il pouvait en rester un en ligne 29.

=======
Il faudrait que, dans ton prochain message
tu transmettes un copié/collé du script actuel,

et ne t'embête pas à numéroter les lignes,
c'est très facile de les numéroter dans un éditeur de texte ou dans sa console texte en faisant un copié/collé,

par contre, c'est embêtant d'être obligé d'enlever la numérotation des lignes
quand on veut recréer le script sur sa machine à partir d'un message récupéré depuis le forum.

Ne t'embête pas non plus à transmettre des messages faisant référence à des numéros de lignes :
ça ne me sert pas à grand chose si on ne sait pas à quoi peuvent correspondent ces numéros de ligne,
ou/et si on n'a pas l'intégralité du script qui a été utilisé quand le message d'erreur à retourné un numéro de ligne.
Avatar de l’utilisateur
DbFr871
Membre très actif
Membre très actif
Messages : 1140
Inscription : 17 mai 2016, 20:48
Localisation : Nègrepelissien
Contact :
Status : Hors-ligne

MicP a écrit : 12 sept. 2017, 17:23 Normalement, il ne devait plus rester qu'un seul then
et c'est celui de la ligne 81 :

Code : Tout sélectionner

if [ -s $backup ]; then
Donc je ne comprends pas comment il pouvait en rester un en ligne 29.

=======
Il faudrait que, dans ton prochain message
tu transmettes un copié/collé du script actuel,
...
.

Voici le script intégral :

Code : Tout sélectionner

#!/bin/bash
#
# Ce script permet de faire une sauvegarde incrémentale manuelle avec "rsync"
# Il peut être lancé à partir d'un bouton personnalisé dans un tableau de bord.
#
# Variables de couleurs
VERT="\\033[1;32m"
STNDT="\\033[0;39m"
ROUGE="\\033[1;31m"
ROSE="\\033[1;35m"
BLEU="\\033[1;34m"
BLANC="\\033[0;02m"
JAUNE="\\033[1;33m"
CYAN="\\033[1;36m"
#
Date=$(date +%d-%m-%Y)
Heure=$(date +%T)
#
echo -e $BLEU "Exécuter la sauvegarde ? [o/N]"; # Pour plus de lisibilité, la réponse par défaut est donnée en majuscule à la suite de la question.
read -sn1;                                      # Pas la peine d'entrer plus d'un caractère ni d'appuyer sur la touche entrée.
#if [[ $REPLY =~ [yYoO] ]] ||                    # La variable REPLY est automatiquement créée par la fonction read du bash (builtins)
#   { echo -e $ROUGE "Abandon sauvegarde.";
#	 echo -e $STNDT "Sortie Sauvegarde"; exit; } 
#
[[ $REPLY =~ [yYoO] ]] || { echo -e $ROUGE "Abandon sauvegarde."; echo -e $STNDT "Sortie Sauvegarde"; exit; }   # La variable REPLY est automatiquement créée par la fonction read du bash (builtins)
#then
    echo -e $VERT "Sauvegarde lancée !" # Seulement si l'utilisateur a appuyé sur la touche "y" "Y" "o" ou "O"
#fi
#then
	echo -e $JAUNE "----\nLancement sauvegarde à : $Heure le $Date"
	echo -e $ROSE "-----------\nSynchronisation en cours...\n ------------"
#
# pour donner un nom "raccourci" (incluant le chemin) au fichier backuperror0.log :
backup=/home/bernard/bin/Sauvegardes/backuperror0Del-portable_Sauv1T_500go_SSD224Go.log
#
aptitude search '~i !~M' -F '%p' > /home/mes_paquetsPortable
#
dpkg --get-selections > liste-des-paquets1
#
# à 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.
# ">>" renvoie le contenu du terminal sans écraser ce que contient déjà le fichier.
# Le chiffre "2" suivi d'un seul ">" renvoie seulement les messages d'erreurs
# générés par le processus dans le fichier indiqué en écrasant le contenu de ce fichier.
# "2>>" renvoie les erreurs sans écraser le contenu du fichier.
#
#SSD224Go
mountpoint /media/bernard/SSD224Go -q || { echo "Attention, SSD224Go absent";  exit }
	echo -e $CYAN "-----------\nSynchronisation en cours...\n ------------"
rsync -a -P --del --stats /home/bernard/DocumentsPerso /media/bernard/SSD224Go 2>> $backup
rsync -a -P --del --stats /home/bernard/MesDocuments /media/bernard/SSD224Go 2>> $backup
rsync -a -P --del --stats /home/bernard/MesPhotos /media/bernard/SSD224Go 2>> $backup
rsync -a -P --del --stats /home/bernard/MesScripts /media/bernard/SSD224Go 2>> $backup
#
#DDSauv1To-a
mountpoint /media/bernard/Sauv1To-a -q || { echo "Attention, Sauv1To-a absent";  exit }
[ -d /media/bernard/Sauv1To-a/SauvDdPrincipal1 ] || { echo "Attention, répertoire /media/bernard/Sauv1To-a/SauvDdPrincipal1 absent"; exit; }
	echo -e $ROSE "-----------\nSynchronisation en cours...\n ------------"
rsync -a -P --del --stats /home /media/bernard/Sauv1To-a/SauvDdPrincipal1 2>> $backup
rsync -a -P --del --stats /etc /media/bernard/Sauv1To-a/SauvDdPrincipal1 2>> $backup
rsync -a -P --del --stats /var /media/bernard/Sauv1To-a/SauvDdPrincipal1 2>> $backup
#
#DD500Go
mountpoint /media/usb0 -q || { echo "Attention, DD500Go absent";  exit }
[ -d /media/usb0/SauvDdPrincipal2 ] || { echo "Attention, répertoire /media/usb0/SauvDdPrincipal2 absent"; exit; }
	echo -e $BLEU "-----------\nSynchronisation en cours...\n ------------"
rsync -a -P --del --stats /home /media/usb0/SauvDdPrincipal2 2>> $backup
rsync -a -P --del --stats /etc /media/usb0/SauvDdPrincipal2 2>> $backup
rsync -a -P --del --stats /var /media/usb0/SauvDdPrincipal2 2>> $backup
#
# Vérification des liens = faite
# 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), ce que vérifie l'option "-s" :
if [ -s $backup ]; then
{
  date >> $backup
}
#fi
		# Mise à jour de l'heure
		Heure=$(date +%T)
	echo -e $STNDT "Sauvegarde terminée à  : $Heure le $Date\n"
else
	echo -e $STNDT "Procédure interrompue par l'utilisateur."
fi
read -p "Pour fermer le programme de sauvegarde  : Ctrl + C"
# ---- fin du script ----
sans le N° des lignes, je m'enquiquine moins... :wink:
et j'ai supprimé des commentaires, pour alléger le script...
Cordialement,
Bernard
Debian9.1Stretch-XFCE-64bits-Sony-Vaio,Intel-P8400-2.26GHz,DD-SeagateSSHD500Go,GeForce9300M-GS-256Mo
MicP
Modérateur
Modérateur
Messages : 896
Inscription : 16 avr. 2016, 22:14
Status : Hors-ligne

Moi aussi ça me va mieux sans les numéros
car je n'ai plus à supprimer les numéro de lignes

=======
Et sinon, est-ce qu'il y a un message d'erreur maintenant ?

Si l'exécution du script retourne un message avec un numéro de ligne,
comme j'ai l'intégralité du script, s'il n'a pas été modifié,
je retrouverai facilement la ligne citée
Avatar de l’utilisateur
DbFr871
Membre très actif
Membre très actif
Messages : 1140
Inscription : 17 mai 2016, 20:48
Localisation : Nègrepelissien
Contact :
Status : Hors-ligne

MicP a écrit : 12 sept. 2017, 18:59 ...
=======
Et sinon, est-ce qu'il y a un message d'erreur maintenant ?

Si l'exécution du script retourne un message avec un numéro de ligne,
comme j'ai l'intégralité du script, s'il n'a pas été modifié,
je retrouverai facilement la ligne citée
.
oui, il y a toujours le même genre d'erreur :
bernard# /home/bernard/MesScripts/Sauvegarde_portable_Sauv1T_500go_SSD224Go
Exécuter la sauvegarde ? [o/N]
Sauvegarde lancée !
----
Lancement sauvegarde à : 18:12:53 le 12-09-2017
-----------
Synchronisation en cours...
------------
/home/bernard/MesScripts/Sauvegarde_portable_Sauv1T_500go_SSD224Go: ligne 88: erreur de syntaxe : fin de fichier prématurée
bernard#

.
que lui manque-t-il ? :017:
Cordialement,
Bernard
Debian9.1Stretch-XFCE-64bits-Sony-Vaio,Intel-P8400-2.26GHz,DD-SeagateSSHD500Go,GeForce9300M-GS-256Mo
MicP
Modérateur
Modérateur
Messages : 896
Inscription : 16 avr. 2016, 22:14
Status : Hors-ligne

Essaye avec ce contenu pour voir…

Code : Tout sélectionner

#!/bin/bash
#
# Ce script permet de faire une sauvegarde incrémentale manuelle avec "rsync"
# Il peut être lancé à partir d'un bouton personnalisé dans un tableau de bord.
#
# Variables de couleurs
VERT="\\033[1;32m"
STNDT="\\033[0;39m"
ROUGE="\\033[1;31m"
ROSE="\\033[1;35m"
BLEU="\\033[1;34m"
BLANC="\\033[0;02m"
JAUNE="\\033[1;33m"
CYAN="\\033[1;36m"
#
Date=$(date +%d-%m-%Y)
Heure=$(date +%T)
#
echo -e $BLEU "Exécuter la sauvegarde ? [o/N]"; # Pour plus de lisibilité, la réponse par défaut est donnée en majuscule à la suite de la question.
read -sn1;                                      # Pas la peine d'entrer plus d'un caractère ni d'appuyer sur la touche entrée.
#if [[ $REPLY =~ [yYoO] ]] ||                    # La variable REPLY est automatiquement créée par la fonction read du bash (builtins)
#   { echo -e $ROUGE "Abandon sauvegarde.";
#	 echo -e $STNDT "Sortie Sauvegarde"; exit; } 
#
[[ $REPLY =~ [yYoO] ]] || { echo -e $ROUGE "Abandon sauvegarde."; echo -e $STNDT "Sortie Sauvegarde"; exit; }   # La variable REPLY est automatiquement créée par la fonction read du bash (builtins)
#then
    echo -e $VERT "Sauvegarde lancée !" # Seulement si l'utilisateur a appuyé sur la touche "y" "Y" "o" ou "O"
#fi
#then
	echo -e $JAUNE "----\nLancement sauvegarde à : $Heure le $Date"
	echo -e $ROSE "-----------\nSynchronisation en cours...\n ------------"
#
# pour donner un nom "raccourci" (incluant le chemin) au fichier backuperror0.log :
backup=/home/bernard/bin/Sauvegardes/backuperror0Del-portable_Sauv1T_500go_SSD224Go.log
#
aptitude search '~i !~M' -F '%p' > /home/mes_paquetsPortable
#
dpkg --get-selections > liste-des-paquets1
#
# à 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.
# ">>" renvoie le contenu du terminal sans écraser ce que contient déjà le fichier.
# Le chiffre "2" suivi d'un seul ">" renvoie seulement les messages d'erreurs
# générés par le processus dans le fichier indiqué en écrasant le contenu de ce fichier.
# "2>>" renvoie les erreurs sans écraser le contenu du fichier.
#
#SSD224Go
mountpoint /media/bernard/SSD224Go -q || { echo "Attention, SSD224Go absent"; exit; }
	echo -e $CYAN "-----------\nSynchronisation en cours...\n ------------"
rsync -a -P --del --stats /home/bernard/DocumentsPerso /media/bernard/SSD224Go 2>> $backup
rsync -a -P --del --stats /home/bernard/MesDocuments /media/bernard/SSD224Go 2>> $backup
rsync -a -P --del --stats /home/bernard/MesPhotos /media/bernard/SSD224Go 2>> $backup
rsync -a -P --del --stats /home/bernard/MesScripts /media/bernard/SSD224Go 2>> $backup
#
#DDSauv1To-a
mountpoint /media/bernard/Sauv1To-a -q || { echo "Attention, Sauv1To-a absent"; exit; }
[ -d /media/bernard/Sauv1To-a/SauvDdPrincipal1 ] || { echo "Attention, répertoire /media/bernard/Sauv1To-a/SauvDdPrincipal1 absent"; exit; }
	echo -e $ROSE "-----------\nSynchronisation en cours...\n ------------"
rsync -a -P --del --stats /home /media/bernard/Sauv1To-a/SauvDdPrincipal1 2>> $backup
rsync -a -P --del --stats /etc /media/bernard/Sauv1To-a/SauvDdPrincipal1 2>> $backup
rsync -a -P --del --stats /var /media/bernard/Sauv1To-a/SauvDdPrincipal1 2>> $backup
#
#DD500Go
mountpoint /media/usb0 -q || { echo "Attention, DD500Go absent"; exit; }
[ -d /media/usb0/SauvDdPrincipal2 ] || { echo "Attention, répertoire /media/usb0/SauvDdPrincipal2 absent"; exit; }
	echo -e $BLEU "-----------\nSynchronisation en cours...\n ------------"
rsync -a -P --del --stats /home /media/usb0/SauvDdPrincipal2 2>> $backup
rsync -a -P --del --stats /etc /media/usb0/SauvDdPrincipal2 2>> $backup
rsync -a -P --del --stats /var /media/usb0/SauvDdPrincipal2 2>> $backup
#
# Vérification des liens = faite
# 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), ce que vérifie l'option "-s" :
if [ -s $backup ]; then
{
  date >> $backup
}
#fi
		# Mise à jour de l'heure
		Heure=$(date +%T)
	echo -e $STNDT "Sauvegarde terminée à  : $Heure le $Date\n"
else
	echo -e $STNDT "Procédure interrompue par l'utilisateur."
fi
read -p "Pour fermer le programme de sauvegarde  : Ctrl + C"
# ---- fin du script ----
Avatar de l’utilisateur
DbFr871
Membre très actif
Membre très actif
Messages : 1140
Inscription : 17 mai 2016, 20:48
Localisation : Nègrepelissien
Contact :
Status : Hors-ligne

j'ai vu... la modif au niveau des exit le ";" :icon_biggrin:

alors, tel quel, il tourne avec les supports connectés :icon_biggrin: :

Code : Tout sélectionner

bernard# /home/bernard/MesScripts/Sauvegarde_portable_Sauv1T_500go_SSD224Go_2
 Exécuter la sauvegarde ? [o/N]
 Sauvegarde lancée !
 ----
Lancement sauvegarde à : 21:07:05 le 12-09-2017
 -----------
Synchronisation en cours...
 ------------
 -----------
Synchronisation en cours...
 ------------
sending incremental file list

Number of files: 82,944 (reg: 75,052, dir: 7,881, link: 11)
Number of created files: 0
Number of deleted files: 0
...
.
Nickel :icon_biggrin:


voyons, sans support :

Code : Tout sélectionner

bernard# /home/bernard/MesScripts/Sauvegarde_portable_Sauv1T_500go_SSD224Go_2
 Exécuter la sauvegarde ? [o/N]
 Sauvegarde lancée !
 ----
Lancement sauvegarde à : 21:12:49 le 12-09-2017
 -----------
Synchronisation en cours...
 ------------
Attention, SSD224Go absent
bernard# 
.

Je pense que tu, Vous...avez bien résolu mon évolution :icon_biggrin:

Merci les Amis :wink:

Je reviendrai vers Vous, si d'autres évolutions me viennent à l'idée :wink:
Cordialement,
Bernard
Debian9.1Stretch-XFCE-64bits-Sony-Vaio,Intel-P8400-2.26GHz,DD-SeagateSSHD500Go,GeForce9300M-GS-256Mo
Avatar de l’utilisateur
DbFr871
Membre très actif
Membre très actif
Messages : 1140
Inscription : 17 mai 2016, 20:48
Localisation : Nègrepelissien
Contact :
Status : Hors-ligne

il y en aurait une qui me vient dés à présent, c'est celle d'informer que le support "x" est absent, avec une validation de l'info, éventuellement... mais pas du tout obligé, et que le script continue à sauvegarder sur les supports présents...

Qu'est-ce que Vous en pensez ?


Edit
Je verrai bien :
test en début de sauvegarde, qui demande :
1/ si tous les supports déclarés, sont bien présent...
2/ tous les supports sont présents, sauvegarde lancée !
3/ manque un ou plusieurs supports, question : voulez-vous continuer sur le ou les supports présents ?
Cordialement,
Bernard
Debian9.1Stretch-XFCE-64bits-Sony-Vaio,Intel-P8400-2.26GHz,DD-SeagateSSHD500Go,GeForce9300M-GS-256Mo
Avatar de l’utilisateur
piratebab
Site Admin
Site Admin
Messages : 5854
Inscription : 24 avr. 2016, 18:41
Localisation : sud ouest
Status : En ligne

amélioration: avoir un fichier de log qui enregistre le résultat de l'opération.
amélioration: avoir un switch qui permet d'avoir une version en lancement manuel, et une autre en lancement auto.
amélioration: le rendre plus modulaire afin d'ajouter facilement des support ou des rep de sauvegarde
Avatar de l’utilisateur
DbFr871
Membre très actif
Membre très actif
Messages : 1140
Inscription : 17 mai 2016, 20:48
Localisation : Nègrepelissien
Contact :
Status : Hors-ligne

J'ouvre une autre discussion, puisque celle-là est "résolue" :wink:

Non ?
Voui ?
:icon_biggrin:
Cordialement,
Bernard
Debian9.1Stretch-XFCE-64bits-Sony-Vaio,Intel-P8400-2.26GHz,DD-SeagateSSHD500Go,GeForce9300M-GS-256Mo
Avatar de l’utilisateur
piratebab
Site Admin
Site Admin
Messages : 5854
Inscription : 24 avr. 2016, 18:41
Localisation : sud ouest
Status : En ligne

bonne idée!
tu peux même mettre ton script sur le git
MicP
Modérateur
Modérateur
Messages : 896
Inscription : 16 avr. 2016, 22:14
Status : Hors-ligne

Tel quel, je viens d'en refaire une version
en utilisant des if then else

Code : Tout sélectionner

#!/bin/bash
#
# Ce script permet de faire une sauvegarde incrémentale manuelle avec "rsync"
# Il peut être lancé à partir d'un bouton personnalisé dans un tableau de bord.
#

# Variables de couleurs
VERT="\\033[1;32m"
STNDT="\\033[0;39m"
ROUGE="\\033[1;31m"
ROSE="\\033[1;35m"
BLEU="\\033[1;34m"
BLANC="\\033[0;02m"
JAUNE="\\033[1;33m"
CYAN="\\033[1;36m"
# pour donner un nom "raccourci" (incluant le chemin) au fichier backuperror0.log :
backup="/home/bernard/bin/Sauvegardes/backuperror0Del-portable_Sauv1T_500go_SSD224Go.log"

echo -e "${BLEU}Exécuter la sauvegarde ? [o/N]${STNDT}"

read -sn1
[[ $REPLY =~ [yYoO] ]] || { echo -e "${ROUGE}Abandon sauvegarde.${STNDT}\nSortie Sauvegarde"; exit; }

echo -e "${VERT}Sauvegarde lancée !\n${JAUNE}----\nLancement sauvegarde le : $(date +%d-%m-%Y' à '%T)${STNDT}"
echo -e "${ROSE}-----------\nSynchronisation en cours...\n ------------${STNDT}"


#SSD224Go
mountPnt="/media/bernard/SSD224Go"
repSauvg="${mountPnt}"
msgColor="${ROSE}"

if $(mountpoint "${mountPnt}" -q); then
    echo -e "${msgColor}-----------\nSynchronisation en cours...\n ------------${STNDT}"
    repPerso="/home/bernard"
    rsync -a -P --del --stats "${repPerso}/DocumentsPerso" "${repSauvg}"  2>> "${backup}"
    rsync -a -P --del --stats "${repPerso}/MesDocuments"   "${repSauvg}"  2>> "${backup}"
    rsync -a -P --del --stats "${repPerso}/MesPhotos"      "${repSauvg}"  2>> "${backup}"
    rsync -a -P --del --stats "${repPerso}/MesScripts"     "${repSauvg}"  2>> "${backup}"
else
    echo "Attention, ${mountPnt} absent"
fi

#DDSauv1To-a
mountPnt="/media/bernard/Sauv1To-a"
repSauvg="${mountPnt}/SauvDdPrincipal1"
msgColor="${ROSE}"

if $(mountpoint "${mountPnt}" -q); then
    if [ -d "${repSauvg}" ]; then
        echo -e "${msgColor}-----------\nSynchronisation en cours...\n ------------${STNDT}"
        rsync -a -P --del --stats /home "${repSauvg}"  2>> "${backup}"
        rsync -a -P --del --stats /etc  "${repSauvg}"  2>> "${backup}"
        rsync -a -P --del --stats /var  "${repSauvg}"  2>> "${backup}"
    else
        echo "Attention, répertoire ${repSauvg} absent"
    fi
else
    echo "Attention, ${mountPnt} absent"
fi

#DD500Go
mountPnt="/media/usb0"
repSauvg="${mountPnt}/SauvDdPrincipal2"
msgColor="${BLEU}"

if $(mountpoint "${mountPnt}" -q); then
    if [ -d "${repSauvg}" ]; then
        echo -e "${msgColor}-----------\nSynchronisation en cours...\n ------------${STNDT}"
        rsync -a -P --del --stats /home "${repSauvg}"  2>> "${backup}"
        rsync -a -P --del --stats /etc  "${repSauvg}"  2>> "${backup}"
        rsync -a -P --del --stats /var  "${repSauvg}"  2>> "${backup}"
    else
        echo "Attention, répertoire ${repSauvg} absent"
    fi
else
    echo "Attention, ${mountPnt} absent"
fi

#========
if [ -s "${backup}" ]; then
    echo "Sauvegarde terminée : $(date +%d-%m-%Y' à' %T)\n"
else
    echo "Procédure interrompue par l'utilisateur."
fi

read -p "Pour fermer le programme de sauvegarde : Ctrl + C"

# ---- fin du script ----
En espérant que ça fonctionne…

=======
DbFr871 a écrit :
il y en aurait une qui me vient dés à présent, c'est celle d'informer que le support "x" est absent, avec une validation de l'info, éventuellement... mais pas du tout obligé, et que le script continue à sauvegarder sur les supports présents...

Qu'est-ce que Vous en pensez ?
je pense qu'il n'y a que toi qui peut définir la façon dont tu veux voir fonctionner ce script
puisque c'est en fonction de ce que tu veux en faire et en fonction du contexte dans lequel il va devoir fonctionner.

Il serait sans doute assez long et fastidieux de décrire ce contexte et la façon dont tu veux l'utiliser,
et d'un autre côté, lister toutes les possibilités est tout aussi difficile, sans compter que je ne les connais pas toutes,
et qu'il y a des personnes beaucoup plus compétentes que moi.

=======
EDIT : J'avais oublié 2 chiures de mouches dans le format de la date.
En fait, c'est une erreur de copié/collé.

Je viens de les rajouter, ce qui donne :
date +%d-%m-%Y' à '%T
Avatar de l’utilisateur
DbFr871
Membre très actif
Membre très actif
Messages : 1140
Inscription : 17 mai 2016, 20:48
Localisation : Nègrepelissien
Contact :
Status : Hors-ligne

piratebab a écrit : 13 sept. 2017, 13:34 bonne idée!
tu peux même mettre ton script sur le git
.
J'veux bin... mais à quel endroit... tout est en angliche... :icon_e_surprised: :icon_biggrin:
Cordialement,
Bernard
Debian9.1Stretch-XFCE-64bits-Sony-Vaio,Intel-P8400-2.26GHz,DD-SeagateSSHD500Go,GeForce9300M-GS-256Mo
Avatar de l’utilisateur
lol
Site Admin
Site Admin
Messages : 5054
Inscription : 04 avr. 2016, 12:11
Localisation : Madagascar
Status : Hors-ligne

DbFr871 a écrit : 13 sept. 2017, 15:33
piratebab a écrit : 13 sept. 2017, 13:34 bonne idée!
tu peux même mettre ton script sur le git
.
J'veux bin... mais à quel endroit... tout est en angliche... :icon_e_surprised: :icon_biggrin:

Image
Règles d'usage du forum. Signalez si vous avez posté votre question sur un autre forum. Explications ici
Debian Unstable. Mate/LXQT. Dieu, en créant l'homme, a quelque peu surestimé ses capacités.
Répondre