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. #21
    Invité
    Invité(e)
    Par défaut
    Ok !
    je viens de tester, et avec une seule ligne, ça fonctionne tout aussi bien

    je passe au reste du script... :o ...

  2. #22
    Expert confirmé
    Homme Profil pro
    Développeur informatique en retraite
    Inscrit en
    Avril 2008
    Messages
    2 101
    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 101
    Points : 5 849
    Points
    5 849
    Par défaut
    Citation Envoyé par dev871 Voir le message
    en déplaçant les lignes 21 et 22, j'ai un abandon de trop...
    les supprimer, serait judicieux ou pas ?
    Ben ça, c'est toi qui choisis!

    Effectivement, dans le else, du coup, tu as 3 "echo" suivis d'un "exit" (j'ai légèrement et isofonctionnellement modifié la présentation):
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
        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
    Je ne sais pas si tu comprends bien ce que ça fait...
    Dans le doute: chaque "echo" affiche des informations à celui qui lit.
    A priori, il semble que les 1er et 2ème "echo" soient redondants.
    Tu peux donc supprimer l'une des deux lignes...
    sauf si tu as un autre script qui scrute la sortie de celui-ci et cherche à repérer des lignes contenant "Sauvegarde.*interrompue" ou "Abandon sauvegarde", évidemment!

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


    j'ai déjà modifié et n'ai gardé que la première ligne

    je préfère la redondance en support, que de commande inutile

    bon, je continue l'élagage...

  4. #24
    Invité
    Invité(e)
    Par défaut
    Je reprends mon premier commentaire :
    Citation Envoyé par dev871 Voir le message
    ...
    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
    ces 2 soucis, sont toujours là...

    de quelle manière "propre" puis-je les supprimer ?

  5. #25
    Expert éminent sénior Avatar de disedorgue
    Homme Profil pro
    Ingénieur intégration
    Inscrit en
    Décembre 2012
    Messages
    4 284
    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 284
    Points : 12 739
    Points
    12 739
    Par défaut
    Pour le 1er cas:
    Tes disque dur de sauvegarde sont tous montés (d'après ton script) sur un répertoire qui se trouve dans /media/user/, il faut donc que tu vérifie en amont que ces disques soient bien présents, donc il suffit de vérifier que chaque répertoire de sauvegarde ne soit pas la même source que le répertoire dans lequel il se trouve (ici /media/user) :
    Pour avoir la source d'un répertoire (par exemple celle de /media/user) :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    df --output=source /media/user | tail -1
    et si cette source est identique à celle de /media/user/SSD32Go/ par exemple, alors c'est que ton disque pour SSD32Go n'est pas monté.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    [[ "`df --output=source /media/user/ | tail -1`" != "`df --output=source /media/user/SSD32Go/ | tail -1`" ]] && echo OK
    Cordialement.

  6. #26
    Invité
    Invité(e)
    Par défaut


    Vérifier en amont... la ligne qui précède la commande de sauvegarde, c'est bon, où trop "juste"... ?


    Citation Envoyé par disedorgue Voir le message
    ...
    et si cette source est identique à celle de /media/user/SSD32Go/ par exemple, alors c'est que ton disque pour SSD32Go n'est pas monté.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    [[ "`df --output=source /media/user/ | tail -1`" != "`df --output=source /media/user/SSD32Go/ | tail -1`" ]] && echo OK
    Puisque tous mes supports sont montés sous media, ne devrai-je pas plutôt indiquer :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    [[ "`df --output=source /media/user/SSD32Go/ | tail -1`" != "`df --output=source /media/user/SSD32Go/ | tail -1`" ]] && echo OK
    il indique OK en cas de présence, et en cas d'absence ?

    sinon, si j'évite de préciser SSD32Go, et, puisque les autres supports sont montés, la vérification n'indiquera rien en cas d'absence d'un support... !

    j'ai suivi ou j'suis à l'ouest...

  7. #27
    Expert éminent sénior Avatar de disedorgue
    Homme Profil pro
    Ingénieur intégration
    Inscrit en
    Décembre 2012
    Messages
    4 284
    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 284
    Points : 12 739
    Points
    12 739
    Par défaut
    Juste avant la commande de sauvegarde, c'est bon.

    Pour le reste, tu es selon ton expression, à l'ouest

    Pour comprendre, tu n'as qu'à faire les 2 commandes suivantes et tu verras la différence:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    df --output=source /media/user/ | tail -1
    df --output=source /media/user/SSD32Go/ | tail -1
    ensuite tu retires ton disque SSD32Go et tu refais les 2 commandes
    Cordialement.

  8. #28
    Invité
    Invité(e)
    Par défaut
    j'ai testé les 2 commandes, que j'ai insérées à la ligne 36, du script indiqué #19 et commentées puis décommentées, l'une après l'autre, bien entendu, à moins qu'elles auraient pu fonctionner ensemble...
    le sachant pas, j'ai préféré les activer une à une !


    mais peut-être étaient-elles mal situées pour ce test, car j'ai obtenu avec la première commande :
    df --output=source /media/bernard/ | tail -1

    Exécuter la sauvegarde SovTotale-1 ? [o/N]
    ===============================================
    Lancement sauvegarde SovTotale-1 à : 20:29:30 le 19-04-2018
    ===============================================
    /dev/sda2
    ============================================
    Synchronisation en cours sur SSD32Go
    ...
    puis avec la seconde commande


    df --output=source /media/bernard/SSD32Go/ | tail -1

    Exécuter la sauvegarde SovTotale-1 ? [o/N]
    ===============================================
    Lancement sauvegarde SovTotale-1 à : 20:31:48 le 19-04-2018
    ===============================================
    /dev/sde1
    ============================================
    Synchronisation en cours sur SSD32Go
    ...
    C'est la seconde qui est juste, car le ssd32Go est bien en sde1 !

    par contre, j'ai déconnecté le ssd puis relancé... bouh... il tente d'écrire... heureusement que Ctrl+C l'arrête bien...
    mais il va falloir que je nettoie /media/SSD32Go... car le ssd s'y est créé...

    aurai-je dû apercevoir d'autres éléments ?

  9. #29
    Expert éminent sénior Avatar de disedorgue
    Homme Profil pro
    Ingénieur intégration
    Inscrit en
    Décembre 2012
    Messages
    4 284
    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 284
    Points : 12 739
    Points
    12 739
    Par défaut
    Non !!!
    Les deux commandes étaient à faire dans un terminal pas dans ton script, pour te faire comprendre la différence entre les 2 commandes.

    dans ton script, tu dois utiliser un if pour savoir si tu peux lancer le rsync:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    if [[ "`df --output=source /media/user/ | tail -1`" != "`df --output=source /media/user/SSD32Go/ | tail -1`" ]]
    then
        rsync .........
    else 
        blabla ....
    fi
    La partie else est facultative, à toi de voir, c'est la partie en cas de problème.

    Sinon, le [[ .... ]] vérifie que la chaine résultat du premier df n'est pas la même que le deuxième df, si on a le même, c'est que le disque n'est pas monté.
    Cordialement.

  10. #30
    Invité
    Invité(e)
    Par défaut
    ok !

    voici le résultat des 2 commandes en console :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
     
    # df --output=source /media/bernard/ | tail -1
    /dev/sda2
    # 
    # df --output=source /media/bernard/SSD32Go/ | tail -1
    /dev/sde1
    #
    la première m'indique ma partition principale, et la seconde, m'indique la "bonne" partition, qui est en sde1 !

    je teste la ligne que tu m'indiques, dans le script de test !

  11. #31
    Invité
    Invité(e)
    Par défaut

    je viens de tester, et ça fonctionne nickel !

    cependant, après avoir activé le second support, même si le 1er support est absent, le script continue à lire... et effectue la sauvegarde...

    toutefois, comme j'ai 5 supports... y aurait-il une manière de tester leur présence au lancement de la sauvegarde, et me donner la main le cas échéant, soit pour continuer, soit pour connecter le support manquant ?

    je pensais faire de la même manière que le début du script, lorsqu'il interroge sur le vouloir faire la sauvegarde, mais là ce serait...

    la nuit portant "conseil", je vais prendre "conseil"...

    En attendant, Merci pour l'avancement dans l'amélioration

  12. #32
    Invité
    Invité(e)
    Par défaut


    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    if [[ "`df --output=source /media/user/ | tail -1`" != "`df --output=source /media/user/SSD32Go/ | tail -1`" ]]
    # vérifie que la chaine résultat du premier df est différente du deuxième df, si identique = support absent
    then
    	echo -e $ROUGE " Synchronisation en cours sur SSD32Go\n"
    rsync --archive --partial --progress --delete-during --stats /home/user/.thunderbird /media/user/SSD32Go/ 2>> "$backup"
    else echo -e $ROUGE "\n !!! support SSD32Go absent !!!\n"; fi
    if [ $? -ne 0 ]; then echo "y a un pb sur support SSD32Go"; fi # vérification du résultat de la sauvegarde, dans le backup :
    pour la dernière ligne :
    if [ $? -ne 0 ]; then echo "y a un pb sur support SSD32Go"; fi

    je ne l'ai pas encore testée... difficile de faire une erreur...

    sinon, l'ensemble de ces commandes est-il correct ?

    si oui, je l'adapte pour les autres supports... !

    cependant, il reste encore une "chose" qui me chiffonne...
    en cas d'absence du support, comment faire pour reprendre la main, via une question "support SSD32Go à connecter : oui/non ?"
    "oui" = connexion ssd, puis reprise du script pour lancer la sauvegarde sur SSD32Go !
    "non" continuer le script pour les autres supports présents !

    le fait d'imbriquer plusieurs if, then, etc... peut-il nuire, ou pas, au bon fonctionnement du script ?

  13. #33
    Invité
    Invité(e)
    Par défaut
    Citation Envoyé par dev871 Voir le message

    ...
    pour la dernière ligne :
    if [ $? -ne 0 ]; then echo "y a un pb sur support SSD32Go"; fi

    ...

    je viens de la tester... et elle fonctionne

    mais... entre les dernières lignes de :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    if [[ "`df --output=source /media/bernard/ | tail -1`" != "`df --output=source /media/bernard/SSD32Go/ | tail -1`" ]]
    # vérifie que la chaine, résultat du premier df, est différente du deuxième df, si identique = support absent
    then
    	echo -e $ROUGE "\n\n ====================================\n Synchronisation en cours sur SSD32Go\n ====================================\n"
    rsync --archive --partial --progress --delete-during --stats /home/bernard/.thunderbird /media/bernard/SSD32Go/ 2>> "$backup"
    else echo -e $ROUGE "\n !!! support SSD32Go absent !!!\n"; fi
    if [ $? -ne 0 ]; then echo "y a un pb sur support SSD32Go"; fi # vérification du résultat de la sauvegarde, dans le backup :
    donc, entre la ligne 6 et 7, comment insérer : "connecter, ou pas, le support = o / n"

    merci de vos retours
    sinon, bonne fin de semaine Ensoleillée

  14. #34
    Invité
    Invité(e)
    Par défaut


    Pas d'idée ?

  15. #35
    Expert confirmé
    Homme Profil pro
    Développeur informatique en retraite
    Inscrit en
    Avril 2008
    Messages
    2 101
    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 101
    Points : 5 849
    Points
    5 849
    Par défaut
    Citation Envoyé par dev871 Voir le message
    je viens de la tester... et elle fonctionne

    mais... entre les dernières lignes de :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    if [[ "`df --output=source /media/bernard/ | tail -1`" != "`df --output=source /media/bernard/SSD32Go/ | tail -1`" ]]
    # vérifie que la chaine, résultat du premier df, est différente du deuxième df, si identique = support absent
    then
    	echo -e $ROUGE "\n\n ====================================\n Synchronisation en cours sur SSD32Go\n ====================================\n"
    rsync --archive --partial --progress --delete-during --stats /home/bernard/.thunderbird /media/bernard/SSD32Go/ 2>> "$backup"
    else echo -e $ROUGE "\n !!! support SSD32Go absent !!!\n"; fi
    if [ $? -ne 0 ]; then echo "y a un pb sur support SSD32Go"; fi # vérification du résultat de la sauvegarde, dans le backup :
    donc, entre la ligne 6 et 7, comment insérer : "connecter, ou pas, le support = o / n"

    merci de vos retours
    sinon, bonne fin de semaine Ensoleillée
    Attention au piège classique! La variable $? est la valeur du retour de la dernière commande exécutée.
    Pour faciliter l'évolution d'un script ainsi que son débogage, il est très fortement recommandé de stocker son contenu dans une variable personnelle, ce qui donne (simple adaptation de ton script):
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    if [[ "`df --output=source /media/bernard/ | tail -1`" != "`df --output=source /media/bernard/SSD32Go/ | tail -1`" ]]
    # vérifie que la chaine, résultat du premier df, est différente du deuxième df, si identique = support absent
    then
    	echo -e $ROUGE "\n\n ====================================\n Synchronisation en cours sur SSD32Go\n ====================================\n"
        rsync --archive --partial --progress --delete-during --stats /home/bernard/.thunderbird /media/bernard/SSD32Go/ 2>> "$backup"; retour_rsync=$?
        # Ici, on peut par exemple afficher sa valeur:
        echo "rsync a retourné ${retour_rsync}"
    else echo -e $ROUGE "\n !!! support SSD32Go absent !!!\n"
    fi
    # ici on peut tester sa valeur:
    if [ ${retour_rsync} -ne 0 ]; then echo "y a un pb sur support SSD32Go"; fi # vérification du résultat de la sauvegarde, dans le backup :
    Mais on voit qu'il y a un bug. En effet, si on passe dans le "else" (ligne 8), du coup, la variable "retour_rsync" n'est pas définie alors qu'elle sera utilisée en ligne 10!

    Il vaudrait donc mieux faire le test au bon endroit!

    Dans un de mes posts, j'avais proposé de tester le retour de "rsync". Tu peux donc faire, soit:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    if [[ "`df --output=source /media/bernard/ | tail -1`" != "`df --output=source /media/bernard/SSD32Go/ | tail -1`" ]]
    # vérifie que la chaine, résultat du premier df, est différente du deuxième df, si identique = support absent
    then
    	echo -e $ROUGE "\n\n ====================================\n Synchronisation en cours sur SSD32Go\n ====================================\n"
        rsync --archive --partial --progress --delete-during --stats /home/bernard/.thunderbird /media/bernard/SSD32Go/ 2>> "$backup"; retour_rsync=$?
        # Ici, on peut par exemple afficher sa valeur:
        echo "rsync a retourné ${retour_rsync}"
        # ici on peut tester sa valeur:
        if [ ${retour_rsync} -ne 0 ]; then echo "y a un pb sur support SSD32Go"; fi # vérification du résultat de la sauvegarde, dans le backup :
    else echo -e $ROUGE "\n !!! support SSD32Go absent !!!\n"
    fi
    Soit:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    if [[ "`df --output=source /media/bernard/ | tail -1`" != "`df --output=source /media/bernard/SSD32Go/ | tail -1`" ]]
    # vérifie que la chaine, résultat du premier df, est différente du deuxième df, si identique = support absent
    then
    	echo -e $ROUGE "\n\n ====================================\n Synchronisation en cours sur SSD32Go\n ====================================\n"
        if ! rsync --archive --partial --progress --delete-during --stats /home/bernard/.thunderbird /media/bernard/SSD32Go/ 2>> "$backup"
        then
            echo "y a un pb sur support SSD32Go"
        fi # vérification du résultat de la sauvegarde, dans le backup :
    else echo -e $ROUGE "\n !!! support SSD32Go absent !!!\n"
    fi
    Ça, c'était pour le cas où "rsync" n'arrive pas à faire son boulot.

    Mais j'ai l'impression que ta question concerne le "else" du test (insérer entre les lignes 6 et 7).

    Dans ce cas, il suffit de ne pas mettre le "fi" sur la même ligne!

    De toute façon et dans tous les cas, il n'est pas recommandé de le mettre sur la même ligne car cela gêne la lecture.
    Àmha, on peut très bien mettre le "; fi" en fin de ligne dans un "petit" cas (où tout tient sur une seule ligne):
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    if <condition>; then <faire_si_ok>; else <faire_si_pas_ok>; fi
    mais il vaut mieux éviter de le mettre lorsque le "then" ou le "else" n'est pas surt la même ligne que le "if":
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    # PAS RECOMMANDÉ:
    if <condition>
    then <faire_si_ok>
    else <faire_si_pas_ok>; fi # <= PAS RECOMMANDÉ
    <instruction_apres_la_fin_du_if>
    Car, en lecture rapide, l'<instruction_apres_la_fin_du_if> semble être DANS le "else" et non après la fin du "if"

    Pour en revenir à tes moutons, lorsque la comparaison des "df" indique qu'il y a un problème, il suffit de faire:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    if [[ "`df --output=source /media/bernard/ | tail -1`" != "`df --output=source /media/bernard/SSD32Go/ | tail -1`" ]]
    # vérifie que la chaine, résultat du premier df, est différente du deuxième df, si identique = support absent
    then
    	echo -e $ROUGE "\n\n ====================================\n Synchronisation en cours sur SSD32Go\n ====================================\n"
        if ! rsync --archive --partial --progress --delete-during --stats /home/bernard/.thunderbird /media/bernard/SSD32Go/ 2>> "$backup"
        then
            echo "y a un pb sur support SSD32Go"
        fi
    else echo -e $ROUGE "\n !!! support SSD32Go absent !!!\n"
    echo "Veuillez connecter le support!" 
    fi
    mais je ne connais pas l'instruction qui permet de connecter le support par programme (je ne sais pas si c'est possible)

    Après, on peut aussi faire une boucle avec "avez-vous connecté le support?". Si réponse "oui", on boucle sur le test pour vérifier si c'est bien vrai, si réponse "non", on quitte.

  16. #36
    Invité
    Invité(e)
    Par défaut

    Citation Envoyé par jack-ft Voir le message
    ...
    Merci pour tes suggestions, que je vais tester, même si j'ai réussi... en galérant... à poser ma "question" dans un nouveau script, mais il fait "lourd" et laborieux...

    je vais tenter d'inclure ces suggestions et indiquerai les scripts, celui que j'ai réalisé tant bien que mal... et celui où j'aurai inséré ces suggestions, si j'y arrive

  17. #37
    Invité
    Invité(e)
    Par défaut
    Me revoilà avec un script, qui est...

    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
    66
    67
    68
    69
    70
    71
    72
    73
    74
    75
    76
    77
    78
    79
    80
    81
    82
    83
    84
    85
    86
    87
    88
    89
    90
    91
    92
    93
    94
    #!/bin/bash
    #
    # Ce script permet de faire une sauvegarde incrémentale manuelle avec "rsync"
    #
    # Variables de couleurs
    BLANC="\\033[0;02m"
    BLANCLAIR="\\033[1;08m" #invisible...
    BLEU="\\033[1;34m"
    CYAN="\\033[1;36m"
    JAUNE="\\033[1;33m"
    ROSE="\\033[1;35m"
    ROUGE="\\033[1;31m"
    STNDT="\\033[0;39m"
    VERT="\\033[1;32m"
     
    Date=$(date +%d-%m-%Y)
    Heure=$(date +%T)
    echo -e $BLEU "Exécuter SOV1 ? [o/N]"; # Pour plus de lisibilité, la réponse par défaut est donnée en majuscule à la suite de la question.
    read -sn1;                             # Inutile 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 ======================\n Lancement sauvegarde à\n $Heure le $Date\n ======================\n"
    		else
    		echo -e $ROUGE "=====================================================================\n Procédure SOV1 interrompue par l'utilisateur à $Heure le $Date\n =====================================================================";
    		echo -e $STNDT "\n Sortie SOV1\n"; exit;
    fi
     
    # pour donner un nom "raccourci" (incluant le chemin) au fichier backuperror.log :
    backup=/home/bernard/bin/Sauvegardes/backuperrorSOV1.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
    if [[ "`df --output=source /media/bernard/ | tail -1`" != "`df --output=source /media/bernard/SSD32Go/ | tail -1`" ]] # vérifie que la chaine, résultat du premier df, est différente du deuxième df, si identique = support absent
    	then echo -e $VERT "\n\n ====================================\n Synchronisation en cours sur SSD32Go\n ====================================\n"
    	rsync --archive --partial --progress --delete-during --stats /home/bernard/.thunderbird /media/bernard/SSD32Go/ 2>> "$backup"; retour_rsync=$?
        echo
        echo -e $STNDT " rsync a retourné ${retour_rsync}"
        echo
    	else echo -e $ROUGE "connectez le support manquant, puis validez par o ? [o/N]"; # support manquant, le connecter ou pas...
    	read -sn1;
    		if [[ $REPLY =~ [yYoO] ]]
    			then	echo -e $VERT "\n ======================\n Lancement sauvegarde à\n $Heure le $Date\n ======================\n" ;
    			echo -e $JAUNE "\n\n ====================================\n Synchronisation en cours sur SSD32Go\n ====================================\n"
    			rsync --archive --partial --progress --delete-during --stats /home/bernard/.thunderbird /media/bernard/SSD32Go/ 2>> "$backup"; retour_rsync=$?
    			else echo -e $ROUGE "\n !!! abandon sauvegarde sur support SSD32Go absent !!!\n";
    		fi
    fi
    #
    if [ ${retour_rsync} -ne 0 ];
    	then echo -e $ROUGE "y a un pb sur support SSD32Go";
    fi
     
    #SSHD500-1
    if [[ "`df --output=source /media/bernard/ | tail -1`" != "`df --output=source /media/bernard/SSHD500-1/ | tail -1`" ]]
    	then echo -e $VERT "\n\n =======================================\n Synchronisation en cours sur SSHD500-1/\n =======================================\n"
    	rsync --archive --partial --progress --delete-during --stats --exclude="/media" --exclude="/proc" --exclude="/sys" / /media/bernard/SSHD500-1/ 2>> "$backup"; retour_rsync=$?
        echo
        echo -e $STNDT " rsync a retourné ${retour_rsync}"
        echo
    	else echo -e $ROUGE "connectez le support manquant, SSHD500-1, puis validez par o ? [o/N]";
    	read -sn1;
    		if [[ $REPLY =~ [yYoO] ]]
    			then	echo -e $VERT "\n ======================\n Lancement sauvegarde à\n $Heure le $Date\n ======================\n" ;
    			echo -e $JAUNE "\n\n ====================================\n Synchronisation en cours sur SSHD500-1/\n ====================================\n"
    			rsync --archive --partial --progress --delete-during --stats --exclude="/media" --exclude="/proc" --exclude="/sys" / /media/bernard/SSHD500-1/ 2>> "$backup"; retour_rsync=$?
    			else echo -e $ROUGE "\n !!! abandon sauvegarde sur support SSHD500-1/ absent !!!\n";
    		fi
    fi
    #
    if [ ${retour_rsync} -ne 0 ];
    	then echo -e $ROUGE"y a un pb sur support SSHD500-1/";
    fi
     
    # 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 terminée à\n $Heure le $Date\n ======================\n"
    fi
    	echo -e $STNDT
    # ---- fin du script ----
    avec son résultat :
    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
    # /home/bernard/MesScripts/SOV1.sh
     Exécuter SOV1 ? [o/N]
     
     ======================
     Lancement sauvegarde à
     17:49:56 le 26-04-2018
     ======================
     
     ====================================
     Synchronisation en cours sur SSD32Go
     ====================================
    ...
    sent 132,610 bytes  received 647 bytes  266,514.00 bytes/sec
    total size is 9,229,139,441  speedup is 69,258.20
     
      rsync a retourné 0
     
     
     
     =======================================
     Synchronisation en cours sur SSHD500-1/
     =======================================
    ...
    sent 12,622,331 bytes  received 33,494 bytes  3,615,950.00 bytes/sec
    total size is 259,844,224,080  speedup is 20,531.59
     
      rsync a retourné 0
     
    /home/bernard/MesScripts/SOV1.sh: ligne 92: erreur de syntaxe près du symbole inattendu « fi »
    /home/bernard/MesScripts/SOV1.sh: ligne 92: `fi'
    #
    Vous voyez de suite une des anomalies... pas de date et heure de fin, car "pâté" sur le script... où je tourne en rond pour solutionner...

    l'autre des anomalies, est aucune inscription sur le backuperrorSOV1.log qui est bien créé, mais reste vide... ???
    normale avec le "2>>" peut-être ?


    mais dans ce cas, pour quelle raison, si je change de fichier, en prenant l'ancien, il va m'inscrire la date/heure de la sauvegarde... ?

    Script testé hier, avec un seul support, connecté, puis déconnecté, et cela a bien fonctionné...
    aujourd'hui, je n'ai pas encore testé la déconnexion d'un des supports...

  18. #38
    Expert éminent sénior Avatar de disedorgue
    Homme Profil pro
    Ingénieur intégration
    Inscrit en
    Décembre 2012
    Messages
    4 284
    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 284
    Points : 12 739
    Points
    12 739
    Par défaut
    Citation Envoyé par dev871 Voir le message
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
    /home/bernard/MesScripts/SOV1.sh: ligne 92: erreur de syntaxe près du symbole inattendu « fi »
    /home/bernard/MesScripts/SOV1.sh: ligne 92: `fi'
    Ton erreur ici est sur la ligne 87:
    Je ne comprend pas ton besoin des accolades ici, mais la syntaxe est:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    { date >> "$backup" ; }
    IL Y A TOUJOURS UN ";" OU UN RETOUR À LA LIGNE AVANT L'ACCOLADE FERMANTE
    Cordialement.

  19. #39
    Modérateur
    Avatar de N_BaH
    Profil pro
    Inscrit en
    Février 2008
    Messages
    7 552
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2008
    Messages : 7 552
    Points : 19 392
    Points
    19 392
    Par défaut
    accolades qui ne servent à rien du tout.
    .
    N'oubliez pas de consulter les cours shell, la FAQ, et les pages man.

  20. #40
    Invité
    Invité(e)
    Par défaut

    Citation Envoyé par disedorgue Voir le message
    Ton erreur ici est sur la ligne 87:
    Je ne comprend pas ton besoin des accolades ici, mais la syntaxe est:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    { date >> "$backup" ; }
    IL Y A TOUJOURS UN ";" OU UN RETOUR À LA LIGNE AVANT L'ACCOLADE FERMANTE
    j'te jure que c'est à l'insu de moi-même, pour les accolades...
    et comme je méconnaissais, et bien... je les ai laissées...

    maintenant que je connais, juste un peu plus, grâce à Vous tous, je serai sans excuse, la prochaine fois

    sinon, possibilité ou pas de les supprimer ?

    pour le retour à la ligne, est-ce bien "\n" ?


    avant que je corrige le script

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