Saya ingin Zip dump sql jika dan hanya jika mysqldump tidak menghasilkan kesalahan. Saya mencoba memasukkan kata sandi yang salah, tetapi tetap melakukan gzip.
mysqldump -u username -ppassword dbname |& if [ $? == 0 ]; then gzip > test.gz; else echo "error"; fi
Apa yang salah dengan perintah saya atau adakah solusi yang lebih baik?
Jawaban yang Diterima:
Saya pikir Anda dapat menghapus |&
(alasannya karena Anda tidak perlu menyalurkan stdout atau stderr ke kondisi berikutnya, jika ada, Anda bisa menggunakan ';' sebagai pemisah perintah). Sesuatu seperti ini mungkin akan berhasil:
#!/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
Sunting:untuk memeriksa keberhasilan gzip Anda dapat melakukan sesuatu seperti ini:
mysqldump -u myuser -p mypasswd | gzip > mydb.dump.gz && echo "success" || echo "failure"
Namun ini akan melaporkan keberhasilan bahkan jika mysqldump
gagal, yaitu jika pencadangan gagal karena sebagian besar alasan selain gzip yang mengisi disk.