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 :

commande1 && | bzip2 > toto ? c'est possible ?


Sujet :

Linux

  1. #1
    Membre averti
    Profil pro
    Inscrit en
    Mars 2006
    Messages
    19
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2006
    Messages : 19
    Par défaut commande1 && | bzip2 > toto ? c'est possible ?
    bonjour,

    mysqldump -option xxxx | bsip2 > mydump.sql.bz2
    if(($?))
    then
    echo "erreur dump"
    else
    echo "base sauvegardee"
    fi

    Le problème est que même si a base n'existe pas ... la partie droite du pipe n'est pas en erreur donc ... sauvegarde ok !!


    en fait je fait un dump mysql , je le compresse dans un fichier.
    Par contre je n'arrive pas à m'arrêter sur le première erreur : le cas ou la base mysql n'existe pas ?

    comment faire un && (exécution de commande) suivi d'un pipe | ?

  2. #2
    Membre éclairé

    Homme Profil pro
    Développeur en systèmes embarqués
    Inscrit en
    Février 2005
    Messages
    464
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 45
    Localisation : France, Loire (Rhône Alpes)

    Informations professionnelles :
    Activité : Développeur en systèmes embarqués
    Secteur : Industrie

    Informations forums :
    Inscription : Février 2005
    Messages : 464
    Par défaut
    C'est vrai que bzip2 ne retournera pas d'erreur si l'entrée est vide.
    Je pense qu'il te faut passer par un fichier temporaire et tester son état avec "test -s" pour vérifier qu'il n'est pas de taille nulle.
    D'autres personnes auront peut-être un meilleur conseil à donner car je ne connais pas bien les utilitaires mysql.

  3. #3
    Membre Expert
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Octobre 2008
    Messages
    1 515
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 47
    Localisation : France

    Informations professionnelles :
    Activité : Ingénieur développement logiciels

    Informations forums :
    Inscription : Octobre 2008
    Messages : 1 515
    Par défaut
    A mon avis tant que tu utilises un pipe, tu ne pourra jamais récupérer le code de retour de la commande à gauche du pipe. Et pour une bonne raison, c'est que les commandes à gauche et à droite du pipe s'exécutent dans deux process différent. Il est donc impossible de "transférer" le code de retour de la commande de gauche à la commande de droite.

    Donc à part faire l'opération en deux temps (mysqldump dans un fichier puis bzip du fichier), je ne vois pas.

    En fait si, il ya des solutions mais c'est vraiment battard. Par exemple tu pourrais faire un truc du genre :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    [ -z `{ { cmd1 || echo FAILED >&2; } | cmd2; } 2>&1` ]
    Qui sera vrai si cmd1 s'est déroulée avec succès.

  4. #4
    Membre averti
    Profil pro
    Inscrit en
    Mars 2006
    Messages
    19
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2006
    Messages : 19
    Par défaut oh que oui ...
    tu as raison cela devient carrément batard autant passé par un un fichier .sql intermediaire PUIS un coup de BZIP2 dessus ....

    On joue pas avec les backup de base lol.

    Merci

  5. #5
    Membre averti
    Profil pro
    Inscrit en
    Mars 2006
    Messages
    19
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2006
    Messages : 19
    Par défaut
    ... la galere ...

    notre problème c'est que le mysql dump ... fait de trés gros fichier

    le fait de placer un tube permettait de compresser à la volé et de ne pas avoir besoin de plus de 5 go d'espace ....

    la le dump fait 6 go non compressé ...

    dur dur

    comment faire ...

    je veux tester les erreurs !!!

  6. #6
    Membre averti
    Profil pro
    Inscrit en
    Mars 2006
    Messages
    19
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2006
    Messages : 19
    Par défaut
    et si je fait ca :

    ERREUR=`mysqldump xxxxxxxx | bzip2 -f9 > mondump_sql.bz2`

    ?

  7. #7
    Membre Expert
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Octobre 2008
    Messages
    1 515
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 47
    Localisation : France

    Informations professionnelles :
    Activité : Ingénieur développement logiciels

    Informations forums :
    Inscription : Octobre 2008
    Messages : 1 515
    Par défaut
    Ca ne règle pas ton problème. D'ailleurs ça ne fait de plus que de faire simplement mysqldump xxxxxxxx | bzip2 -f9 > mondump_sql.bz2, puisque dans ta commande ERREUR sera toujours vide.

  8. #8
    Membre averti
    Profil pro
    Inscrit en
    Mars 2006
    Messages
    19
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2006
    Messages : 19
    Par défaut
    y'a ca : a tester :

    mysqldump zegeger 2>/tmp/error.dmp | bzip2 -f9 2>/tmp/error.bz2 > lol


    et on gere plus les erreurs avec if (($?)) mais avec un if [ -s /tmp/error.dmp ]

    je vois pas mieux .... sniff

  9. #9
    Membre averti
    Profil pro
    Inscrit en
    Mars 2006
    Messages
    19
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2006
    Messages : 19
    Par défaut
    JE SUIS LE PLUS FORET DU monde y'aP ():


    c ici que ca se passe :

    http://www.tldp.org/LDP/abs/abs-guide.pdf

    $PIPESTATUS

    ENJOY

  10. #10
    Membre Expert
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Octobre 2008
    Messages
    1 515
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 47
    Localisation : France

    Informations professionnelles :
    Activité : Ingénieur développement logiciels

    Informations forums :
    Inscription : Octobre 2008
    Messages : 1 515
    Par défaut
    C'est pas standard PIPESTATUS, c'est un truc de bash.

Discussions similaires

  1. WHERE toto = *troisDerniersChiffres, c'est possible ?
    Par Zak Blayde dans le forum Requêtes et SQL.
    Réponses: 4
    Dernier message: 06/06/2007, 10h55
  2. passer un champ en paramètre, c'est possible ??
    Par marie253 dans le forum Bases de données
    Réponses: 6
    Dernier message: 09/07/2004, 10h22
  3. Réponses: 1
    Dernier message: 18/06/2004, 02h12
  4. Réponses: 2
    Dernier message: 16/07/2003, 15h40

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