IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Shell et commandes GNU Discussion :

Script de sauvegarde que je souhaite faire évoluer


Sujet :

Shell et commandes GNU

  1. #1
    Invité
    Invité(e)
    Par défaut Script de sauvegarde que je souhaite faire évoluer
    Bonjour à Toutes et Tous

    J'ai un script en bash, pour mes sauvegardes, que je souhaite faire évoluer, si cela est possible, et "facile" pour moi...

    le voici :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    #!/bin/bash
    #
    # Ce script permet de faire une sauvegarde incrémentale manuelle avec "rsync"
    #
    # 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 "Exécuter la sauvegarde SovTotale-1 ? [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 "==============================================\n Abandon sauvegarde à  : $Heure le $Date\n ==============================================";
    	 echo -e $STNDT "Sortie Sauvegarde SovTotale-1"; exit; } 
    #
    then
        echo -e $VERT "===============================================\n Lancement sauvegarde SovTotale-1 à : $Heure le $Date\n ==============================================="
     
    # pour donner un nom "raccourci" (incluant le chemin) au fichier backuperror.log :
    backup=/home/user/bin/Sauvegardes/backuperrorSovTotale-1-a.log
     
    # à 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.
     
    #SSD32Go
    	echo -e $ROUGE "============================================\n      Synchronisation en cours sur SSD32Go\n ============================================"
    rsync --archive --partial --progress --delete-during --stats /home/user/.thunderbird /media/user/SSD32Go/ 2>> $backup
     
    #DD1To
    	echo -e $ROSE "============================================\n      Synchronisation en cours sur DD1To\n ============================================"
    rsync --archive --partial --progress --delete-during --stats /home /media/user/Sauv1To-a/SauvDdPrincipal1/ 2>> $backup
     
    #SSHD500-1
    	echo -e $VERT "==============================================\n     Synchronisation en cours sur SSHD500-1\n =============================================="
    rsync --archive --partial --progress --delete-during --stats --exclude="/media" --exclude="/proc" --exclude="/sys" / /media/user/SSHD500-1/ 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 $VERT "===============================================\n Sauvegarde SovTotale-1 terminée à  : $Heure le $Date\n ==============================================="
    else
    	echo -e $ROUGE "==============================================\n Procédure Sauvegarde SovTotale-1 interrompue par l'utilisateur à  : $Heure le $Date\n =============================================="
    fi
    	echo -e $STNDT
    # ---- fin du script ----
    J'y ai laissé les commentaires, puisque je suis loin d'être un pratiquant assidu... :o

    Quels sont les soucis avec ce script ?
    + premier souci, dans le cas où, je déconnecte un support de sauvegarde, rien dans le script, ne m'avertit qu'il est manquant... mais le plus "gênant" c'est qu'il sauvegarde tout de même, sur le support principal, et le sature... (

    + second souci, si j'indique un autre fichier, que backuperrorSovTotale-1-a.log, rien ne s'inscrit dedans... pour quelle raison... ???
    celui que j'ai tenté de créer, en l'ouvrant, il m'est indiqué : "le document n'était pas en UTF-8 valide" , là aussi, cela m'est incompréhensible...

    mais à force de contourner les "blocages" comme ceux là, je suppose qu'un jour ou l'autre, ça se bloquera vraiment... :o

    Merci de votre aide
    Dernière modification par LittleWhite ; 18/04/2018 à 10h13. Motif: Titre précis

  2. #2
    Expert confirmé Avatar de Flodelarab
    Homme Profil pro
    Inscrit en
    Septembre 2005
    Messages
    5 308
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Charente (Poitou Charente)

    Informations forums :
    Inscription : Septembre 2005
    Messages : 5 308
    Par défaut
    Bonjour

    + second souci, si j'indique un autre fichier, que backuperrorSovTotale-1-a.log, rien ne s'inscrit dedans... pour quelle raison... ???
    Comme tu ne protèges jamais $backup par des double quotes, ( "$backup" ), n'aurais-tu pas mis un espace dans ton nouveau nom de fichier ?
    Il a écrit, mais pas dans le nom de fichier attendu.

  3. #3
    Invité
    Invité(e)
    Par défaut


    Comment ça jamais... ayé, j'ai vu où... et je corrige

    le nom du fichier était :
    backuperrorSovTotale-1.log

    je l'ai gardé, car je souhaitais l'exploiter "plus tard"...

    Tu indiques qu'il faut protéger $backup par des doubles croches, comme ceci :

    "$backup"=/home/user/bin/Sauvegardes/backuperrorSovTotale-1-a.log
    ?

    Merci de ton aide
    Dernière modification par al1_24 ; 17/04/2018 à 19h00. Motif: Citation superflue

  4. #4
    Invité
    Invité(e)
    Par défaut
    il y a une erreur ligne 20 : un echo n'étant jamais faux, la clause else ne sera jamais effectuée.

  5. #5
    Expert confirmé Avatar de Flodelarab
    Homme Profil pro
    Inscrit en
    Septembre 2005
    Messages
    5 308
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Charente (Poitou Charente)

    Informations forums :
    Inscription : Septembre 2005
    Messages : 5 308
    Par défaut
    Tiens. En parlant de la ligne 20 : répondre "non" est interprété comme un "oui".


  6. #6
    Invité
    Invité(e)
    Par défaut
    oui, c'est tout à fait qu'est-ce que je dis.

  7. #7
    Invité
    Invité(e)
    Par défaut
    Ah...

    je ne comprends pas la raison pour laquelle cela ne fonctionne pas chez vous, car chez moi, voici la réponse :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    # /home/bernard/MesScripts/SovTotale-1
     Exécuter la sauvegarde SovTotale-1 ? [o/N]
     ==============================================
     Abandon sauvegarde à  : 19:20:17 le 17-04-2018
     ==============================================
     Sortie Sauvegarde SovTotale-1
    #
    Sinon, de quelle manière puis-je corriger cette "faute" ?

  8. #8
    Invité
    Invité(e)
    Par défaut
    pour la ligne 20, la condition est yYoO, sans nN...

    est-ce "régulier", "respectueux" de bash, ou pas d'avoir oublié la seconde condition... ?

    bon, je vois que c'est loin d'être du "bon" script bash...

    merci de m'aider à rendre ce script plus "élégant" et plus respectueux de bash...

  9. #9
    Invité
    Invité(e)
    Par défaut
    Citation Envoyé par dev871 Voir le message
    pour la ligne 20, la condition est yYoO, sans nN...

    est-ce "régulier", "respectueux" de bash, ou pas d'avoir oublié la seconde condition... ?
    pas de problème. c'est
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    si commande (sous-entendu, la commande ne produit pas d'erreur)
    alors
       vrai
    autre
       faux
    finSi
    dans ton code, tu fais
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    si commande OU commande_toujours_vraie
    alors
       vrai
    autre
       faux
    finSi
    étant donné que commande_toujours_vraie est ... toujours vraie, tu n'accèdes jamais à autre.

    le code que tu testes est-il le même que celui que tu as posté ?
    Dernière modification par Invité ; 17/04/2018 à 21h52.

  10. #10
    Invité
    Invité(e)
    Par défaut
    Citation Envoyé par N_BaH Voir le message
    ...
    le code que tu testes est-il le même que celui que tu as posté ?
    je n'ai supprimé que des supports supplémentaires (4 indiqués dans ma signature... ) et remplacé l'utilisateur par user.

    autrement tout le reste est identique !

  11. #11
    Invité
    Invité(e)
    Par défaut
    code rectifié pour $backup

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    #!/bin/bash
    #
    # Ce script permet de faire une sauvegarde incrémentale manuelle avec "rsync"
    #
    # 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 "Exécuter la sauvegarde SovTotale-1 ? [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 "==============================================\n Abandon sauvegarde à  : $Heure le $Date\n ==============================================";
    	 echo -e $STNDT "Sortie Sauvegarde SovTotale-1"; exit; } 
    #
    then
        echo -e $VERT "===============================================\n Lancement sauvegarde SovTotale-1 à : $Heure le $Date\n ==============================================="
     
    # pour donner un nom "raccourci" (incluant le chemin) au fichier backuperror.log :
    backup=/home/user/bin/Sauvegardes/backuperrorSovTotale-1-a.log
     
    # à 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.
     
    #SSD32Go
    	echo -e $ROUGE "============================================\n      Synchronisation en cours sur SSD32Go\n ============================================"
    rsync --archive --partial --progress --delete-during --stats /home/user/.thunderbird /media/user/SSD32Go/ 2>> "$backup"
     
    #DD1To
    	echo -e $ROSE "============================================\n      Synchronisation en cours sur DD1To\n ============================================"
    rsync --archive --partial --progress --delete-during --stats /home /media/user/Sauv1To-a/SauvDdPrincipal1/ 2>> "$backup"
     
    #SSHD500-1
    	echo -e $VERT "==============================================\n     Synchronisation en cours sur SSHD500-1\n =============================================="
    rsync --archive --partial --progress --delete-during --stats --exclude="/media" --exclude="/proc" --exclude="/sys" / /media/user/SSHD500-1/ 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 $VERT "===============================================\n Sauvegarde SovTotale-1 terminée à  : $Heure le $Date\n ==============================================="
    else
    	echo -e $ROUGE "==============================================\n Procédure Sauvegarde SovTotale-1 interrompue par l'utilisateur à  : $Heure le $Date\n =============================================="
    fi
    	echo -e $STNDT
    # ---- fin du script ----
    les "$backup" rectifiés sur le script original, sont-ils correctement placés ?

  12. #12
    Expert confirmé Avatar de Flodelarab
    Homme Profil pro
    Inscrit en
    Septembre 2005
    Messages
    5 308
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Charente (Poitou Charente)

    Informations forums :
    Inscription : Septembre 2005
    Messages : 5 308
    Par défaut
    Donc, tu confirmes que tu ne vois jamais le message "Procédure Sauvegarde SovTotale-1 interrompue par l'utilisateur", même si tu appuies sur "n".

    D'ailleurs je ne comprends pas l'idée de mettre l'affichage de l'abandon de la sauvegarde dans la condition du "if".

  13. #13
    Invité
    Invité(e)
    Par défaut
    Citation Envoyé par Flodelarab Voir le message
    Donc, tu confirmes que tu ne vois jamais le message "Procédure Sauvegarde SovTotale-1 interrompue par l'utilisateur", même si tu appuies sur "n"...
    C'est exactement le contraire que j'ai indiqué au commentaire #7 donc, j'infirme !

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    # /home/bernard/MesScripts/SovTotale-1
     Exécuter la sauvegarde SovTotale-1 ? [o/N]
     ==============================================
     Abandon sauvegarde à  : 19:20:17 le 17-04-2018
     ==============================================
     Sortie Sauvegarde SovTotale-1
    #
    je "vois" que le n ou N est invisible lorsque je l'inscris...
    c'est ce qui t'a peut-être trompé...


    Citation Envoyé par Flodelarab Voir le message
    ...D'ailleurs je ne comprends pas l'idée de mettre l'affichage de l'abandon de la sauvegarde dans la condition du "if".
    Comment la verrais-tu ?

    j'suis là pour rendre plus "propre" ce script, que j'utilise depuis plusieurs années...

  14. #14
    Expert confirmé
    Homme Profil pro
    Développeur informatique en retraite
    Inscrit en
    Avril 2008
    Messages
    2 103
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Côtes d'Armor (Bretagne)

    Informations professionnelles :
    Activité : Développeur informatique en retraite

    Informations forums :
    Inscription : Avril 2008
    Messages : 2 103
    Par défaut
    Citation Envoyé par dev871 Voir le message
    C'est exactement le contraire que j'ai indiqué au commentaire #7 donc, j'infirme !

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    # /home/bernard/MesScripts/SovTotale-1
     Exécuter la sauvegarde SovTotale-1 ? [o/N]
     ==============================================
     Abandon sauvegarde à  : 19:20:17 le 17-04-2018
     ==============================================
     Sortie Sauvegarde SovTotale-1
    #
    Non non non! Ce qu'on te dit, c'est que ton code ne passe jamais dans la clause "else" (ligne 61) du 1er "if" (ligne 20) et que donc le message de la ligne 62 n'est jamais affiché: Procédure Sauvegarde SovTotale-1 interrompue par l'utilisateur.

    [Petite remarque à 2 sous]

    Je ne sais pas ce qu'il en est pour les professionnels, mais moi, j'ai beaucoup de mal à lire un script dont l'indentation est, comment dire, aléatoire...

    Citation Envoyé par dev871 Voir le message
    Citation Envoyé par Flodelarab
    ...D'ailleurs je ne comprends pas l'idée de mettre l'affichage de l'abandon de la sauvegarde dans la condition du "if".
    Comment la verrais-tu ?
    Ben justement, en la mettant dans le "else" et non dans le "if". Ce serait plus propre !

  15. #15
    Expert confirmé Avatar de Flodelarab
    Homme Profil pro
    Inscrit en
    Septembre 2005
    Messages
    5 308
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Charente (Poitou Charente)

    Informations forums :
    Inscription : Septembre 2005
    Messages : 5 308
    Par défaut
    Citation Envoyé par dev871 Voir le message
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    # /home/bernard/MesScripts/SovTotale-1
     Exécuter la sauvegarde SovTotale-1 ? [o/N]
     ==============================================
     Abandon sauvegarde à  : 19:20:17 le 17-04-2018
     ==============================================
     Sortie Sauvegarde SovTotale-1
    #
    Comme tu as tout mélangé, tu ne fais même plus la différence entre "Abandon sauvegarde à" et "Procédure Sauvegarde SovTotale-1 interrompue par l'utilisateur à".

  16. #16
    Expert confirmé Avatar de disedorgue
    Homme Profil pro
    Ingénieur intégration
    Inscrit en
    Décembre 2012
    Messages
    4 430
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Ingénieur intégration
    Secteur : High Tech - Opérateur de télécommunications

    Informations forums :
    Inscription : Décembre 2012
    Messages : 4 430
    Par défaut
    Bonjour,

    Personnellement, je passerais la partie "ou" ( || ) dans le else et la partie qui est dans le else je la mettrais dans un trap.

  17. #17
    Invité
    Invité(e)
    Par défaut
    Citation Envoyé par jack-ft Voir le message
    Non non non! Ce qu'on te dit, c'est que ton code ne passe jamais dans la clause "else" (ligne 61) du 1er "if" (ligne 20) et que donc le message de la ligne 62 n'est jamais affiché: Procédure Sauvegarde SovTotale-1 interrompue par l'utilisateur.
    Oups... c'est exact !

    Citation Envoyé par jack-ft Voir le message
    ...
    Ben justement, en la mettant dans le "else" et non dans le "if". Ce serait plus propre !
    Je regarde à nouveau, et re-propose la modif !


    +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++


    Citation Envoyé par Flodelarab Voir le message
    Comme tu as tout mélangé, tu ne fais même plus la différence entre "Abandon sauvegarde à" et "Procédure Sauvegarde SovTotale-1 interrompue par l'utilisateur à".
    Tu as raison... !
    alors qu'au début, j'avais "procédure... "
    j'ai incorporé des lignes qui auraient dû être mieux situées...


    +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++


    Citation Envoyé par disedorgue Voir le message
    Bonjour,

    Personnellement, je passerais la partie "ou" ( || ) dans le else et la partie qui est dans le else je la mettrais dans un trap.
    Merci de préciser la partie "ou"

    je méconnais totalement trap... donc, avant de l'utiliser, je vais chercher comment l'utiliser...

  18. #18
    Expert confirmé
    Homme Profil pro
    Développeur informatique en retraite
    Inscrit en
    Avril 2008
    Messages
    2 103
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Côtes d'Armor (Bretagne)

    Informations professionnelles :
    Activité : Développeur informatique en retraite

    Informations forums :
    Inscription : Avril 2008
    Messages : 2 103
    Par défaut
    En fait, le code (s'il était bien indenté) est relativement simple.

    Normalement tu devrais supprimer le || du if et déplacer les lignes 21 et 22 dans le else.

    Citation Envoyé par dev871 Voir le message
    je méconnais totalement trap... donc, avant de l'utiliser, je vais chercher comment l'utiliser...
    Le problème qui reste (pour améliorer la robustesse) c'est la décision à prendre si l'un des rsync, pour une raison quelconque, n'arrive pas à faire son boulot.

    Pour cela, il y a plusieurs possibilités:
    • regarder dans les traces (puisque tu sauves les messages émis sur la stderr (avec les 2>>)).
    • tester le retour des rsync:
      Code : Sélectionner tout - Visualiser dans une fenêtre à part
      1
      2
      3
      if ! rsync --archive --partial --progress --delete-during --stats /home/user/.thunderbird /media/user/SSD32Go/ 2>> "$backup"
      then echo "y a un pb"
      fi
      ou bien
      Code : Sélectionner tout - Visualiser dans une fenêtre à part
      1
      2
      rsync --archive --partial --progress --delete-during --stats /home/user/.thunderbird /media/user/SSD32Go/ 2>> "$backup"
      if [ $? -ne 0 ]; then echo "y a un pb"; fi
    • utiliser un trap (voir avec un vrai spécialiste...)

  19. #19
    Invité
    Invité(e)
    Par défaut
    Citation Envoyé par jack-ft Voir le message
    En fait, le code (s'il était bien indenté) est relativement simple.

    Normalement tu devrais supprimer le || du if et déplacer les lignes 21 et 22 dans le else.
    j'ai fait, et voici le résultat pour un "n" puis un "N" :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    # /home/bernard/MesScripts/20110521-ScriptOriginal/sauvegarde-a-modifiee.sh
     Exécuter la sauvegarde SovTotale-1 ? [o/N]
     ==============================================
     Procédure Sauvegarde SovTotale-1 interrompue par l'utilisateur à  : 19:01:20 le 18-04-2018
     ==============================================
     ==============================================
     Abandon sauvegarde à  : 19:01:20 le 18-04-2018
     ==============================================
     Sortie Sauvegarde SovTotale-1
    # 
    # /home/bernard/MesScripts/20110521-ScriptOriginal/sauvegarde-a-modifiee.sh
     Exécuter la sauvegarde SovTotale-1 ? [o/N]
     ==============================================
     Procédure Sauvegarde SovTotale-1 interrompue par l'utilisateur à  : 19:01:46 le 18-04-2018
     ==============================================
     ==============================================
     Abandon sauvegarde à  : 19:01:46 le 18-04-2018
     ==============================================
     Sortie Sauvegarde SovTotale-1
    #
    c'est identique !


    Pour le reste des suggestions, je vais tester...

    mais, en déplaçant les lignes 21 et 22, j'ai un abandon de trop...
    les supprimer, serait judicieux ou pas ?


    voici le script que j'ai modifié et allégé en support de sauvegarde :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    #!/bin/bash
    #
    # Ce script permet de faire une sauvegarde incrémentale manuelle avec "rsync"
    #
    # 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 "Exécuter la sauvegarde SovTotale-1 ? [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)
    	then
        echo -e $VERT "===============================================\n Lancement sauvegarde SovTotale-1 à : $Heure le $Date\n ==============================================="
     
    # pour donner un nom "raccourci" (incluant le chemin) au fichier backuperror.log :
    backup=/home/user/bin/Sauvegardes/backuperrorSovTotale-1-a.log
     
    # à 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.
     
    #SSD32Go
    	echo -e $ROUGE "============================================\n      Synchronisation en cours sur SSD32Go\n ============================================"
    rsync --archive --partial --progress --delete-during --stats /home/user/.thunderbird /media/user/SSD32Go/ 2>> "$backup"
     
    #SSHD500-1
    	echo -e $VERT "==============================================\n     Synchronisation en cours sur SSHD500-1\n =============================================="
    rsync --archive --partial --progress --delete-during --stats --exclude="/media" --exclude="/proc" --exclude="/sys" / /media/user/SSHD500-1/ 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 $VERT "===============================================\n Sauvegarde SovTotale-1 terminée à  : $Heure le $Date\n ==============================================="
    else
    	echo -e $ROUGE "==============================================\n Procédure Sauvegarde SovTotale-1 interrompue par l'utilisateur à  : $Heure le $Date\n =============================================="
       { echo -e $ROUGE "==============================================\n Abandon sauvegarde à  : $Heure le $Date\n ==============================================";
    	 echo -e $STNDT "Sortie Sauvegarde SovTotale-1"; exit; } 
    fi
    	echo -e $STNDT
    # ---- fin du script ----
    Et toujours Merci pour votre aide

  20. #20
    Invité
    Invité(e)
    Par défaut
    les accolades sont inutiles : elles servent à grouper des commandes.
    quand il n'y en a qu'une, ça sert à rien.
    dans une structure if then ... else fi, elles n'ont pas non plus d'utilité.

Discussions similaires

  1. Réponses: 40
    Dernier message: 12/05/2023, 10h39
  2. Réponses: 3
    Dernier message: 13/12/2017, 17h25
  3. if qui ne fait pas ce que je souhaite faire.
    Par Antoniom dans le forum Débuter avec Java
    Réponses: 3
    Dernier message: 10/12/2010, 12h04
  4. Que choisir pour faire un Client/Serveur
    Par Crayon dans le forum Composants VCL
    Réponses: 5
    Dernier message: 10/04/2005, 17h43

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo