Script sauvegarde Le sujet est résolu

Demande d'aide : c'est ici.
Répondre
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

Bonjour à Toutes et Tous :icon_biggrin:
Je suis peu présent, car, après avoir visité nos enfants et chopé(S) (voui, tous les deux, ma Dame et mi... :shok: ) au retour, une superbe grippe, que nous sommes en train de terminer, je pensais faire ce p'tit boulot, tranquillou...
Eh ben, j'm'a trompé :wink:

Je viens d'acquérir un nouveau DD, de 1To, et souhaite sauvegarder l'intégralité de mon DD qui fait tourner Debian Jessie, qui occupe actuellement, sur un DD de 500Go, 240Go !

Dans le script que j'utilisais précédemment, je ne sauvegardais que le home, de cette manière :

#DDSecondaire500Go
rsync -a -P --del --stats /home /media/bernard/Secondaire500/HomePortable 2>> $backup
#

et la sauvegarde occupait 188Go.

J'ai donc modifié la commande en procédant ainsi :
#DDSauv-1To-a
rsync -a -P --del --stats / /media/bernard/Sauv-1To-a/ 2>> $backup
#


Pensant que cela occuperait au maxi, le même "encombrement" que sur le DD principal, je suis surpris...
sur le 1To, il en est à plus de 700Go, et n'a pas terminé... :icon_e_surprised:
Lançait hier en début d'aprem, vers 14h00, et a tourné toute la nuit...

Si vous voulez le script, pas de sushi, le voici :
#!/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 (pour donner un peu de gaieté dans ce monde de brutes...)
VERT="\\033[1;32m"
STNDT="\\033[0;39m"
ROUGE="\\033[1;31m"
ROSE="\\033[1;35m"
BLEU="\\033[1;34m"
BLANC="\\033[0;02m"
BLANCLAIR="\\033[1;08m"
JAUNE="\\033[1;33m"
CYAN="\\033[1;36m"

Date=$(date +%d-%m-%Y)
Heure=$(date +%T)
echo -e $BLEU "Sûr de vouloir exécuter la sauvegarde du Portable ? o/n"
read ANSWER
if [ $ANSWER == o ] ;
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_Sauv-1To_a.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.
#
#DDSecondaire500Go
#DDSauv-1To-a
rsync -a -P --del --stats / /media/bernard/Sauv-1To-a/ 2>> $backup
#
#rsync -a -P --del --stats /home /media/500go/Racine2 2>> $backup
#
#rsync -a -P --del --stats /etc /media/500go/Racine2 2>> $backup
#rsync -a -P --del --stats /lib /media/500go/Racine2 2>> $backup
#rsync -a -P --del --stats /usr /media/500go/Racine2 2>> $backup
#rsync -a -P --del --stats /var /media/500go/Racine2 2>> $backup
#rsync -a -P --del --stats /root /media/500go/Racine2 2>> $backup
#
#
#DD300Go /media/300go
#rsync -a -P --del --stats /home /media/300go/Racine1 2>> $backup
#
#rsync -a -P --del --stats /etc /media/300go/Racine1 2>> $backup
#rsync -a -P --del --stats /lib /media/300go/Racine1 2>> $backup
#rsync -a -P --del --stats /usr /media/300go/Racine1 2>> $backup
#rsync -a -P --del --stats /var /media/300go/Racine1 2>> $backup
#rsync -a -P --del --stats /root /media/300go/Racine1 2>> $backup
#
#rsync -a -P --del --stats /media/freebox/ServeurUpnp/Films/Documents /media/300go/Documents 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 $BLEU "Procédure interrompue par l'utilisateur."
fi

read -p "A la prochaine... Pour fermer le terminal : Ctrl + C"

# ---- fin du script ----



Si j'ai fait une boulette, merci de me l'indiquer !
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

je me réponds, et sous votre objectivité, vous m'indiquerez si j'ai faux ou pas :
il sauvegarde le répertoire "media", or, dans ce répertoire, les 2 dd de sauvegarde y sont...
je pense donc, qu'il est en "boucle" ... :icon_e_surprised:

j'ai vrai ?
faux ?

par contre, je vais chercher comment éviter de sauvegarder ce répertoire...
Cordialement,
Bernard
Debian9.1Stretch-XFCE-64bits-Sony-Vaio,Intel-P8400-2.26GHz,DD-SeagateSSHD500Go,GeForce9300M-GS-256Mo
Avatar de l’utilisateur
Mimoza
Contributeur
Contributeur
Messages : 655
Inscription : 22 avr. 2016, 12:00
Localisation : Terre
Status : Hors-ligne

C'est juste, il faut que tu exclu ce répertoire.
Avatar de l’utilisateur
vohu
Membre
Membre
Messages : 455
Inscription : 16 avr. 2016, 12:02
Localisation : Strasbourg
Status : Hors-ligne

Pour ce genre de sauvegardes j'utilise tar avec le mode incrémentiel sur un montage sshfs. Ca permet d'activer ou non la compression.

Code : Tout sélectionner


#!/bin/bash

DATE=`date +"%Y-%m-%d-%H-%M-%S"`
SOURCE=/media/data/
DEST=$(hostname)
MOUNT=/media/usb

U=user
IP=192.168.1.1

#montage du NAS
umount -f $MOUNT
sshfs -p 24 $U@$IP:/bck $MOUNT

mkdir -p $MOUNT/$DEST

# sauvegarde
echo "Sauvegarde de /etc vers $MOUNT/$DEST"
mkdir -p $MOUNT/$DEST/etc/
tar -Jv --create --file=$MOUNT/$DEST/etc/etc-$DATE.tar --listed-incremental=$MOUNT/$DEST/etc/etc.list /etc/

...

C'est largement perfectible, mais j'ai jamais pris le temps de finir ce script qui fait le job pour le moment...
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

Mimoza a écrit : 15 mars 2017, 10:13 C'est juste, il faut que tu exclu ce répertoire.
Merci de me confirmer :icon_biggrin:
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

vohu a écrit : 15 mars 2017, 11:26 Pour ce genre de sauvegardes j'utilise tar avec le mode incrémentiel sur un montage sshfs. Ca permet d'activer ou non la compression.

Code : Tout sélectionner


#!/bin/bash

DATE=`date +"%Y-%m-%d-%H-%M-%S"`
SOURCE=/media/data/
DEST=$(hostname)
MOUNT=/media/usb

U=user
IP=192.168.1.1

#montage du NAS
umount -f $MOUNT
sshfs -p 24 $U@$IP:/bck $MOUNT

mkdir -p $MOUNT/$DEST

# sauvegarde
echo "Sauvegarde de /etc vers $MOUNT/$DEST"
mkdir -p $MOUNT/$DEST/etc/
tar -Jv --create --file=$MOUNT/$DEST/etc/etc-$DATE.tar --listed-incremental=$MOUNT/$DEST/etc/etc.list /etc/

...

C'est largement perfectible, mais j'ai jamais pris le temps de finir ce script qui fait le job pour le moment...
Merci vohu :icon_biggrin:
Je préfère continuer avec rsync, et cherche pour l'instant, la bonne commande d'exclusion du répertoire indésiré... :wink:
Cordialement,
Bernard
Debian9.1Stretch-XFCE-64bits-Sony-Vaio,Intel-P8400-2.26GHz,DD-SeagateSSHD500Go,GeForce9300M-GS-256Mo
Avatar de l’utilisateur
vohu
Membre
Membre
Messages : 455
Inscription : 16 avr. 2016, 12:02
Localisation : Strasbourg
Status : Hors-ligne

Ho ben rien de compliqué :

rsync -a -P --del --stats --exclude="/media" / /media/bernard/Sauv-1To-a/ 2>> $backup
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

Merci :wink:
vohu a écrit : 15 mars 2017, 12:08 Ho ben rien de compliqué :

rsync -a -P --del --stats --exclude="/media" / /media/bernard/Sauv-1To-a/ 2>> $backup
Je viens de tester avec cette commande :
#rsync -a -P --del --stats --exclude-from=exclude.txt / /media/bernard/Sauv-1To-a/ 2>> $backup
Et aucune sauvegarde s'effectue...

J'ai placé le fichier exclude.txt dans le dossier où se trouve le script de sauvegarde, soit : "Mes_scripts"...

surement que j'ai fait une boulette... surtout que j'ai faim... mais avant d'y aller, voici le contenu du fichier :
#exclure
/lost+found
/media
/mnt
/root
/tmp
/home/bernard/.thumbnails


HS :
j'arrête l'ordi, il m'a fait un GPU lockup..., et j'ai dû l'arrêter, car, plus rien...
ça sent pas bon... :icon_e_surprised:
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

Salut,

Ça n'a pas beaucoup de sens se sauvegarder l'intégralité de la racine...
il faut au minimum ignorer:
Les montages (/mnt et /media) les pseudo sytèmes de fichiers (/proc /dev/ /sys), /tmp /run... /lost+fond...

Bref, c'est plus simple de ne sauvegarder que les fichiers importants et laisser le reste de côté:

/home /etc /opt ? /var ? /usr ?
Pour ces trois derniers, uniquement si tu y a des fichiers importants (sites web, compilations, backup, etc.)
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.
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

lol a écrit : 18 mars 2017, 11:18 Salut,

Ça n'a pas beaucoup de sens se sauvegarder l'intégralité de la racine...
il faut au minimum ignorer:
Les montages (/mnt et /media) les pseudo sytèmes de fichiers (/proc /dev/ /sys), /tmp /run... /lost+fond...

Bref, c'est plus simple de ne sauvegarder que les fichiers importants et laisser le reste de côté:

/home /etc /opt ? /var ? /usr ?
Pour ces trois derniers, uniquement si tu y a des fichiers importants (sites web, compilations, backup, etc.)
Merci lol :wink:

Ok, donc autant que je reste juste avec le /home, qui m'est suffisant, puisque aucune compil ou autre fichier important !
J'm'en va revenir à mon bon vieux Rsync, qui m'a donné toute satisfaction :icon_biggrin:

J'attends les réponses des Ami(e)s sur partimage et partclone, et selon leur réponse, j'aviserai :wink:
Cordialement,
Bernard
Debian9.1Stretch-XFCE-64bits-Sony-Vaio,Intel-P8400-2.26GHz,DD-SeagateSSHD500Go,GeForce9300M-GS-256Mo
Avatar de l’utilisateur
dezix
Membre hyper actif
Membre hyper actif
Messages : 3548
Inscription : 04 juin 2016, 14:50
Status : Hors-ligne

Je suis peut-être HS (je n'ai pas lu l'intégralité du sujet, et je ne sais pas de quel matos tu disposes, ni comment tu en fais usage).

Mais si comme moi tu utilises plusieurs PC pour le même usage (avec les mêmes données)
alors tu pourrais (comme je le fais depuis plusieurs années) oublier les histoires fastidieuses de BACKUP
et utiliser UNISON qui permet de synchroniser des listes de répertoires/fichiers entre plusieurs sources.

Dans mon cas : un PC fixe et un portable que je synchronise via SSH à travers le réseau local créé autour de la LiveBox Orange.

Unison
compare les fichiers sur chaque emplacement et propose la synchro que l'on peut contrôler au fichier/fichier en cas de doute.

Depuis que je suis passé à ce système => fini les embrouilles :038:

En plus, autre avantage et pas des moindres => plus de gaspillage d'espace puisque chaque machine est la sauvegarde de l'autre.

Ne reste plus qu'à faire une image système (uniquement) pour pouvoir le ré-installer en bloc en cas de gros pépin (c'est quand-même très rare ;-)

Pour Unison là aussi j'ai qqlques notes si besoin

@+
**Simple Utilisateur** -- Debian stable - XFCE
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

Alors, je t'expose ce que je fais :
j'ai mon disque principal de 500Go, et sauvegarde le /home, dés que j'effectue une modification ou la création d'un document !
la sauvegarde s'effectue sur un second disque de 500Go, et maintenant, sur un troisième disque, lui de 1To !
Pour se faire, j'utilise un script Rsync, que tu as lu sur le lien que j'ai indiqué précédemment !

Maintenant que tu sais ce que je fais, penses-tu que Unison puisse le faire ?
je pense que voui, et surement qu'il doit y avoir des astuces pour le lancer soit à la demande, soit automatiquement... j'me trompe ?

Je te laisse me répondre :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 : 5907
Inscription : 24 avr. 2016, 18:41
Localisation : sud ouest
Status : En ligne

pour faire de la synchro, j'utilise luckybackup. Mais l'utilisation d'un script avec du rsync dedans permet de mieux cerner ce qu'on veut sauvegarder. On peut très bien faire de la synchro avec rsync, il faut juste se creuser un peu plus la cervelle pour écrire le 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

:006:
Hier, j'ai testé mon script de sauvegarde, sur les deux dd dédiés :

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"
BLANCLAIR="\\033[1;08m"
JAUNE="\\033[1;33m"
CYAN="\\033[1;36m"

Date=$(date +%d-%m-%Y)
Heure=$(date +%T)
		echo -e $BLEU "Sûr de vouloir exécuter la sauvegarde du Portable ? o/n"
		read ANSWER
if [ $ANSWER == o ] ;
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.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.
#
#DDSecondaire500
#DDSauv1To-a
rsync -a -P --del --stats /home /media/bernard/Sauv1To-a/ 2>> $backup
#
rsync -a -P --del --stats /home /media/bernard/Secondaire500/Racine2 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 $BLEU "Procédure interrompue par l'utilisateur."
fi

read -p "A la prochaine... Pour fermer le terminal : Ctrl + C"

# ---- fin du script ----
D'abord, dd par dd, ligne désactivée par dd, puis les 2 lignes activées, et ça a fonctionné nickel !

Après, je ne sais si c'est cela de la synchro, mais perso, j'en suis satisfait, de son fonctionnement :wink:
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 : 5907
Inscription : 24 avr. 2016, 18:41
Localisation : sud ouest
Status : En ligne

Ton test de données d'entrées est simpliste

Code : Tout sélectionner

read ANSWER
if [ $ANSWER == o ] ;
then
Et si on ne répond pas "o" ?

Il y a une différence entre synchro et backup.
Backup, c'est dans un seul sens, synchro, c'est dans les 2 sens.
MicP
Modérateur
Modérateur
Messages : 896
Inscription : 16 avr. 2016, 22:14
Status : Hors-ligne

Bonjour

Sans avoir à valider la saisie par la touche entrée :

Code : Tout sélectionner

echo "Voulez-vous continer ? [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] ]]; then      # La variable REPLY est automatiquement créée par la fonction read du bash (builtins)
    echo "Il a dit OUI !"            # Seulement si l'utilisateur a appuyé sur la touche "y" "Y" "o" ou "O"
fi
Voir aussi :

Code : Tout sélectionner

man bash

Code : Tout sélectionner

man builtins
=======
Tes scripts seraient bien plus facile à lire s'il étaient entourés de balises
[code]Le texte de ton script qui conservera son indentation et qui profitera de la coloration syntaxique.[/code]
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 : 20 mars 2017, 13:30 Ton test de données d'entrées est simpliste

Code : Tout sélectionner

read ANSWER
if [ $ANSWER == o ] ;
then
Et si on ne répond pas "o" ?
Voici les 2 cas, et pour le second, rien n'a été "pensé"...

Code : Tout sélectionner

bernard# /home/bernard/Mes_scripts/Sauvegarde_portable_Sauv1T_500go
 Sûr de vouloir exécuter la sauvegarde du Portable ? o/n
n
 Procédure interrompue par l'utilisateur.
A la prochaine... Pour fermer le terminal : Ctrl + C^C
bernard# 
bernard/Mes_scripts/Sauvegarde_portable_Sauv1T_500go
 Sûr de vouloir exécuter la sauvegarde du Portable ? o/n

/home/bernard/Mes_scripts/Sauvegarde_portable_Sauv1T_500go: ligne 21 : [: == : opérateur unaire attendu
 Procédure interrompue par l'utilisateur.
A la prochaine... Pour fermer le terminal : Ctrl + C^C
bernard# 
piratebab a écrit : 20 mars 2017, 13:30 Il y a une différence entre synchro et backup.
Backup, c'est dans un seul sens, synchro, c'est dans les 2 sens.
Ok, merci pour la précision !
Dans mon cas, je fais des sauvegardes, donc, je modifie ou crée un doc, le plus qui m'est utile est le backup !
Pour l'instant, la synchro m'est inutile !
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

Je te réponds dans le désordre, mais c'est plus facile... :wink:
MicP a écrit : 20 mars 2017, 15:00 =======
Tes scripts seraient bien plus facile à lire s'il étaient entourés de balises
[code]Le texte de ton script qui conservera son indentation et qui profitera de la coloration syntaxique.[/code]
J'ai rectifié le commentaire concerné :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

MicP a écrit : 20 mars 2017, 15:00 Bonjour

Sans avoir à valider la saisie par la touche entrée :

Code : Tout sélectionner

echo "Voulez-vous continer ? [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] ]]; then      # La variable REPLY est automatiquement créée par la fonction read du bash (builtins)
    echo "Il a dit OUI !"            # Seulement si l'utilisateur a appuyé sur la touche "y" "Y" "o" ou "O"
fi
Voir aussi :

Code : Tout sélectionner

man bash

Code : Tout sélectionner

man builtins
Merci, j'en apprends tous les jours, et vais modifier le script en conséquence :wink:
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 : 5907
Inscription : 24 avr. 2016, 18:41
Localisation : sud ouest
Status : En ligne

si l'utilisateur répond autre chose que yYoO, il faut sortir proprement.
Répondre