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 :

Sauvegarde d'une base de données Mysql d'un serveur local vers un serveur distant via ssh


Sujet :

Shell et commandes GNU

  1. #1
    Membre régulier
    Profil pro
    Inscrit en
    Juin 2004
    Messages
    157
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2004
    Messages : 157
    Points : 80
    Points
    80
    Par défaut Sauvegarde d'une base de données Mysql d'un serveur local vers un serveur distant via ssh
    Bonjour,

    Le script bash suivant fonctionne bien:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    #!/bin/bash
     
    mysqldump --host 192.168.1.21 testbase -uroot -pmonmotdepasse | gzip -c | ssh root@xx.yyy.zzz.xx 'cat > /home/bup_testbase/bd/2018-02-23.testbase.sql.gz'

    par contre quand j'ai inclus la variable " DATEENVOI " dans mon script la sauvegarde ne s’effectue plus!

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    #!/bin/bash
     
    DATEENVOI=`date +'%Y-%m-%d_%H-%M-%S'`
    mysqldump --host 192.168.1.21 testbase -uroot -pmonmotdepasse | gzip -c | ssh root@xx.yyy.zzz.xx 'cat > /home/bup_testbase/bd/$DATEENVOI.testbase.sql.gz'
    Quelqu'un pourrait me dire ce qu'il faut changer pour que se deuxième script fonctionne également?

    Merci d'avance pour votre aide.

  2. #2
    Membre régulier
    Profil pro
    Inscrit en
    Juin 2004
    Messages
    157
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2004
    Messages : 157
    Points : 80
    Points
    80
    Par défaut
    Ré-Bonjour,

    Je viens de trouver un moyen pour contourner le problème:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    #!/bin/bash
     
    mysqldump --host 192.168.1.21 testbase -uroot -pmonmotdepasse | gzip -c | ssh root@xx.yyy.zzz.xx 'cat > /home/bup_testbase/bd/`date +%Y-%m-%d_%H.%M.%S`.testbase.sql.gz'

    Au lieu d'utiliser le variable $DATEENVOI j'ai intégré le bout de code
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    `date +%Y-%m-%d_%H.%M.%S`
    dans la commande.

  3. #3
    Membre expérimenté
    Avatar de yotta
    Homme Profil pro
    Technicien maintenance
    Inscrit en
    Septembre 2006
    Messages
    1 088
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 54
    Localisation : France, Bas Rhin (Alsace)

    Informations professionnelles :
    Activité : Technicien maintenance
    Secteur : Industrie

    Informations forums :
    Inscription : Septembre 2006
    Messages : 1 088
    Points : 1 540
    Points
    1 540
    Par défaut
    Pour moi, ce n'est qu'un problème de syntaxe. Dans votre première version :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    mysqldump --host 192.168.1.21 testbase -uroot -pmonmotdepasse | gzip -c | ssh root@xx.yyy.zzz.xx 'cat > /home/bup_testbase/bd/$DATEENVOI.testbase.sql.gz'
    La partie "cat > /home/bup_testbase/bd/$DATEENVOI.testbase.sql.gz" saisie ainsi est une chaîne texte à part entière, pas le résultat d'une concaténation, et de toute évidence, on ne peut pas créer de fichier dont le nom commencerait par le caractère $.
    Personnellement, je l'aurait écrit comme ça :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    DATEENVOI=...
    mysqldump --host 192.168.1.21 testbase -uroot -pmonmotdepasse | gzip -c | ssh root@xx.yyy.zzz.xx "cat > /home/bup_testbase/bd/" + $DATEENVOI + ".testbase.sql.gz"
    Une technologie n'est récalcitrante que par ce qu'on ne la connait et/ou comprend pas, rarement par ce qu'elle est mal faite.
    Et pour cesser de subir une technologie récalcitrante, n'hésitez surtout pas à visiter les Guides/Faq du site !

    Voici une liste non exhaustive des tutoriels qui me sont le plus familiers :
    Tout sur Java, du débutant au pro : https://java.developpez.com/cours/
    Tout sur les réseaux : https://reseau.developpez.com/cours/
    Tout sur les systèmes d'exploitation : https://systeme.developpez.com/cours/
    Tout sur le matériel : https://hardware.developpez.com/cours/

  4. #4
    Expert éminent sénior Avatar de Flodelarab
    Homme Profil pro
    Inscrit en
    Septembre 2005
    Messages
    5 243
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Charente (Poitou Charente)

    Informations forums :
    Inscription : Septembre 2005
    Messages : 5 243
    Points : 13 458
    Points
    13 458
    Par défaut
    Bonjour

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    mysqldump --host 192.168.1.21 testbase -uroot -pmonmotdepasse | gzip -c | ssh root@xx.yyy.zzz.xx 'cat > /home/bup_testbase/bd/$DATEENVOI.testbase.sql.gz'
    Les 'simple quotes' empêchent l'interprétation.
    Les "doubles quotes" n'empêchent pas l'interprétation.

    Si tu veux interpréter $DATEENVOI, sans doute feras-tu un truc comme ça:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    mysqldump --host 192.168.1.21 testbase -uroot -pmonmotdepasse | gzip -c | ssh root@xx.yyy.zzz.xx 'cat > /home/bup_testbase/bd/'"$DATEENVOI"'.testbase.sql.gz'
    ou comme ça:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    mysqldump --host 192.168.1.21 testbase -uroot -pmonmotdepasse | gzip -c | ssh root@xx.yyy.zzz.xx "cat > /home/bup_testbase/bd/$DATEENVOI.testbase.sql.gz"


    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    `date +%Y-%m-%d_%H.%M.%S`
    Pour éviter de rejouer à l'infini le sketch de Raymond Devos sur le thème "ouvrez le ban" et "fermez le ban", tu peux utiliser $( ) au lieu de ` `.
    Comme ça, tu pourras emboîter les commandes sans casse-tête.



    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    DATEENVOI=...
    mysqldump --host 192.168.1.21 testbase -uroot -pmonmotdepasse | gzip -c | ssh root@xx.yyy.zzz.xx "cat > /home/bup_testbase/bd/" + $DATEENVOI + ".testbase.sql.gz"
    Le java n'est pas tous les langages.
    La concaténation de chaînes en bash ne se fait pas avec un "plus", et les variables se protègent par des double quotes dans la mesure du possible.
    Cette réponse vous apporte quelque chose ? Cliquez sur en bas à droite du message.

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

    Informations forums :
    Inscription : Juillet 2004
    Messages : 2 472
    Points : 4 029
    Points
    4 029
    Par défaut
    Si ta sauvegarde échoue, tu n'as pas idée de ce qui ne va pas. Ton script fait tout d'un couop sans vérification de code retour. Facile à mettre en place, difficile à maintenir.

    Bacula est bien pour avoir un vrai outil de sauvegarde avec une rétention, des backups full/incrémentaux/différentiels.
    Baculum permet d'y rajouter une couche web et api.
    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

Discussions similaires

  1. Sauvegarder une base de données MySQL
    Par demso dans le forum Débuter
    Réponses: 1
    Dernier message: 21/08/2014, 08h51
  2. [phpMyAdmin] Sauvegarder une base de données MySQL en une seule fois
    Par sam01 dans le forum EDI, CMS, Outils, Scripts et API
    Réponses: 2
    Dernier message: 11/04/2012, 09h56
  3. Sauvegarder une base de donnée mysql
    Par koKoTis dans le forum VBScript
    Réponses: 6
    Dernier message: 25/01/2008, 20h30
  4. Sauvegarder une base de données MySQL en ligne
    Par koKoTis dans le forum Scripts/Batch
    Réponses: 2
    Dernier message: 28/11/2007, 07h24
  5. Réponses: 1
    Dernier message: 30/01/2007, 14h07

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