mysqldumpにエラーがない場合にのみgzipを使用する方法は?

mysqldumpにエラーがない場合にのみgzipを使用する方法は?

mysqldumpがエラーを生成しない場合にのみ、sqlダンプを圧縮したいと思います。無効なパスワードを入力しましたが、まだgzipが実行されます。

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

私のコマンドに問題がありますか?それとも、より良い解決策がありますか?

ベストアンサー1

削除できると思います|&(理由は、stdoutまたはstderrを次の条件にパイプする必要がないためです。コマンド区切り文字がある場合は ';'を使用できます)。おそらく、次のように動作します。

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

編集:gzipが成功したことを確認するには:

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

ただし、mysqldumpこれは失敗しても成功を報告します。つまり、gzipでディスクを埋める以外のほとんどの理由でバックアップが失敗した場合です。

おすすめ記事