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でディスクを埋める以外のほとんどの理由でバックアップが失敗した場合です。