システムのログローテ機能をシェルで実装する場合に tar コマンドで固めてからディレクトリ移動、
もしくはコピーなどを実行する場合が多いと思います。
その際に tar コマンドのエラー判定を
tar -zcvf <FILENAME>.tar.gz ./dir
rc=$?
if [ ${rc} != 0 ] ; then
# 0 以外の時のエラー処理
fi
上記のようにしてしまうと、思わぬところでシェルが失敗してしまう可能性があります。
それは、tar コマンドが警告で終わった場合、戻り値として 1 を返すからです。
tar コマンドが警告で終わるのは以下の場合が多いです。
- アーカイブ中にファイル更新があった場合
- アーカイブ中にファイルが削除された(消えた)場合
- 元のファイルよりサイズが小さくなった場合
警告終了であってもアーカイブ自体は問題なくできあがっていますので、
エラー判定は 0 or 1 以外の場合にして、1 の警告終了であっても正常扱いにした方が夜は安眠できると思います。