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 :

Problème script shell de sauvegarde


Sujet :

Shell et commandes GNU

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre éprouvé Avatar de julien.63
    Profil pro
    balayeur
    Inscrit en
    Décembre 2005
    Messages
    1 348
    Détails du profil
    Informations personnelles :
    Localisation : France, Savoie (Rhône Alpes)

    Informations professionnelles :
    Activité : balayeur

    Informations forums :
    Inscription : Décembre 2005
    Messages : 1 348
    Par défaut Problème script shell de sauvegarde
    salut,
    j'utilise un script shell pour faire une sauvegarde hebdomadaire de mes bases de donnees.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    #!/bin/sh
     
    USER=*******
    PASS=*******
    DESTINATION=/var/backups
     
    DATE='date +%Y-%m-%d'
    WEEK='date +%W'
    let "DEL=$WEEK-4"
     
    mysqldump -u $USER --password=$PASS bioinformatics | gzip > $DESTINATION/bioinformatics.$WEEK.$DATE.sql.gz
     
    rm -rf $DESTINATION/$DEL.*.sql.gz
    ce script se lance grace a un cron tous les samedis à 3 h du mat:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    0 3 * * 6 /usr/local/bin/backup_database
    mais voici le nom de mon fichier :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    root@STRI-DB01:/var/backups# ls -l
    total 1036
    -rw-r--r--  1 root root       20 Oct 14 03:00 bioinformatics.date +%W.date +%Y-%m-%d.sql.gz
    c'est pas tout a fait ce que je voulais et comme je suis pas un pro du shell , j'aurai besoin d'un petit coup de main !

  2. #2
    Modérateur
    Avatar de ggnore
    Profil pro
    Inscrit en
    Juillet 2004
    Messages
    2 472
    Détails du profil
    Informations personnelles :
    Âge : 46
    Localisation : France

    Informations forums :
    Inscription : Juillet 2004
    Messages : 2 472
    Par défaut
    Pour qu'un variable prenne la valeur d'une commande éxécutée, il faut utiliser les backquotes et non pas les quotes simples.

    Tu as les quotes simples sur la touche 4 :
    4
    '{
    Sur la touche 7 tu as :
    7
    è`
    Donc tu fais [Alt Gr] + [7] et tu auras le caractère qu'il te faut.

    Tu peux aussi consulter cette documentation bash ou cette documentation ksh.

    Par ailleurs dans un script éxécuté via la crontab, il faut que tous tes chemins soient absolus : Cela veut dire que pour date par exemple, tu vas lancer , et mettre le chemin complet de date dans ton script. Il peut être utile de mettre le chemin et la commande dans une variable pour avoir une maintenance de script plus facile.

    Tu devrais peut être considérer la gestion des erreurs dans ton script en utilisant la redirection des erreurs avec la doc bash ou la doc ksh

    Bon courage.
    Toutes les vertus des hommes se perdent dans l’intérêt comme les fleuves se perdent dans la mer.
    N'oubliez pas de consulter les FAQ Linux et les cours et tutoriels Linux

  3. #3
    Membre éprouvé Avatar de julien.63
    Profil pro
    balayeur
    Inscrit en
    Décembre 2005
    Messages
    1 348
    Détails du profil
    Informations personnelles :
    Localisation : France, Savoie (Rhône Alpes)

    Informations professionnelles :
    Activité : balayeur

    Informations forums :
    Inscription : Décembre 2005
    Messages : 1 348
    Par défaut
    J'ai un peu modifié le script, ce n'est pas définitif, mais j'aimerai avoir l'avis de personnes qui s'y connaissent.
    J'avoue ne pas trop savoir comment m'y prendre pour la gestion des erreurs. Je lis la doc mais c'est un peu touffu alors...

    Pensez-vous qu'il y ait une chance pour que ça marche?
    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
    #!/bin/sh
     
    ###################################################################
    ### save the website   ############################################
     
    USER=****
    PASS=****
    DESTINATION=/var/backups
    DATE_CMD=/bin/date
    DATE=`$DATE_CMD +%Y-%m-%d`
    FILENAME=www.$DATE.tar.gz
     
    tar cfvz $FILENAME /var/www/CTFS /var/www/biogeodb /var/www/bold /var/www/css /var/www/maps             
    mv -f /var/www/$FILENAME $DESTINATION       
     
    ###################################################################
    ### FTP transfert #################################################
     
    sftp ******@***.***.***.***
    ********
    cd sql_backup
    binary 
    mput $DESTINATION/$FILENAME

  4. #4
    Modérateur
    Avatar de ggnore
    Profil pro
    Inscrit en
    Juillet 2004
    Messages
    2 472
    Détails du profil
    Informations personnelles :
    Âge : 46
    Localisation : France

    Informations forums :
    Inscription : Juillet 2004
    Messages : 2 472
    Par défaut
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    tar cfvz $FILENAME /var/www/CTFS /var/www/biogeodb /var/www/bold /var/www/css /var/www/maps
    Tu peux mettre le chemin de tar( comme tu l'as fait pour date), les paramètres et même les répertoires cibles dans des variables.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    mv -f /var/www/$FILENAME $DESTINATION
    Même principe

    Il y a très souvent moyen d'éviter d'utiliser cd dans un script. J'ai toujours trouvé que ça n'apportait que des ennuis d'utiliser cd.
    Par ailleurs ça peut aussi valoir le coup de mettre ce répertoire dans une variable

    Si tu mets un maximum de données en variable, ton script sera plus flexible. Tu n'auras qu'à changer tes variables en début de programme, et si par hasard tes chemins ont changé, tu n'as pas à aller chercher dans les fin fonds du script.

    je te conseille la lecture de cet article.
    Tu peux aussi jeter un coup d'oeil à
    .

    Bon courage.
    Toutes les vertus des hommes se perdent dans l’intérêt comme les fleuves se perdent dans la mer.
    N'oubliez pas de consulter les FAQ Linux et les cours et tutoriels Linux

  5. #5
    Membre éprouvé Avatar de julien.63
    Profil pro
    balayeur
    Inscrit en
    Décembre 2005
    Messages
    1 348
    Détails du profil
    Informations personnelles :
    Localisation : France, Savoie (Rhône Alpes)

    Informations professionnelles :
    Activité : balayeur

    Informations forums :
    Inscription : Décembre 2005
    Messages : 1 348
    Par défaut
    merci pour tes réponses et tes liens.

    du coup, pour la gestion des erreurs, vaut-il mieux faire ?
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    tar cfvz $FILENAME $PATH/CTFS $PATH/bioiogeodb $PATH/bold $PATH/css $PATH/maps 1>log_backup_website 2>&1
    ou
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    tar cfvz $FILENAME $PATH/CTFS $PATH/bioiogeodb $PATH/bold $PATH/css $PATH/maps | tee log_backup_website
    Ensuite, je ne vois pas très bien comment remplacer le cd, car la commande mput n'accepte que l'argument local file.

  6. #6
    Membre éprouvé Avatar de julien.63
    Profil pro
    balayeur
    Inscrit en
    Décembre 2005
    Messages
    1 348
    Détails du profil
    Informations personnelles :
    Localisation : France, Savoie (Rhône Alpes)

    Informations professionnelles :
    Activité : balayeur

    Informations forums :
    Inscription : Décembre 2005
    Messages : 1 348
    Par défaut
    je fais des essais mais je dois pas être bien doué car ça ne fonctionne pas vraiment !
    voici mon fichier maintenant.
    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
    #!/bin/sh
    #backup of the bioinformatics website
    #every week (see crontab -e for more details)
     
     
    ###################################################################
    ### save the website   ############################################
    LOG=log_backup_website
    USER=patons
    PASS=******
    DESTINATION=/var/backups
    PATH=/var/www
    DATE_CMD=/bin/date
    DATE=`$DATE_CMD +%Y-%m-%d`
    WEEK=`$DATE_CMD +%W`
    FILENAME=www.$WEEK.$DATE.tar.gz
    let "DEL=$WEEK-4"
     
    tar cfvz $FILENAME $PATH/CTFS $PATH/bioiogeodb $PATH/bold $PATH/css $PATH/maps 1>$LOG 2>&1
    mv -f $PATH/$FILENAME $DESTINATION 1>$LOG 2>&1
     
    ###################################################################
    ### FTP transfert #################################################
     
    sftp webbackup:******@***.***.***.*** 1>$LOG 2>&1
    scp $DESTINATION/$FILENAME webbackup@***.***.***.***:/home/webbackup/website_backup 1>$LOG 2>&1
    exit
     
    ##################################################################
    ### REMOVE OLD FILES ############################################
    rm -rf $DESTINATION/www.$DEL.*.tar.gz 1>$LOG 2>&1
    je l'execute en faisant :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    STRI-DB01:/usr/local/bin# ./backup_website
    ça dure une fraction de seconde, J'ai aucune archive de créée et voici le log:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    ./backup_website: line 27: scp: command not found
    Avant j'utilisais "mput", puis "put" mais j'avais le même message !
    qu'est ce qui cloche selon vous?

Discussions similaires

  1. Script Shell bash pour sauvegarder
    Par lolilol59 dans le forum Shell et commandes GNU
    Réponses: 7
    Dernier message: 17/04/2014, 13h05
  2. Sauvegarde d'une base depuis un script shell
    Par arno974 dans le forum Administration
    Réponses: 3
    Dernier message: 23/09/2011, 08h20
  3. Exécution d'un script shell
    Par Manu0086 dans le forum Linux
    Réponses: 8
    Dernier message: 15/06/2004, 16h31
  4. Explication script shell
    Par crasho007 dans le forum Linux
    Réponses: 2
    Dernier message: 14/06/2004, 13h54
  5. Cron + terminal + script shell
    Par nicolas.pissard dans le forum Linux
    Réponses: 3
    Dernier message: 17/03/2004, 09h24

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