GNU/Linux >> Znalost Linux >  >> Linux

Jak Gzip pouze v případě, že Thesqldump nedojde k chybě?

Chci zazipovat výpis SQL pouze tehdy, když mysqldump nevyvolá žádnou chybu. Snažím se zadat špatné heslo, ale stále to provádí gzip.

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

Co je špatného na mém příkazu nebo existuje nějaké lepší řešení?

Přijatá odpověď:

Myslím, že byste mohli odstranit |& (Důvodem je, že nemusíte do další podmíněné vkládat stdout ani stderr, pokud něco můžete použít jako oddělovač příkazů „;“). Něco takového by pravděpodobně mělo fungovat:

#!/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:Chcete-li zkontrolovat úspěšnost gzip, můžete udělat něco takového:

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

To by však hlásilo úspěch, i když mysqldump selhalo, tj. pokud záloha selhala z většiny jiných důvodů, než je zaplnění disku gzip.


Linux
  1. Jak Grep linky, které nezačínají "#" nebo ";"?

  2. Jak filtrovat protokol Dmesg, abyste viděli pouze chyby?

  3. Linux – Ldd nenajde cestu, jak přidat?

  1. Jak nastavit Chroot SFTP v Linuxu (povolit pouze SFTP, ne SSH)

  2. chyba připojení cqlsh:'ref() nebere argumenty klíčových slov'

  3. ldd nenajde cestu, Jak přidat

  1. Jak vyřešit:stdin:není ve formátu gzip

  2. Jak opravit chybu Rust „linker ‚cc‘ nenalezen“ v systému Linux

  3. Systemd :Jak spustit skript pouze při vypnutí (ne při restartu)