GNU/Linux >> Linux の 問題 >  >> Linux

Thesqldumpでエラーが発生しない場合にのみGzipで圧縮するにはどうすればよいですか?

mysqldumpでエラーが発生しない場合にのみ、SQLダンプを圧縮したいと思います。間違ったパスワードを入力しようとしましたが、それでもgzipが実行されます。

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

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

承認された回答:

|&を削除できると思います (理由は、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がディスクをいっぱいにする以外のほとんどの理由でバックアップが失敗した場合。


Linux
  1. 解決方法:stdin:gzip形式ではありません

  2. Linuxでコマンドが見つからないというエラーを修正する方法

  3. エラーを修正する方法– qemu:PC BIOS「bios.bin」をロードできませんでしたか?

  1. メタデータファイルがチェックサムと一致しません– YUMエラー!

  2. エラー:srcrefspecmainがどの[GIT]とも一致しません

  3. 「#」または「;」で始まらない行をgrepする方法は?

  1. LinuxでRustエラー「リ​​ンカー「cc」が見つかりません」を修正する方法

  2. Linux で Chroot SFTP をセットアップする方法 (SSH ではなく SFTP のみを許可する)

  3. ファイルがまだ存在しない場合にのみファイルに行を追加する