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, donnez vos avis pour l'optimiser SVP !


Sujet :

Shell et commandes GNU

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti 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
    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.

  2. #2
    Expert confirmé
    Avatar de becket
    Profil pro
    Informaticien multitâches
    Inscrit en
    Février 2005
    Messages
    2 854
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

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

    Informations forums :
    Inscription : Février 2005
    Messages : 2 854
    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
    Membre averti 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
    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 }'`

  4. #4
    Expert confirmé
    Avatar de becket
    Profil pro
    Informaticien multitâches
    Inscrit en
    Février 2005
    Messages
    2 854
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

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

    Informations forums :
    Inscription : Février 2005
    Messages : 2 854
    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
    Membre averti 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
    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 ?

  6. #6
    Membre Expert
    Avatar de transgohan
    Homme Profil pro
    Développeur Temps réel Embarqué
    Inscrit en
    Janvier 2011
    Messages
    3 149
    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 : 3 149
    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


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, 21h14
  2. Vos avis pour mon formulaire, svp !
    Par parfait radin dans le forum Mon site
    Réponses: 8
    Dernier message: 17/08/2011, 14h06
  3. Réponses: 5
    Dernier message: 21/03/2007, 14h21
  4. Réponses: 14
    Dernier message: 23/08/2006, 10h32

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