Introduction
京都大学でバックアップデータが消失した件。
ヒューレット・パッカードが 100% 責任を認めた事件だが、なんで発生したのかというと
- バックアップスクリプトを実行
- スクリプトの機能改善と併せてコードの視認性や可読性を高めるため、findコマンドの検索・削除処理に渡す変数名を変更
- 上書きしたスクリプトの再読み込みが発生し、未定義の変数が含まれたfindコマンドが実行
- 未定義の変数により意図しないディレクトリが find の対象になり、重大データが削除された
で、方々で問題になったが、取り急ぎ対策としては、実行中にスクリプトを修正しないのもあるが、未定義の変数が発生した場合処理を止めることができないか、という点。
結論から言えば可能で、ネット上で指摘されていた対策。
How to
下記で対応。
1 |
|
これでOK。
他にも
1 | # パイプやサブシェルで実行したコマンドが1つでもエラーになったら直ちにシェルを終了 |
とか
1 | # パイプラインでエラーになったらシェルを終了 |
もあるとより安全らしい