技術とか戦略とか

IT技術者が技術や戦略について書くブログです。

rm -rfの前にls -lを発行してミスを防ぐ

作業ミスを防ぐためのちょっとしたテクニックです。
現場で先輩社員に教えてもらえることだとは思うのですが、暗黙知的な所があり運が悪いと教えてもらえないかもしれないので。
 
あるディレクトリとその配下のファイル・ディレクトリを削除する時は、rm -rfコマンドを使用します。
しかし、このコマンドで指定ディレクトリを誤ってしまうと取り返しがつかなくなることがあります。
特にrootユーザのような権限の強いユーザで作業する時は危険です。
 
fオプションを指定から外し、rm -rとすれば対話式で削除できるようになるので誤削除のリスクを軽減できますが、1つ1つのファイル・ディレクトリについて消すかどうか聞かれるので、大量のファイル・ディレクトリが含まれるディレクトリをこの方法で消すのは困難です。
 
そこで、rm -rfコマンドを発行する前に、ls -lコマンドを発行し何が消えるのかを予め確認する、という手が有効になってきます。
例えば、dir1というディレクトリを削除したい場合、いきなりrm -rfコマンドを発行するのではなく、事前にdir1に対してls -lコマンドを発行します。
 
[hoge@localhost hoge]# ls -l dir1
-rwxrwxrwx 1 hoge hoge      8737  6月 28 09:34 2018 file1
-rwxrwxrwx 1 hoge hoge        18  7月 18 22:19 2018 file2
[hoge@localhost hoge]#
 
これで指定ディレクトリが間違っていないことを確認してから、「ls -l」を「rm -rf」に置き換え、コマンドを発行します。
コマンドの実行が完了した後、「rm -rf」を「ls -l」に置き換え、コマンドを発行し、対象ディレクトリが消えていることを確認します。
 
このような手順を踏むことで、誤削除を未然に防止することができます。
本番環境で作業する時は、この手順でダブルチェックする(見ている人からOKの返事をもらい、その後にエンターキーを押下する)ぐらいの慎重さは必要です。