4.16.2 ユーザースクリプトの記述規則

この項の構成
(1) ユーザースクリプトの記述規則
(2) ユーザースクリプトの記述項目
(3) スクリプト環境変数
(4) コマンドの実行権限
(5) ユーザー前処理およびユーザー後処理で指定できるコマンド

(1) ユーザースクリプトの記述規則

次の表にユーザースクリプトの記述規則を示します。

表4-67 ユーザースクリプトの記述規則

分類規則
ユーザースクリプト全体
  • 文字コードはASCIIまたはシフトJISを使用してください。
  • 0x20未満のコードはCR0x0d),LF0x0a),TAB0x09)を除き使用できません。
  • 改行コードはLF0x0a)またはCR+LF0x0d0x0a)とします。
  • 1行の長さは8KBまでとします。
項目名,セクション名
  • 1行につき,1項目を指定してください。
  • 大文字・小文字は区別しません。
  • 必ず半角で指定してください。全角は使用できません。
  • 項目名と項目値の間は半角イコール(=)で区切ります。半角イコール(=)の前後にタブや半角空白が入力されていてもかまいません。
項目の値
  • 項目名の後の半角イコール(=)に続けて1行で指定します。項目名と値の間に改行コードを入れないでください。
  • 項目名後の半角イコール(=)の後から改行コードの手前までの間が,項目の値となります。
  • 項目名だけ記述されていて,値が指定されていない場合はエラーとなります。
注釈
  • 半角シャープ(#)で始まる行は注釈行とします。
  • 行の途中に半角シャープ(#)が入力されていても,それ以降の部分が注釈にはなりません。
  • 半角シャープ(#)の前にある文字が,タブや半角空白だけの場合,注釈行となります。
空行
  • 空行を入力できます。
  • タブや半角空白だけで構成されている行は,空行と見なされます。

(2) ユーザースクリプトの記述項目

次の表にユーザースクリプトの記述項目を示します。

表4-68 ユーザースクリプトの記述項目

項目名項目の意味および指定する値複数指定※1省略

LOCAL_BACKUP

ローカルバックアップを実行するかどうかを指定します。
  • ローカルバックアップを実行する場合は,YESを指定してください。
  • ローカルバックアップを実行しない場合は,NOを指定してください。
  • ローカルバックアップの指定は,ほかの項目の前に記述してください。
  • 値は半角文字で指定します。
  • SQL Serverデータベースの場合,基本コマンドでユーザースクリプトファイルを使用するときは,YESまたはNOを指定できます。拡張コマンドでユーザースクリプトファイルを使用するときは,YESを指定してください。NOを指定するとエラーとなります。
  • SQL Serverデータベース以外の場合は,YESを指定してください。NOを指定してもYESと見なされます。
××

[PRE_PROC]※2※11

ユーザー処理セクション:「ユーザー前処理」の先頭を示します。このセクションでは,バックアップ前に実行するコマンドおよびスクリプトを定義します。×※3

[RESYNC_PROC]※2※9

ユーザー処理セクション:「ペア再同期ユーザー処理」の先頭を示します。このセクションでは,ペア再同期ユーザー処理で実行するコマンドを定義します。×※3

[SPLIT_PROC]※2※9

ユーザー処理セクション:「ペア分割ユーザー処理」の先頭を示します。このセクションでは,ペア分割ユーザー処理で実行するコマンドを定義します。×※3

[FINISH_PROC]※2※9

ユーザー処理セクション:「終了ユーザー処理」の先頭を示します。このセクションでは,終了ユーザー処理で実行するコマンドを定義します。×※3

[POST_PROC]※2※11

ユーザー処理セクション:「ユーザー後処理」の先頭を示します。このセクションでは,バックアップ後に実行するコマンドおよびスクリプトを定義します。×※3

[CMD]

コマンド定義セクションの先頭を示します。
  • ユーザー処理セクション内で指定する必要があります。
  • コマンド定義を複数指定した場合,記述した順番に一つずつ実行されます。
  • TIMEOUT=NOWAIT以外を指定した場合,実行したコマンドが終了またはタイムアウトするのを待ってから,次のコマンドが実行されます(一度に実行されるコマンドは常に一つとなります)。
  • TIMEOUT=NOWAITを指定した場合,コマンドの終了を待たないで後続のコマンドを実行します。
  • コマンド定義セクション内で指定した項目は,該当するコマンド定義セクション内に対してだけ有効で,ほかのコマンド定義セクションには影響を与えません。
※4※3

CMDLINE※5

実行させるコマンドラインを指定します。
  • オプションを指定する場合,コマンド名とオプションを半角空白文字で区切って指定してください。
  • コマンド定義セクション一つにつき,コマンドラインを必ず一つ指定してください。
  • コマンドラインは2,048文字まで指定できます。※6
  • 空白を含むパス名またはファイル名は,引用符(")で囲んでください。
  • コマンド名およびファイル名は絶対パスで指定してください。ただし,引用符(")が入れ子になるような指定はできません。
  • コマンド名およびコマンドのパス名に環境変数を含めないでください(例えば,「%SystemRoot%¥notepad.exe」のようには指定しないでください)。
  • dirコマンドなどのシェルコマンドを使いたい場合はcmd.exeの子プロセスとして実行させてください。例えば,「C:¥WINNT¥System32¥cmd.exe /c dir」と指定します。
  • リダイレクトする場合は「C:¥WINNT¥System32¥cmd.exe /c」を必ず指定してください。
  • Protection Managerのリソースが競合を起こすようなコマンドの指定をしないでください。例えば,-rcオプションと-scriptオプションを指定してリモートサイトへのバックアップを実行する場合,同一のリモートサイトへのコピーペアを操作するようなスクリプトを指定しないでください。
  • Protection Managerコマンドを指定できるのは[POST_PROC]セクションと,バックアップサーバ上で実行するスクリプトの[PRE_PROC]セクションだけです。それ以外のセクションでは指定したコマンドがエラーとなります。
  • ファイルの拡張子に「.exe」,「.com」,「.cmd」,または「.bat」を指定した場合,コマンドラインをそのまま実行します。そのほかの拡張子を指定した場合は,拡張子(ファイルタイプ)に関連づけられているアプリケーションを使用してコマンドラインを実行します。※10
  • 画面やメッセージが表示されて入力待ちになるような実行ファイルを指定しないでください。
××

ENV※5

指定したコマンドを実行する時の環境変数を指定します。
  • 1行に一つの環境変数を定義してください。
  • 環境変数名と値の間は半角イコール(=)で区切ります。
  • 一つの環境変数定義当たり最大2,048文字まで指定できます。※6
  • 環境変数の値を省略すると,その環境変数を削除します。例えば,「ENV=ABC=」と指定すると環境変数ABCを削除します。
  • ENVの設定は該当するコマンドについてだけ有効です。設定内容は後続のコマンドに引き継がれませんのでご注意ください。
  • 「%」を使用した環境変数を指定しても,内容は展開されません。例えば,「ENV=ABC=%PATH%」のように指定した場合,環境変数ABCに「%PATH%」という文字列が設定されます。
※4

END_CODE※5

実行したコマンドの戻り値への対応方法を指定します。次の値が指定できます。
TERMINATE_NZ(デフォルト値)
0以外の戻り値が返るとスクリプトの処理を終了します。
IGNORE
戻り値に関係なく処理を継続します。
エラーしきい値
0~255の数値を指定します。指定された数値より大きい戻り値が返ると,スクリプトの処理を終了します。
  • 値は半角文字で指定します。
  • 実行したコマンドがタイムアウトした場合,TERMINATE_NZ指定,およびエラーしきい値指定では処理を終了し,IGNORE指定では,処理を継続します。
×

TIMEOUT※5

コマンドのタイムアウト値を指定します。次の値が指定できます。
タイムアウト値(単位は秒)※8
・指定できる範囲は0~86400の整数です。
・半角数字で指定してください。
0を指定するとタイムアウトしません。
NOWAIT
コマンドの起動が成功すると,完了を待ちません。このとき,コマンドの戻り値は0になります。
コマンドの標準出力と標準エラー出力は,Protection Managerの標準出力ログファイルに出力されません。
  • デフォルト値は60010分)です。
×

LOCATION※5

指定したコマンドの実行サーバを指定します。次の値が指定できます。
LOCAL(デフォルト値)
指定したコマンドをローカルサーバで実行します。
REMOTE
指定したコマンドをバックアップコマンドの-sオプションで指定したバックアップサーバで実行します。
  • [RESYNC_PROC][SPLIT_PROC],および[FINISH_PROC]セクションの場合,設定値は無効(LOCAL固定)となります。
×

PARENT_STAT※5

親コマンド(スクリプトを呼び出すコマンド)の実行状態※7によってスクリプトを実行するかどうかを指定します。次の値が指定できます。
NORMAL(デフォルト値)
親コマンドの実行状態が正常な場合だけ,CMDLINEで指定したコマンドを実行します。
ERROR
親コマンドの実行状態がエラーの場合だけ,CMDLINEで指定したコマンドを実行します。親コマンドの実行結果は,スクリプトの結果に関係なくエラーとなります。
ANY
常にCMDLINEで指定したコマンドを実行します。親コマンドの実行状態がエラーの場合,親コマンドの実行結果は,スクリプトの結果に関係なくエラーとなります。
  • [RESYNC_PROC][SPLIT_PROC],および[FINISH_PROC]セクションの場合,設定値は無効(NORMAL固定)となります。
  • [PRE_PROC]セクションではANYまたはNORMALを指定してください。ERRORを指定すると,[PRE_PROC]セクションのコマンドが実行されません。
×
(凡例)
○:できる。
×:できない。
注※1
「複数指定できない」とは,コマンド定義セクション中([CMD]から[CMD]の間)で複数回指定できないことを意味します。
注※2
[PRE_PROC][RESYNC_PROC][SPLIT_PROC][FINISH_PROC][POST_PROC]の定義の並びは順不同です。
注※3
該当するユーザー処理セクション内で実行するコマンドが無ければ省略できます。
注※4
この項目はユーザースクリプトファイル中に複数回繰り返して使用できます。
注※5
[CMD]項目内のCMDLINEENVEND_CODETIMEOUTPARENT_STATLOCATIONの定義の並びは順不同です。
注※6
文字として2,048文字ということであり,全角文字,半角文字は区別しません。
注※7
同じユーザー処理セクション内では,先行のコマンドの結果がエラーでも,親コマンドの実行状態は変更されません。CMDLINEで指定するコマンド自身のエラー処理をする場合は,エラー処理を含んだスクリプトをCMDLINEで指定してください。
注※8
TIMEOUT=0と指定した場合,CMDLINEで指定したコマンドが終了しないかぎり親コマンドも終了しないため,タイムアウト値の設定にはご注意ください。
注※9
[RESYNC_PROC][SPLIT_PROC][FINISH_PROC]は,SQL Serverデータベースのバックアップだけで有効な指定です。SQL Serverデータベース以外の場合は指定しても無視されます。
注※10
拡張子(ファイルタイプ)に関連づけられているアプリケーションファイル名に空白文字が含まれているかどうかをエクスプローラのファイルタイプの編集で確認してください。空白文字が含まれている場合,エクスプローラのファイルタイプの編集で,アプリケーションファイル名を「"」で囲んでください。例えば,「C:¥Program Files¥abc¥abc.exe %1」の場合,「"C:¥Program Files¥abc¥abc.exe" %1」に変更します。
注※11
指定できるコマンドについては「(5) ユーザー前処理およびユーザー後処理で指定できるコマンド」を参照してください。

(3) スクリプト環境変数

次の表にユーザー後処理セクションのコマンドで参照できるProtection Managerのスクリプト環境変数を示します。スクリプト環境変数は,ローカルサーバ,バックアップサーバで参照できます。

表4-69 スクリプト環境変数

環境変数内容備考
DRMENV_L_BACKUPIDローカルサーバのバックアップID次の場合に有効となります。
  • コマンドがローカルサーバで実行されている。
  • 親コマンドの実行状態が正常である。
DRMENV_R_BACKUPIDバックアップサーバのバックアップID次の場合に有効となります。
  • コマンドがバックアップサーバで実行されている。
  • 親コマンドの実行状態が正常である。
  • バックアップコマンドに-sオプション,および-auto_importオプションが指定されている。
DRMENV_COMMENTバックアップコメントバックアップコマンドの-commentオプションで指定した値
DRMENV_CMD_STATコマンド実行状態NORMAL:正常
ERROR:エラー

(4) コマンドの実行権限

ローカルサーバで実行するコマンドは,親コマンドの実行権限を引き継ぎます。また,バックアップサーバで実行するコマンドは,Protection Managerサービスの起動ユーザーの実行権限を引き継ぎます。

(5) ユーザー前処理およびユーザー後処理で指定できるコマンド

次の表にユーザー前処理セクション([PRE_PROC]),およびユーザー後処理セクション([POST_PROC])で指定できるコマンドを示します。指定できるコマンドは,基本コマンドだけです。サーバによって,指定できるコマンドが異なります。

注意事項

記載されているコマンド以外は指定しないでください。記載されているコマンド以外を指定した場合,システムが正常に動作しなくなるおそれがあります。

表4-70 ユーザー前処理およびユーザー後処理で指定できるコマンド

コマンド名[PRE_PROC][POST_PROC]
LOCATION=
LOCAL
LOCATION=
REMOTE
LOCATION=
LOCAL
LOCATION=
REMOTE
ファイルシステム系コマンドdrmfscat
drmfsdisplay※1××
共通系コマンドdrmcgctl
drmhostinfo
テープ系コマンドdrmmount×※2×
drmtapecat××
drmumount××
SQL Serverデータベース系コマンドdrmsqlcat
drmsqldisplay※1×※1×
drmsqlrestore×××※3
Exchange Serverデータベース系コマンドdrmexgcat
drmexgdisplay※1×※1×
drmexgverify×××
(凡例)
○:指定できる。
×:指定できない。
LOCATION=LOCAL:ファイルサーバまたはデータベースサーバ
LOCATION=REMOTE:バックアップサーバ
注※1
-refreshオプションは使用できません。
注※2
マウントした副ボリュームは,必ず[PRE_PROC]内でアンマウントしてください。
注※3
異なるインスタンスへリストアする場合だけ指定できます。その場合,-no_resyncオプションを指定してください。