GNU/Linux >> Linux Esercitazione >  >> Linux

Come eseguire il gzip solo se Thesqldump non presenta errori?

Voglio comprimere il dump sql se e solo se mysqldump non produce alcun errore. Provo a inserire la password sbagliata, ma esegue comunque il gzip.

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

Qual è il problema con il mio comando o esiste una soluzione migliore?

Risposta accettata:

Penso che potresti rimuovere |& (il motivo è che non è necessario convogliare né lo stdout né lo stderr nel condizionale successivo, semmai puoi semplicemente usare ";" come separatore di comandi). Qualcosa del genere dovrebbe probabilmente funzionare:

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

Modifica:per verificare il successo di gzip potresti fare qualcosa del genere:

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

Tuttavia questo segnalerebbe il successo anche se mysqldump fallito, ovvero se il backup non è riuscito per la maggior parte dei motivi diversi dal riempimento del disco con gzip.


Linux
  1. Come risolvere l'errore di ruggine "linker 'cc' non trovato" su Linux

  2. Come correggere un errore di comando non trovato in Linux

  3. Come correggere l'errore – qemu:impossibile caricare il BIOS del PC "bios.bin"?

  4. Il file di metadati non corrisponde al checksum – Errore YUM!

  5. errore:src refspec main non corrisponde a nessun [GIT]

Come risolvere il problema:l'utente non è nell'errore del file sudoers

Come risolvere l'errore "Il repository non ha un file di rilascio" in Ubuntu

Come risolvere l'errore "Il repository non ha un file di rilascio" in Ubuntu

Come riparare le connessioni di lavoro non sono sufficienti errori su Nginx

Come risolvere il problema:il comando curl non ha trovato un errore

Systemd:come eseguire lo script solo allo spegnimento (non al riavvio)