GNU/Linux >> Tutoriels Linux >  >> Linux

Comment Gzip uniquement si Thesqldump ne génère pas d'erreur ?

Je veux compresser le vidage sql si et seulement si mysqldump ne produit aucune erreur. J'essaie de mettre le mauvais mot de passe, mais il exécute toujours le gzip.

 mysqldump -u username -ppassword dbname |& if [ $? == 0 ]; then gzip > test.gz; else echo "error"; fi

Quel est le problème avec ma commande ou existe-t-il une meilleure solution ?

Réponse acceptée :

Je pense que vous pourriez supprimer |& (la raison étant que vous n'avez pas besoin de diriger ni stdout ni stderr dans la condition suivante, vous pouvez simplement utiliser ';' comme séparateur de commande). Quelque chose comme ça devrait probablement fonctionner :

#!/bin/bash
mysqldump -u myuser -p mypasswd > mydb.dump
if [[ $? -eq 0 ]]; then
    gzip mydb.dump
else 
    echo >&2 "DB backup failed" 
    exit 1
fi

Edit :pour vérifier le succès du gzip, vous pouvez faire quelque chose comme ceci :

mysqldump -u myuser -p mypasswd | gzip > mydb.dump.gz && echo "success" || echo "failure" 

Cependant, cela signalerait un succès même si mysqldump a échoué, c'est-à-dire si la sauvegarde a échoué pour la plupart des raisons autres que le remplissage du disque par gzip.


Linux
  1. Comment réparer l'erreur Rust "linker 'cc' introuvable" sous Linux

  2. Comment corriger une erreur de commande introuvable sous Linux

  3. Comment réparer l'erreur - qemu :n'a pas pu charger le BIOS du PC "bios.bin" ?

  4. Le fichier de métadonnées ne correspond pas à la somme de contrôle - erreur YUM !

  5. Comment Greper les lignes qui ne commencent pas par "#" ou ";" ?

Comment réparer :l'utilisateur n'est pas dans l'erreur de fichier sudoers

Comment réparer l'erreur "Le référentiel n'a pas de fichier de version" dans Ubuntu

Comment réparer l'erreur "Le référentiel n'a pas de fichier de version" dans Ubuntu

Comment réparer les connexions de travail ne sont pas assez d'erreur sur Nginx

Comment réparer :la commande curl n'a pas trouvé d'erreur

Systemd :Comment exécuter le script à l'arrêt uniquement (pas au redémarrage)