windows server で、フォルダが削除・移動されたとき、それが妥当な処理だったのか手違いだったのかを判別する作業を定期的に行っている。変化した内容がエラーや手違いだったのなら、直ちにバックアップディスクからリストアしている。
従来は、バックアップソフトで差分履歴を作成し、変化点を確認していたが、階層構造の深い何万もあるフォルダを全部を確認するのは大変だった。また、削除されたフォルダについてはバックアップの履歴に残らないので、管理をあきらめかけていた。
少しでも作業を楽にするため、今回は、Windowsに標準で備わっているコマンドを使って日々のフォルダツリーを生成するようにしてみた。
フォルダツリーを生成するところまでを、バッチファイルとして作成し、差分の比較は、「Rekisa」 (フリーウェア)で行う。
●バッチプログラム
rem 日付から"/"を削除
set yyyymmdd=%DATE:/=%
rem 時刻から":"を削除
set hhmmsssss=%time::=%
rem さらに" "を削除
set hhmmsssss=%hhmmsssss: =%
rem 先頭に"0"をつける
set hhmmssa=0%hhmmsssss%
rem 後ろから9文字目を起点に右方向6文字を切り出す
set hhmmssb=%hhmmssa:~-9,6%
rem 日時結合
set ymdhms=%yyyymmdd%-%hhmmssb%
rem フォルダツリー生成
tree > tree%ymdhms%.txt
上記のプログラム(実質たったの7行(remはコメント文))を実行するとフォルダツリーのファイルが自動生成される。
例: tree20101204-102856.txt
(2010年12月04日10時28分56秒に生成されたという意味)
プログラムを拡張子".BAT"のファイル(たとえば"Auto-tree.BAT")にして、起動すると、BATファイルが置かれているフォルダとそのサブディレクトリを対象にツリーが生成される。
プログラムをタスクに登録しておくと、毎日定刻になったときに、フォルダツリーのファイルが生成されていく。
●Rekisaで比較
2つのファイルをRekisaで開くと差分のある箇所に色がつく。2つのファイルが同期してスクロールし、軽快に動作する。
双方の差分の対応関係がわかりやすいので、作業がはかどった。
●参考サイト(コマンドの仕様について)
http://www.upken.jp/kb/tag/BAT