数週間前、上級チームのメンバーが重要なOracleデータベースファイル(.dbf)を予期せず削除しました。幸い、数日前に保存したバックアップファイルを使用してシステムを復元することができました。
その状況を見てrm
、プロンプトでコマンドを入力するときに少なくとも二重の確認を行うソリューションを実装することにしました。(以上をチェックしますrm -i
)
私たちがデフォルトでエイリアシングrm -i
をしているとしても、超高速のキーボード奏者は通常、私を含めてそのメンバーのように間違いを犯します。
最初に、(エイリアスを使用して)基本的なrmコマンドを特定のbashスクリプトファイルに置き換えました。このスクリプトファイルは、ターゲットがOracleデータベースのパスまたはファイルに関連しているかどうかを何度も印刷して確認します。簡単に言えば、スクリプトはrmを操作する前にフィルターとして動作します。oracleに関連していない場合、rmは通常どおり動作します。
実装中は、1つの懸念事項を除いて、ユーザープロンプト環境のみを期待していたため、ほとんどの機能が適切に動作していると思いました。
rmコマンドが他のスクリプト(提供されたオラクル、オラクルパスを変更する他のベンダー、インストーラーなど)またはプログラム(システムコールを使用)内で呼び出された場合。
その状況をどのように区別できますか?上記で提供されたスクリプトが変更されたrmに適合した場合、その実行はそれ以上先に進みません。
もっと洗練された方法はありますか?
読者のほとんどは私の怠惰な説明を理解できると思います。上からの景色がよくわからない場合はお知らせください。もっと詳しく説明します。