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

Linux Discussion :

Sauvegardes des bdd via bash


Sujet :

Linux

  1. #1
    Scurz
    Invité(e)
    Par défaut Sauvegardes des bdd via bash
    Slt,

    Je suis en train de créer un petit script bash qui va me permettre de faire des sauvegardes régulières via cron en utilisant un script, 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
    #!/bin/sh
    ## Ce script permet d'envoyer des sauvegardes de bases de donnees MySQL
    ## sur un espace FTP.
     
    #######
    ## Creation de l'archive des bases.
    ######
    ## Date de l'archive.
     
    echo 'Creation de l'archive...'
     
    DATE=$(date +%d-%m-%Y-%H-%M) # pour donner une date � chaque sauvegarde
     
    ## Utilisation de mysqldump.
     
    FICHIER='mysqldump -uroot -p000000 --all-databases > /scripts/backup_bdd/bdd${DATE}.sql'
     
    echo 'Archive crée...'
     
    ## Envoi de l'archive sur le FTP.
    echo "Envoi de l'archive sur le serveur FTP ..."
     
    HOST='******'
    USER='*******'
    PASSWORD='*****'
    ftp -n $HOST <<**
    user $USER $PASSWD
    put $FICHIER
    quit
     
    echo "Envoi reussi !"
    En l'executant, j'ai un :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    Envoi de l'archive sur le serveur FTP ...
    (local-file) (remote-file) usage: put local-file remote-file
    ?Invalid command
    Pourquoi tous les echo ne s'affichent pas ?

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    - echo 'Creation de l'archive...'
    - echo 'Archive crée...'
    - ...
    En gros, le script crée une archive des bdd de MySQL avec mysqldump et envoi cette archive sur un FTP.

    Je ne sais pas non plus si le script est correct, dites-le moi svp

    Une idée ?

    bye

  2. #2
    Membre confirmé Avatar de _shuriken_
    Homme Profil pro
    Inscrit en
    Mars 2006
    Messages
    543
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 40

    Informations professionnelles :
    Secteur : High Tech - Opérateur de télécommunications

    Informations forums :
    Inscription : Mars 2006
    Messages : 543
    Points : 454
    Points
    454
    Par défaut
    je ne vois pas ou est le problème sauf là:
    Citation Envoyé par Scurz
    ftp -n $HOST <<**
    Un ftp -n $HOST aurai suffit non?!!!

  3. #3
    Membre expérimenté
    Avatar de narmataru
    Profil pro
    Inscrit en
    Décembre 2002
    Messages
    1 548
    Détails du profil
    Informations personnelles :
    Âge : 44
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations forums :
    Inscription : Décembre 2002
    Messages : 1 548
    Points : 1 680
    Points
    1 680
    Par défaut
    Bonjour,
    Voici comment je ferais :
    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
    !/bin/sh
    ## Ce script permet d'envoyer des sauvegardes de bases de donnees MySQL
    ## sur un espace FTP.
     
    #######
    ## Creation de l'archive des bases.
    ######
    ## Date de l'archive.
     
    echo 'Creation de l'archive...'
     
    DATE=$(date +%d-%m-%Y-%H-%M) # pour donner une date ¿ chaque sauvegarde
     
    ## Utilisation de mysqldump.
     
    # Ainsi FICHIER contient le nom du fichier et non la valeur de retour !
    FICHIER=/scripts/backup_bdd/bdd${DATE}.sql
    mysqldump -uroot -p000000 --all-databases > $FICHIER
     
    echo 'Archive crée...'
     
    ## Envoi de l'archive sur le FTP.
    echo "Envoi de l'archive sur le serveur FTP ..."
     
    HOST='******'
    USER='*******'
    PASSWORD='*****'
    # ON envoie le texte jusqu'au mot FIN plutot que jusqu'a la fin du fichier (d'ou l'erreur car echo était envoyé en tant que commande FTP)
    ftp -n $HOST <<-FIN
    user $USER $PASSWD
    put $FICHIER
    quit
    FIN
     
    echo "Envoi reussi !"
    Bon je n'ai pas testé mais je pense que mes modifications corrigent quelques problèmes

  4. #4
    Membre confirmé Avatar de _shuriken_
    Homme Profil pro
    Inscrit en
    Mars 2006
    Messages
    543
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 40

    Informations professionnelles :
    Secteur : High Tech - Opérateur de télécommunications

    Informations forums :
    Inscription : Mars 2006
    Messages : 543
    Points : 454
    Points
    454
    Par défaut
    Il faudrait que tu spécificie une source ainsi qu'une destination à ton transfert.
    Par ex SRC= $TONFICHIER et DEST = $TON_REPERTOIRE_SUR_LE_FTP;
    C'est peut être le problème?!!!!

  5. #5
    Scurz
    Invité(e)
    Par défaut
    Merci à tous pour vos réponses, voici ce que donne le script :

    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
    #!/bin/sh
    ## Ce script permet d'envoyer des sauvegardes de bases de donnees MySQL
    ## sur un espace FTP.
     
    #######
    ## Creation de l'archive des bases.
    ######
     
    ## Date de l'archive.
     
    echo "Creation de l'archive..."
     
    DATE=$(date +%d-%m-%Y-%H-%M) # pour donner une date � chaque sauvegarde
     
    ## Ainsi FICHIER contient le nom du fichier et non la valeur de retour !
    FICHIER=/scripts/backup_bdd/bdd${DATE}.sql
     
    ## Utilisation de mysqldump, cet outil de MySQL permet de sauvegarder une ou plusieurs bases de donnees.
     
    mysqldump -uroot -p***** --all-databases > $FICHIER
     
    #Le résultat de la commande basename est mise dans la variable fichier
     
    #fichier=`basename $FICHIER`
     
    echo "Archive créée..."
     
    ## Envoi de l'archive sur le FTP.
    echo "Envoi de l'archive sur le serveur FTP ..."
     
    HOST='*************'
    USER='***'
    PASSWD='**********'
     
    ftp -n $HOST <<TOTO
    user $USER $PASSWD
    binary
    cd bdd
    put $FICHIER
    quit
    TOTO
     
    ## Envoi reussi.
     
    echo "Envoi reussi !"
    Le script me renvoi :
    Creation de l'archive...
    Archive créée...
    Envoi de l'archive sur le serveur FTP ...
    Impossible d'ouvrir ce fichier: No such file or directory
    Erreur lors du renommage/deplacement: No such file or directory
    Envoi reussi !
    Ouais, donc un problème ds l'envoi du fichier

    Par exemple, si je mets de le même repertoire où se trouve ce script un fichier1 et un put fichier1 ds le script, ça fonctionne...une idée?

    @ablinux : c'est déjà ds le scrip non ? avec put pour la source et le 'cd bdd' pour rentrer ds un rep et y mettre la sauvegarde

  6. #6
    Membre chevronné

    Profil pro
    Inscrit en
    Mars 2004
    Messages
    1 296
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2004
    Messages : 1 296
    Points : 1 803
    Points
    1 803
    Par défaut
    je pense que ton proble viens bien de la non specification du fichier cible dans le put :
    put cherche a ranger le ficher en absolue puisque le nom est en absolue, hors il est probable que que la machine cible n'est pas la même arborescence et même que le serveur ftp n'autorise pas le /
    donc :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    put $FICHIER     bdd${DATE}.sql
    devrait mieux fonctionner.

  7. #7
    Scurz
    Invité(e)
    Par défaut
    Nickel, le script fonctionne

    merci

Discussions similaires

  1. Tuer des processus via un script bash
    Par RTK45 dans le forum Shell et commandes GNU
    Réponses: 6
    Dernier message: 19/04/2013, 00h16
  2. Sauvegarde des BDD en BATCH
    Par SNY77 dans le forum Administration
    Réponses: 2
    Dernier message: 17/12/2012, 16h20
  3. Réponses: 1
    Dernier message: 09/12/2008, 18h44
  4. [TStrings] Sauvegarder et Charger via BDD
    Par Kephuro dans le forum Débuter
    Réponses: 3
    Dernier message: 06/08/2008, 15h31
  5. [MySQL] sauvegarder des fichiers dans bdd
    Par etud_ini dans le forum PHP & Base de données
    Réponses: 2
    Dernier message: 05/09/2007, 23h47

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