GNU/Linux >> LINUX-Kenntnisse >  >> Linux

Wie gzip ich nur, wenn Thesqldump keinen Fehler macht?

Ich möchte den SQL-Dump nur dann komprimieren, wenn mysqldump keinen Fehler erzeugt. Ich versuche, das falsche Passwort einzugeben, aber es führt immer noch gzip durch.

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

Was ist mit meinem Befehl falsch oder gibt es eine bessere Lösung?

Akzeptierte Antwort:

Ich denke, Sie könnten |& entfernen (Der Grund dafür ist, dass Sie weder stdout noch stderr in die nächste Bedingung leiten müssen, wenn überhaupt, können Sie einfach ';' als Befehlstrennzeichen verwenden). So etwas sollte wahrscheinlich funktionieren:

#!/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

Bearbeiten:Um den Erfolg von gzip zu überprüfen, können Sie Folgendes tun:

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

Dies würde jedoch Erfolg melden, selbst wenn mysqldump fehlgeschlagen, d. h. wenn die Sicherung aus den meisten Gründen fehlgeschlagen ist, außer dass gzip die Festplatte füllt.


Linux
  1. So beheben Sie den Rust-Fehler „Linker ‚cc‘ nicht gefunden“ unter Linux

  2. Metadatendatei stimmt nicht mit Prüfsumme überein – YUM-Fehler!

  3. Fehler:src refspec main stimmt mit keinem [GIT] überein

  4. So richten Sie Chroot SFTP unter Linux ein (nur SFTP zulassen, nicht SSH)

  5. Systemd:So führen Sie das Skript nur beim Herunterfahren aus (nicht beim Neustart)

Problembehebung:Fehler „Benutzer befindet sich nicht in der Sudoers-Datei“.

So beheben Sie den Fehler „Repository hat keine Release-Datei“ in Ubuntu

So beheben Sie den Fehler „Das Repository hat keine Release-Datei“ in Ubuntu

Wie man Worker-Verbindungen repariert, ist nicht genug Fehler auf Nginx

Behebung:Curl-Befehl hat keinen Fehler gefunden

ldd findet keinen Pfad, wie man hinzufügt