NTbackupでの連続バックアップ不具合
〜NT3.51 Service Pack5の場合〜
0.改定履歴
- 1998.01.06 初版
1.はじめに
このドキュメントは,Windows NT3.51にService Pack 5を適用したマシンにおいて,ntbackupコマンドを用いてバックアップを行なう場合の不具合について述べる.
2.連続バックアップの不具合
バッチプログラムにて,バックアップを行なう場合に,ntbackupコマンドを複数記述していると2番目以降のバックアップが出来ないことがある. これはntbackupがハングアップするためである.(ワトソン博士状態)
具体的には,次のようなスクリプトの場合である.
ntbackup E:\backup0 ntbackup E:\backup1 /a ←追記モード |
この場合,何が問題かというと,サンプルを引用すれば,backup0ディレクトリのバックアップが終った後で,テープを巻き戻す作業が発生する. このテープの巻き戻しを行なっている途中でもntbackupはその処理を終了して次のステップに移り,backup1ディレクトリのバックアップを始めようとする.
この時,テープの巻き戻しが行なわれている時に次のntbackupが稼働すると,テープドライブの初期化あたりでエラーとして扱ってしまい,その場合にハングアップしてしまうようである.
この現象は,2台のマシンで確認済みである.
3.証明と対処
つまり,テープが巻き戻されるまでまった後にntbackupを起動すれば問題は解決するのである.
たとえば,この不具合がでた実際のスクリプトは,次のようなものである.
ntbackup E:\backup0 ntbackup E:\backup1 /a ←追記モード ntbackup E:\backup2 /a ←追記モード |
この場合に,backup0とbackup2が正常終了することが出来た. backup1が起動してハングアップしている間にテープの巻き戻しが終了してbackup2が丁度良い時間になった為である.
時間待ちを行なうには,リソースキットのsleep.exeを使用すると良いと思う. バッチプログラムで稼働するコンソールアプリケーションである.
4.ついでに...
ここで挙げているのは,複数のディレクトリを1つづつバックアップ対象とする方法になっている. 普通ならば1行で記述できる. たとえば,前出の“サンプルスクリプト2”を例にあげるならば,次のようにまとめられる.
ntbackup E:\backup0 E:\backup1 E:\backup2 |
サンプル1や2で何故分けていたかというと,サービス(デーモンプロセス)が使用しているデータ領域をバックアップするために必要だからである.
バックアップを行なっている時に,バックアップ対象データが書き込みで開かれている場合には,そのファイルはバックアップに失敗する. よってサービスを停止させればよいが,この停止時間をなるべく短くするためにバックアップ範囲を小さく刻む為に複数行が必要なのである.