Evolution script sauvegarde-1 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

Bonsoir à Toutes et Tous :icon_biggrin:
Je souhaite améliorer ce script, où vous m'avez beaucoup aidé à le faire "évoluer" :
viewtopic.php?f=8&t=876

Comment l'améliorer ?
Tout simplement en arrêtant le script si, au lancement du script, un disque ou autre matériel déclaré dans le script, est absent !

Et voui, le ssd, il me fait un patacaisse au démarrage de l'ordi, aussi, je le déconnecte à chaque extinction de l'ordi.
Par contre, lorsque j'oublie de le connecter et que je lance une sauvegarde... :011: là itou... :011: cela me file un patacaisse en créant un second répertoire portant le même nom+1 sur le dd principal, et bien entendu, sature le dd...

Si je me suis mal exprimé, je reformulerai :icon_biggrin:

Merci d'avance :icon_biggrin:
Cordialement,
Bernard
Debian9.1Stretch-XFCE-64bits-Sony-Vaio,Intel-P8400-2.26GHz,DD-SeagateSSHD500Go,GeForce9300M-GS-256Mo
hybridemoineau
Membre
Membre
Messages : 390
Inscription : 24 avr. 2016, 15:34
Status : Hors-ligne

Quelque chose comme :

Code : Tout sélectionner

if [ ! -e /media/ton-disque-ssd ]
then
echo "Attention, ssd n'est pas présent"
Voir pour les uuid
Avatar de l’utilisateur
piratebab
Site Admin
Site Admin
Messages : 5854
Inscription : 24 avr. 2016, 18:41
Localisation : sud ouest
Status : En ligne

pour mon info, pourquoi -e et pas -d?
Et pour conserver une trace de ça qu'a fait ton script, tu peux utiliser la commande exec
https://www.patpro.net/blog/index.php/2 ... s-en-bash/
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

hybridemoineau a écrit : 06 sept. 2017, 11:45 Quelque chose comme :

Code : Tout sélectionner

if [ ! -e /media/ton-disque-ssd ]
then
echo "Attention, ssd n'est pas présent"
Voir pour les uuid
.
Merci hybridemoineau :wink:
Je vais tester et ferai un retour, bien entendu :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 : 5854
Inscription : 24 avr. 2016, 18:41
Localisation : sud ouest
Status : En ligne

j'ai retrouvé la liste des fonctions pour tester la présence de fichiers ou répertoires
http://tldp.org/LDP/abs/html/fto.html

Le plus judicieux serait -b (block device)
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

hybridemoineau a écrit : 06 sept. 2017, 11:45 Quelque chose comme :

Code : Tout sélectionner

if [ ! -e /media/ton-disque-ssd ]
then
echo "Attention, ssd n'est pas présent"
Voir pour les uuid
.
...
#SSD224Go
#
if [ ! -e /media/bernard/SSD224Go ]
then
echo "Attention, ssd 224Go absent"
#
echo -e $CYAN "-----------\nSynchronisation en cours...\n ------------"
rsync -a -P --del --stats /home/bernard/DocumentsPerso /media/bernard/SSD224Go 2>> $backup
...
.
Indiques moi, hybridemoineau, si je suppose bien, le -e signifie exit si la condition est vrai, fausse, manquante quoi... :wink:

et le script est interrompu !

exact ?

je demande avant de lancer le script, parce que c'est galère à le stopper, puis supprimer ce qu'il a écrit en plus... :wink:

Merci de ton retour :wink:

edit1

Code : Tout sélectionner

bernard# /home/bernard/MesScripts/Sauvegarde_portable_Sauv1T_500go_SSD224Go
 Exécuter la sauvegarde ? [o/N]
/home/bernard/MesScripts/Sauvegarde_portable_Sauv1T_500go_SSD224Go: ligne 104: erreur de syntaxe : fin de fichier prématurée
bernard# 
En l'état il se bloque... il manque un élément... mais lequel ?
la ligne 104 est la fin du script... :icon_e_surprised:
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

-e teste la présence d'un fichier (OK su fichier présent
! inverse la condition
donc ! -e est OK si fichier pas présent, et tu affiches le message d'erreur. et bien évidement, tu dois aussi terminer immédiatement 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

piratebab a écrit : 06 sept. 2017, 16:07 -e teste la présence d'un fichier (OK su fichier présent
! inverse la condition
donc ! -e est OK si fichier pas présent, et tu affiches le message d'erreur. et bien évidement, tu dois aussi terminer immédiatement le script!
.
Il "doit"... manquer un élément... parce que c'est un dd qui devrait être demandé, et non un fichier...
j'ai bien testé avec le dossier de sauvegarde, mais même réponse qu'auparavant... :icon_e_surprised:

mais, c'est bien... il termine le script et sort, en évitant de tenter d'écrire tout de même... je préfère :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 : 5854
Inscription : 24 avr. 2016, 18:41
Localisation : sud ouest
Status : En ligne

En UNIX, tout est fichier ......
si tu veux vraiment tester la présence d'un disque (périphérique de type bloc), il faut utiliser -b
Mais tester la présence du répertoire de sauvegarde (-d) fonctionnerait aussi.
Est ce que tu lances ton script à la main, ou bien est ce automatique ?
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 : 06 sept. 2017, 19:54 En UNIX, tout est fichier ......
si tu veux vraiment tester la présence d'un disque (périphérique de type bloc), il faut utiliser -b
Mais tester la présence du répertoire de sauvegarde (-d) fonctionnerait aussi.
Est ce que tu lances ton script à la main, ou bien est ce automatique ?
.
ah... j'suis un allergique à l'automatique... :wink:

donc, tout en manuel :wink:

Je vais tester avec -b
Cordialement,
Bernard
Debian9.1Stretch-XFCE-64bits-Sony-Vaio,Intel-P8400-2.26GHz,DD-SeagateSSHD500Go,GeForce9300M-GS-256Mo
hybridemoineau
Membre
Membre
Messages : 390
Inscription : 24 avr. 2016, 15:34
Status : Hors-ligne

piratebab a écrit : 06 sept. 2017, 12:51 pour mon info, pourquoi -e et pas -d?
Parce que j'avais tiré ça d'un vieux script, sans avoir creusé "if"... -d est mieux.
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 : 06 sept. 2017, 19:54 En UNIX, tout est fichier ......
si tu veux vraiment tester la présence d'un disque (périphérique de type bloc), il faut utiliser -b
Mais tester la présence du répertoire de sauvegarde (-d) fonctionnerait aussi.
Est ce que tu lances ton script à la main, ou bien est ce automatique ?
.
testé ce matin avec -b :

Code : Tout sélectionner

bernard# /home/bernard/MesScripts/Sauvegarde_portable_Sauv1T_500go_SSD224Go
 Exécuter la sauvegarde ? [o/N]
/home/bernard/MesScripts/Sauvegarde_portable_Sauv1T_500go_SSD224Go: ligne 104: erreur de syntaxe : fin de fichier prématurée
bernard# 
.
j'vais tester avec -d

edit1
Testé avec -d avec le nom du répertoire de sauvegarde :

Code : Tout sélectionner

/bernard# /home/bernard/MesScripts/Sauvegarde_portable_Sauv1T_500go_SSD224Go
 Exécuter la sauvegarde ? [o/N]
/home/bernard/MesScripts/Sauvegarde_portable_Sauv1T_500go_SSD224Go: ligne 104: erreur de syntaxe : fin de fichier prématurée
/bernard# 
.
:icon_confused:
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

peux tu STP nous faire un copié/collé de la ligne qui bloque STP.
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 : 07 sept. 2017, 13:01 peux tu STP nous faire un copié/collé de la ligne qui bloque STP.
.
je te fais la copie de l'ensemble du script :
#!/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 "Sûr de vouloir exécuter la sauvegarde du Portable ? o/N"
# read ANSWER
#if [ $ANSWER == o ] ;
#
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; }
#
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
#
#if [ ! -d /media/bernard/SSD224Go ]
#then
#echo "Attention, ssd 224Go absent"
#
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 [ ! -d /media/bernard/Sauv1To-a/SauvDdPrincipal1 ]
#then
#echo "Attention, Sauv1To-a absent"
#
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
#
##if [ ! -e /media/usb0 ]
##then
##echo "Attention, usb0/dd 500Go absent"
#
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 ----
.

et... flûte ! j'vois plus comment insérer le numéro des lignes...
la 104 est juste après # ---- fin du script ----
sur le script, comme tu le vois, j'ai désactivé l'option, en commentant avec #
et j'avais testé le -d "que" sur Sauv1To-a/SauvDdPrincipal1
Cordialement,
Bernard
Debian9.1Stretch-XFCE-64bits-Sony-Vaio,Intel-P8400-2.26GHz,DD-SeagateSSHD500Go,GeForce9300M-GS-256Mo
hybridemoineau
Membre
Membre
Messages : 390
Inscription : 24 avr. 2016, 15:34
Status : Hors-ligne

rajoute

Code : Tout sélectionner

exit
fi
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:
hybridemoineau a écrit : 08 sept. 2017, 10:17 rajoute

Code : Tout sélectionner

exit
fi
.
je l'ai inséré comme cela dans le script :

Code : Tout sélectionner

...
#DDSauv1To-a
#
if [ ! -d /media/bernard/Sauv1To-a/SauvDdPrincipal1 ]
then
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
...
.
j'ai déconnecté le dd Sauv1To, puis ai lancé la sauvegarde
et il a commencé à écrire sur le dd principal... alors que le dd de sauvegarde était déconnecté... :icon_e_surprised:

mais peut-être ai-je écrit à la mauvaise ligne...
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

:006:

je "gratte, je "gratte"... mais je ne trouve pas de commande bash, qui me permet de savoir, ou pas... si le matériel, ici un dd, est monté ou pas...

Si vous avez une info sur la vérification "montage", j'suis preneur :wink:

D'avance, MERCI :icon_biggrin:
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

Bonjour

Code : Tout sélectionner

...
mountpoint /media/bernard/Sauv1To-a >/dev/null || { echo "Attention, Sauv1To-a 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

:006:
MicP a écrit : 11 sept. 2017, 18:50 Bonjour

Code : Tout sélectionner

...
mountpoint /media/bernard/Sauv1To-a >/dev/null 2>&1 || { echo "Attention, Sauv1To-a absent"; exit; }
...
.
Merci MicP je vais tester :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

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
…
Répondre