orangeitems’s diary

40代ITエンジニアが毎日何か書くブログ

ほとんどの本番作業がファイル操作である件

 

インフラエンジニアとしていろいろな作業をすることが多いが、結局やっていることって、ほとんどがファイル起点だと思う。

・ファイルを編集する
・ファイルをコピーする
・ファイルを削除する
・ファイルを移動する

そして、ファイルは、必ずディレクトリーに入っていて、違うディレクトリーにあれば同じファイル名は許容される。

実際、MS-DOSの時代からこの様子で、そこからパソコンの範囲においては、LinuxやWindows、MacOSなどいろいろ種類はあるが、結局はやっていることは似たようなものである。

それがエクスプローラーでGUIなのか、それともSSHからコマンドベースなのか、お作法が違うだけで概念としては全く同じである。

問題は、これをいかに安全に行うかである。

ファイルの削除は危ない。なぜなら、本当は必要かもしれないからである。削除する前にバックアップするのは鉄板である。

ファイルの移動も危ない。移動するとき、移動元から無くなって、移動先に現れる。このときに、移動元の観点で言えば削除しているのと同じだ。そのファイルをどこかのプログラムが実は見ているかもしれない。だから、ファイルを移動するときには削除することと同じレベルでその必然性を考えなくてはいけない。

ファイルの移動ではなくコピーとし、コピーしたものを修正。コピー元は安全を確認してから消す。これは普段もやっている気がする。移動よりはコピーの方が安全。ただ、コピーするときに、コピー先に同じ名前のファイルがあり上書きするかもしれない。これはコピー先のファイルを消すのと同じ意味になる。

そうやって、単にファイルを移動したり複製したり削除したりするだけで、一日が過ぎていくのだ。まだ上記の例は単一ファイルなので話は単純な方である。ディレクトリー自身をコピーしたり、削除したり、のような複数のファイルに渡る場合は、リスクが一気に上昇する。例えば何千のファイルを、どこかに移動しようとして、間違えた場所に移動してしまったときに、その先にもたくさんのファイルがあったりするとわけがわからなくなる。削除も、1つだけなら戻せるけど、何千ともなれば、バックアップから戻すしかないね、と。じゃあバックアップをきちんととっているか、みたいな話になる。

このディレクトリにある、全てのファイルを消す、みたいなときに、カレントディレクトリーの場所を間違えて、違う場所を消すみたいな事故も、容易に起こる。

ここまでは、ファイルの「位置」だが、もう一つ重要なポイントがある。権限だ。権限がファイルにもディレクトリーにも設定されている。それらの設定を誤ると、プログラムが簡単に動かなくなる。権限設定も、ファイルごとにもできるし、ディレクトリ配下一括ということもできる。いかようにもできるが、間違えるリスクは同様だ。

こうやって、普段の本番作業を思い出していると、ファイル操作自体が肝であることがわかる。そして、それらを人がやると失敗するので、シェル化して自動化する方法もあるが、これがまた、シェルを作る人間が、間違えるロジックをそのまま実装してしまうことがある。だから、自動化することが安全につながるのではなく、結局のところきちんとリスクを見抜くことについては何も変わらない。一度実装してテストできれば安全性が高くなる、くらいなものである。ただ、この認識も絶対ではなく、特定のある条件だけ失敗するみたいなシェルを何度か見たことがある。

そうやって考えると、なんてファイルとは罪作りか。人間が楽になるために存在しているのに、人間はファイル操作で年中苦労しているのである。便利な仕組みなのだが、本当に奥深い、ファイル操作、である。