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

  1. #1
    Nouveau membre du Club Avatar de Louinux
    Homme Profil pro
    Ganil, Cyceron
    Inscrit en
    décembre 2018
    Messages
    52
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Calvados (Basse Normandie)

    Informations professionnelles :
    Activité : Ganil, Cyceron
    Secteur : High Tech - Matériel informatique

    Informations forums :
    Inscription : décembre 2018
    Messages : 52
    Points : 32
    Points
    32

    Par défaut Script, donnez vos avis pour l'optimiser SVP !

    Bonjour, voici un script que j'ai réaliser. Celui-ci exécute un backup d'un serveur à un autre avec la commande rsync (rsync -OPTION /source /destination) :

    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
    #!/bin/sh
    #
    #
    volumes=$(cut -d' ' /etc/auto.netapp -f1)
     
            if ! mount | grep /dev/vd
            then    echo "WARNING !! DELL storage not mounted !"; exit
            fi
     
            #if pgrep -x "rsync" > /dev/null
            #then    echo "rsync is running, exit"; exit
            #else    echo "rsync is not running."
            #fi
     
    #VARS
    test=$1
    if [ $# -eq 0 ] ; then
     
    for vol in $volumes
    do
     
    if [ ! -f "/root/backup_logs/$vol.log" ]; then
     
            ls /netapp/$vol > /dev/null 2>&1
     
            if [ $? -gt 0 ]; then
                    echo $vol non disponible
                    continue
            fi
     
            echo $vol
     
            # to do : évaluer la taille qu'il reste sur la partition
            # premier backup pour ce volume, questionner l'utilisateur sur la partition
            PS3="Sur quel serveur installer la sauvegarde ? "
            select rep in r740disks md1400_1 exit
            do
            case $rep in
            r740disks) break;;
            md1400_1) break;;
            exit) exit;;
            esac
            done
     
            echo $rep > /root/backup_logs/$vol.log
     
            destsize=`df | grep $rep | awk '{ print $4 }'`
            destsizeh=`df -h | grep $rep | awk '{ print $4 }'`
            sourcesize=`df | grep $vol | awk '{ print $3 }'`
            sourcesizeh=`df -h | grep $vol | awk '{ print $3 }'`
            sourcesize2=`df -h | grep $vol | awk '{ print $2 }'`
            echo source : $vol $sourcesizeh/$sourcesize2 "|" destination : $rep $destsizeh
            if [ $sourcesize -gt $destsize ]
            then echo "Destination trop petite !" exit;
            fi
            source="/netapp/$vol"
            dest="/mnt/$rep/volumes/"
            cmd="rsync -ah -e ssh --exclude=.snapshot $source $dest 2>> /root/backup_logs/$vol.log"
            mail -s "Backup NFS Ganil" nourry@cyceron.fr <<< "La copie s'effectue de $source vers $dest."
            echo $cmd
            eval $cmd
            mail -s "Backup NFS Ganil" nourry@cyceron.fr, louis.menard2006@gmail.com  <<< "La copie de $source vers $dest est terminée !"
            exit
    fi
    done
     
    elif [ "$test" == "schedule" ] ; then
     
    #liste le fichier le plus vieux du répertoire
    old=`ls -t /root/backup_logs/ | tail -1`
    old=${old:0:-4}
    echo Incrémentale de $old
    rep=`sed -n 1p /root/backup_logs/$old.log`
    source="/netapp/$old"
    dest="/mnt/$rep/volumes/"
    echo Destination : $rep
            if [ -d "$dest" ]; then
                    cmd="rsync -ah -e ssh --exclude=.snapshot $source $dest 2>> /root/backup_logs/$old.log"
                    mail -s "Backup NFS Ganil" nourry@cyceron.fr <<< "La copie s'effectue de $source vers $dest"
     
                    echo $cmd
                    eval $cmd
     
                    mail -s "Backup NFS Ganil" nourry@cyceron.fr <<< "La copie de $source vers $dest est terminée !"
            else
                    echo "Le répertoire $dest n'est pas présent, vous allez sortir" exit;
            fi
    fi
    Voila et j'ai aussi un script en powershell qui utilise robocopy.
    Comme je peux optimiser mon script ? Moins de ligne, exécution plus rapide... Vous m'avez compris
    Merci d'avance, CDLT.
    Il faut apprendre, non pas pour l'amour de la connaissance, mais pour se défendre contre le mépris dans lequel le monde tient les ignorants.

    Apprendre sans réfléchir est vain. Réfléchir sans apprendre est dangereux.



    Oh et allez checker pour plein d'amour pour le jeux vidéal : https://www.instant-gaming.com/igr/derisoir/
    Cordialement.

  2. #2
    Membre expert
    Avatar de becket
    Profil pro
    Informaticien multitâches
    Inscrit en
    février 2005
    Messages
    1 676
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations professionnelles :
    Activité : Informaticien multitâches
    Secteur : Service public

    Informations forums :
    Inscription : février 2005
    Messages : 1 676
    Points : 3 536
    Points
    3 536

    Par défaut

    Salut,

    Je trouve que l'enchainement de grep et de awk ne sert à rien

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
     destsize=` df  | awk -v rep=$rep ' $0 ~ rep  { print $4 } '`

  3. #3
    Nouveau membre du Club Avatar de Louinux
    Homme Profil pro
    Ganil, Cyceron
    Inscrit en
    décembre 2018
    Messages
    52
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Calvados (Basse Normandie)

    Informations professionnelles :
    Activité : Ganil, Cyceron
    Secteur : High Tech - Matériel informatique

    Informations forums :
    Inscription : décembre 2018
    Messages : 52
    Points : 32
    Points
    32

    Par défaut

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
     destsize=` df  | awk -v rep=$rep ' $0 ~ rep  { print $4 } '`
    Cette ligne remplace ?? :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    destsize=`df | grep $rep | awk '{ print $4 }'`
            destsizeh=`df -h | grep $rep | awk '{ print $4 }'`
    Il faut apprendre, non pas pour l'amour de la connaissance, mais pour se défendre contre le mépris dans lequel le monde tient les ignorants.

    Apprendre sans réfléchir est vain. Réfléchir sans apprendre est dangereux.



    Oh et allez checker pour plein d'amour pour le jeux vidéal : https://www.instant-gaming.com/igr/derisoir/
    Cordialement.

  4. #4
    Membre expert
    Avatar de becket
    Profil pro
    Informaticien multitâches
    Inscrit en
    février 2005
    Messages
    1 676
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations professionnelles :
    Activité : Informaticien multitâches
    Secteur : Service public

    Informations forums :
    Inscription : février 2005
    Messages : 1 676
    Points : 3 536
    Points
    3 536

    Par défaut

    Ma proposition concerne : destsize=`df | grep $rep | awk '{ print $4 }'`

    Cet argument permet de définir et initialiser une variable dans awk

    Ce bout de code permet de filtrer awk aux ligne ($0) qui correspondent à l'expression rep ( qui vient de la variable que l'on a passé avant )
    Il est évident que le mécanisme peut être réutiliser sur les 4 ( ou plus ) variables

  5. #5
    Nouveau membre du Club Avatar de Louinux
    Homme Profil pro
    Ganil, Cyceron
    Inscrit en
    décembre 2018
    Messages
    52
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Calvados (Basse Normandie)

    Informations professionnelles :
    Activité : Ganil, Cyceron
    Secteur : High Tech - Matériel informatique

    Informations forums :
    Inscription : décembre 2018
    Messages : 52
    Points : 32
    Points
    32

    Par défaut

    Ah d'accord je viens de comprendre. Je vais essayer ça.

    Dans le script en lui même ça va lui apporter quoi ?
    Il faut apprendre, non pas pour l'amour de la connaissance, mais pour se défendre contre le mépris dans lequel le monde tient les ignorants.

    Apprendre sans réfléchir est vain. Réfléchir sans apprendre est dangereux.



    Oh et allez checker pour plein d'amour pour le jeux vidéal : https://www.instant-gaming.com/igr/derisoir/
    Cordialement.

  6. #6
    Expert éminent
    Avatar de transgohan
    Homme Profil pro
    Développeur Temps réel Embarqué
    Inscrit en
    janvier 2011
    Messages
    2 654
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Maine et Loire (Pays de la Loire)

    Informations professionnelles :
    Activité : Développeur Temps réel Embarqué

    Informations forums :
    Inscription : janvier 2011
    Messages : 2 654
    Points : 7 508
    Points
    7 508

    Par défaut

    Dans le script en lui même ça va lui apporter quoi ?
    Qu'est ce qui prend le moins de temps entre :
    - Aller chez un coiffeur puis aller chez un barbier
    - Aller chez un coiffeur-barbier


    « Toujours se souvenir que la majorité des ennuis viennent de l'espace occupé entre la chaise et l'écran de l'ordinateur. »
    « Le watchdog aboie, les tests passent »

  7. #7
    Nouveau membre du Club Avatar de Louinux
    Homme Profil pro
    Ganil, Cyceron
    Inscrit en
    décembre 2018
    Messages
    52
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Calvados (Basse Normandie)

    Informations professionnelles :
    Activité : Ganil, Cyceron
    Secteur : High Tech - Matériel informatique

    Informations forums :
    Inscription : décembre 2018
    Messages : 52
    Points : 32
    Points
    32

    Par défaut

    Très bonne réponse rien à dire de plus

    Si quelqu'un peut ou veut apporter d'autre modif° je les prends avec joies.

    Merci, CDLT
    Il faut apprendre, non pas pour l'amour de la connaissance, mais pour se défendre contre le mépris dans lequel le monde tient les ignorants.

    Apprendre sans réfléchir est vain. Réfléchir sans apprendre est dangereux.



    Oh et allez checker pour plein d'amour pour le jeux vidéal : https://www.instant-gaming.com/igr/derisoir/
    Cordialement.

Discussions similaires

  1. Vos avis pour améliorer mon script
    Par xekkos dans le forum Shell et commandes GNU
    Réponses: 11
    Dernier message: 23/09/2016, 22h14
  2. Vos avis pour mon formulaire, svp !
    Par parfait radin dans le forum Mon site
    Réponses: 8
    Dernier message: 17/08/2011, 15h06
  3. Réponses: 5
    Dernier message: 21/03/2007, 15h21
  4. Réponses: 14
    Dernier message: 23/08/2006, 11h32

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