Just another IT site ※IT系の記事は当方環境での実施内容となるため実施する場合は自己責任でお願いいたします。At Your Own Risk!! TURN BACK WHILE YOU CAN
PR

【JP1/AJS】の退避・回復方法を比較|ajsprint/ajsdefine と ajsbackup/ajsrestore の違い

※IT系の記事は当方環境での実施内容となるため実施する場合は自己責任でお願いいたします。スクリプトはAI生成のものも多いのでコピー&ペーストの際は文字コードに注意ください!

JP1/AJS3でジョブネットやジョブの定義を退避・回復する場合、代表的な方法として次の2種類があります。

ajsprint + ajsdefine

と、

ajsbackup + ajsrestore

です。

どちらもジョブネットやジョブなどのユニット定義情報を退避・回復するために使用できますが、仕組みや向いている用途には違いがあります。

特に重要なのは、

同じサーバー上での退避・回復を重視するのか

それとも、

定義をファイルとして保管したり、別サーバーへ移行したりしたいのか

という点です。

この記事では、両方式の基本的な使い方と違い、実運用ではどちらを選べばよいのかを整理します。


JP1/AJS3には2種類の退避・回復方法がある

JP1/AJS3の公式マニュアルでは、ユニット定義情報の退避・回復方法として次の2種類が示されています。

1. ajsprint / ajsdefine

2. ajsbackup / ajsrestore

ajsprintajsdefine は、ユニット定義情報を任意のファイルへ出力して、そのファイルから再定義する方式です。

一方、ajsbackupajsrestore は、JP1/AJS3の「退避ボックス」に退避ファイルを保存し、その退避情報を使用して回復する方式です。

概念的には、

ajsprint
   ↓
定義ファイル
   ↓
ajsdefine

に対して、

ajsbackup
   ↓
退避ボックス
   ↓
退避ファイル
   ↓
ajsrestore

という違いです。


まず重要:どちらも実行結果はバックアップしない

ここは最初に理解しておく必要があります。

ajsprintajsbackup で退避されるのは、基本的に、

ジョブネットやジョブなどの定義情報

です。

例えば、

  • ジョブネット名
  • ジョブ定義
  • 実行ファイル
  • パラメーター
  • 実行エージェント
  • スケジュール定義

などです。

一方、

  • 過去の実行結果
  • ジョブ実行履歴
  • 実行中の状態

などを含めたシステム全体のバックアップではありません。

日立の公式マニュアルでも、ajsprintajsbackup、JP1/AJS3 – Viewによる退避ではユニットの定義情報のみが対象であり、実行結果は退避されないと明記されています。

実行結果やデータベースを含めた完全なバックアップが必要な場合は、JP1/AJS3のバックアップ・リカバリー機能を別途検討する必要があります。例えば組み込みDBには jajs_dbbackup / jajs_dbrestore を使用する方法があります。


方法1:ajsprint / ajsdefine を使う

まず、比較的シンプルなのが、

ajsprint
ajsdefine

を使用する方法です。

スポンサーリンク
バッチ処理の自動化スキルは市場価値が高いです。今の自分の単価を調べてみませんか?
顧客常駐はもう嫌だ!社内SEへ転職するなら【社内SE転職ナビ】
Cursor・Claude Code・Codex AIスキルを学ぶなら
環境構築不要!AIエージェント開発を非エンジニアでも即実践【AI Agent Camp】

ajsprintとは

ajsprint は、JP1/AJS3に登録されているユニット定義をテキスト形式で出力するコマンドです。

例えば、

ajsprint -a /業務/DAILY_JOB

のように実行します。

-a を指定すると、ajsdefine で再定義できる形式でユニット定義を出力できます。

そのため、実際には標準出力をファイルへリダイレクトして保存します。

ajsprint -a /業務/DAILY_JOB > DAILY_JOB.def

これで、

DAILY_JOB.def

という定義ファイルが作成されます。

公式資料でも、ajsbackup が内部的に作成する退避ファイルは、ajsprint -a で出力した形の情報として格納されると説明されています。


ajsprintで退避するイメージ

例えば次のジョブネットがあるとします。

/業務
 └─ DAILY_JOB
      ├─ JOB01
      ├─ JOB02
      └─ JOB03

これを退避します。

ajsprint -a /業務/DAILY_JOB > DAILY_JOB_20260909.def

結果として、

DAILY_JOB_20260909.def

という普通のファイルとして保存できます。

そのため、

/backup/jp1/

や、

/mnt/backup/

など、任意のバックアップ領域へ保存できます。


ajsdefineで回復する

回復するときは、ajsprint で作成したユニット定義ファイルを ajsdefine に指定します。

概念的には、

ajsdefine DAILY_JOB_20260909.def

のように実行します。

ajsdefine はユニット定義ファイルを読み込み、JP1/AJS3へユニットを定義するためのコマンドです。公式マニュアルでも、ユニット定義ファイルを作成して ajsdefine を実行することでユニットを定義できると説明されています。

なお、同名ユニットがすでに存在する場合は、そのままではエラーになるケースがあります。

必要に応じて、

  • 既存ユニットを削除する
  • -f
  • -i

などのオプションを使う

といった対応が必要になります。公式メッセージ資料でも、ajsdefineajsrestore で同名ユニットが存在する場合には、削除後の再実行または -f / -i の指定が案内されています。


ajsprint / ajsdefine の大きなメリット

この方式の大きな特徴は、

バックアップデータが普通のファイルになる

ことです。

例えば、

DAILY_JOB.def
MONTHLY_JOB.def
BILLING_JOB.def

のように管理できます。

そのため、

  • ファイルサーバーへ保存
  • バックアップソフトで保存
  • 日付付きファイルとして世代管理
  • Gitなどでバージョン管理
  • 別サーバーへ転送

といった運用がしやすくなります。


別サーバーへ移行できる

ajsprint / ajsdefine の非常に重要な特徴が、

別サーバーへの移行に利用できる

ことです。

日立の公式マニュアルでは、ajsbackup で退避したユニットは同一サーバーでのみ回復可能とされています。

別サーバーへユニットを移行する場合は、

移行元
 ↓
ajsprint
 ↓
定義ファイル
 ↓
ファイル転送
 ↓
移行先
 ↓
ajsdefine

を使用するよう明記されています。

つまり、サーバー更改や環境移行を考える場合、

ajsprint / ajsdefine の方が重要

になります。


ajsprint / ajsdefine の運用例

例えば、毎日ジョブネット定義をバックアップするとします。

mkdir -p /backup/jp1

そして、

ajsprint -a /業務/DAILY_JOB \
  > /backup/jp1/DAILY_JOB_20260909.def

翌日は、

DAILY_JOB_20260910.def

というように保存します。

これなら、

20260907
20260908
20260909

と世代管理できます。

また、テキスト形式なので、

diff DAILY_JOB_20260908.def DAILY_JOB_20260909.def

とすれば、変更点を比較することもできます。

これは ajsprint 方式の大きなメリットです。


方法2:ajsbackup / ajsrestore を使う

次に、

ajsbackup
ajsrestore

を使う方法です。

こちらはJP1/AJS3が用意している「退避ボックス」という仕組みを使用します。


ajsbackupとは

ajsbackup は、指定したユニットを退避ボックスへ保存するコマンドです。

例えば、

ajsbackup -m -n BACKUP /UNIT

とすると、

BACKUP

という新しい退避ボックスを作成し、

/UNIT

をそこへ退避します。

この例は公式マニュアルにも掲載されています。


退避ボックスとは

退避ボックスは、退避ファイルをまとめて保存するディレクトリです。

イメージとしては、

退避情報ディレクトリ
   │
   └─ BACKUP
       ├─ .ajsbkup
       ├─ 0001
       ├─ 0002
       └─ 0003

のようになります。

0001 から 1024 の番号が退避ファイル名として使用されます。

一つの退避ボックスには最大1,024個の退避ファイルを作成できます。


ajsbackupのメリット

例えば、

会計システム

に関連する複数のジョブネットを変更するとします。

その場合、

ACCOUNT_BACKUP

という退避ボックスを作成し、

JOBNET_A
JOBNET_B
JOBNET_C

をまとめて退避できます。

つまり、

ACCOUNT_BACKUP
   ├─ JOBNET_A
   ├─ JOBNET_B
   └─ JOBNET_C

という単位で管理できます。

公式マニュアルでも、退避ボックスを使用することで複数のユニットをまとめて管理できる点が特徴として説明されています。


ajsrestoreで回復する

退避したユニットを回復する場合は、

ajsrestore

を使用します。

例えば、

ajsrestore -t -n BACKUP

とすると、まず BACKUP 退避ボックスの内容を確認できます。

そのうえで対象の退避ファイルを指定して回復します。

ajsrestore を使う場合は、JP1/AJS3が管理している退避情報をそのまま利用できるため、同一サーバー内での「変更前へ戻す」用途には分かりやすい方式です。


例えばジョブネット変更前に退避する

本番環境で、

/業務/DAILY_JOB

を変更するとします。

変更前に、

ajsbackup -m -n BEFORE_CHANGE /業務/DAILY_JOB

としておきます。

変更後に問題が発生した場合、

BEFORE_CHANGE

から ajsrestore を使って戻せます。

このような、

「変更作業前に一時的に退避して、問題があれば戻す」

という用途では、ajsbackup / ajsrestore が非常に分かりやすいです。


両方式を比較

大まかな違いを整理すると次のようになります。

項目 ajsprint / ajsdefine ajsbackup / ajsrestore
退避先 任意のファイル 退避ボックス
データ形式 テキスト形式のユニット定義 JP1管理の退避ファイル
定義情報
実行結果 × ×
同一サーバー復旧
別サーバーへの移行 ×
複数ユニットの一括管理 手動管理 退避ボックスで管理しやすい
ファイル名を自由に付ける ×(0001~1024)
Git管理 しやすい 向かない
diffによる差分確認 しやすい 向かない
JP1/AJS3 – Viewとの連携 基本CLI 可能
作業前の一時退避 特に向いている
サーバー更改・移行 向いている 向かない

一番大きな違いは「別サーバーへ持っていけるか」

両者を比較すると、一番重要な違いの一つがこれです。

ajsprint / ajsdefine
→ 別サーバーでも利用可能

ajsbackup / ajsrestore
→ 基本的に退避元と同一サーバーで回復

公式マニュアルにも、退避ボックス方式で退避したユニットは同一サーバーでだけ回復でき、別サーバーへ回復する場合は ajsprint / ajsdefine を使用するよう明記されています。

そのため、

サーバー更改

本番→検証環境への定義移行

旧サーバー→新サーバー

DR環境への定義展開

などでは、ajsprint / ajsdefine の方が使いやすくなります。


ajsbackupの実体もajsprintに近い

興味深いのは、ajsbackup で作られる退避ファイルです。

公式マニュアルでは、退避ファイルは、

ajsprint -a で出力した形式

で格納されると説明されています。

つまり内部的な考え方としては、

ユニット定義
 ↓
ajsprint -a相当
 ↓
退避ファイル

です。

違いは、

自分でファイル管理する

のか、

JP1/AJS3の退避ボックス管理に任せる

のか、と考えると分かりやすいでしょう。


では、どちらを使うべきか

用途によって選ぶのがおすすめです。

作業前の退避なら ajsbackup

例えば、

本番ジョブネットを修正する

という作業なら、

ajsbackup -m -n BEFORE_CHANGE /業務/DAILY_JOB

としておけば、

「問題があれば元に戻す」

という操作が分かりやすくなります。

つまり、

短期的な退避・回復

には ajsbackup / ajsrestore が向いています。


長期バックアップなら ajsprint

一方、

毎日定義を保存する

1年間保存する

変更履歴を管理する

別サーバーへ保管する

といった用途なら、

ajsprint -a /業務/DAILY_JOB > DAILY_JOB_20260909.def

のようにファイルとして保存する方が管理しやすいでしょう。

特に、

diff

で変更前後を比較できる点は非常に便利です。


Gitで管理するならajsprint

ジョブネット定義の変更履歴をGitで管理したい場合にも ajsprint が向いています。

例えば、

jp1-definition/
 ├─ DAILY_JOB.def
 ├─ MONTHLY_JOB.def
 └─ BILLING_JOB.def

としてGitリポジトリへ登録します。

すると、

誰が

いつ

どこを変更したか

を履歴として管理できます。

JP1/AJS3 – Viewだけで定義を管理している環境でも、定期的に ajsprint を取得しておけば、定義変更の監査やトラブル調査に役立ちます。


両方使う方法もおすすめ

実際の運用では、どちらか一方に統一する必要はありません。

例えば、

日常の変更作業
 ↓
ajsbackup

長期保存
 ↓
ajsprint

と使い分ける方法があります。

例えば本番変更前には、

ajsbackup -m -n CHG_20260909 /業務/DAILY_JOB

を実行します。

さらに長期バックアップとして、

ajsprint -a /業務/DAILY_JOB \
  > /backup/jp1/DAILY_JOB_20260909.def

も取得します。

これなら、

短期回復
→ ajsrestore

長期回復
→ ajsdefine

別サーバー移行
→ ajsdefine

という柔軟な運用ができます。


登録済みジョブネットを回復するときの注意

重要な注意点があります。

実行登録されているジョブネットを退避した場合、

ajsprint
ajsbackup

のどちらを使っていても、

ajsdefine
ajsrestore

で回復すると、ジョブネットは登録解除状態になります。

これは公式マニュアルにも記載されています。

そのため、

ジョブネット回復
 ↓
終わり

ではなく、

ジョブネット回復
 ↓
定義確認
 ↓
必要に応じて再登録

までを運用手順に含めておく必要があります。


文字コードにも注意

ajsdefine で定義ファイルを読み込む場合、ファイルの文字コードにも注意が必要です。

公式マニュアルでは、コマンド引数として指定するファイル内容は、

AJSCHARCODE

環境設定パラメーターで指定されている文字コードに合わせる必要があるとされています。

別サーバーへコピーした際に、

UTF-8

Shift_JIS

EUC-JP

などの文字コードが意図せず変更されると、定義エラーなどの原因になる可能性があります。


巨大な定義ファイルにも注意

大量のジョブネットを一つの定義ファイルに出力する場合も注意が必要です。

公式マニュアルでは、ajsdefine に指定するユニット定義ファイルが大きすぎてメモリー不足になる場合、

200MB以下になるようファイルを分割する

ことが案内されています。

通常のジョブネットで問題になるケースは多くありませんが、全ユニットを一括出力するような運用では覚えておいた方がよいでしょう。


ネストジョブネットのスケジュールにも注意

さらに少し高度な注意点として、ネストジョブネットのスケジュール定義があります。

特定条件では、

退避元

と、

回復後

で有効になるスケジュール定義が異なる場合があります。

これは、

ajsbackup
ajsprint

のどちらにも関係します。

公式マニュアルでは、環境設定パラメーター、

AJSPRINTNETSCHPRF

を適切に設定することで、退避元と回復先のユニット定義情報を一致させる方法が案内されています。

古いバージョンから長期間アップグレードして使用している環境では、一度確認しておく価値があります。


おすすめ運用

個人的には、次のような使い分けが分かりやすいと思います。

【本番変更前】

ajsbackup
 ↓
退避ボックス作成
 ↓
変更作業
 ↓
問題あり
 ↓
ajsrestore

一方、定期バックアップは、

【毎日・毎週】

ajsprint
 ↓
日付付き定義ファイル
 ↓
バックアップサーバー
 ↓
必要ならGit管理

とします。

さらにサーバー更改時には、

旧JP1/AJS3
 ↓
ajsprint
 ↓
定義ファイル
 ↓
新JP1/AJS3
 ↓
ajsdefine

という形です。


結局どちらがおすすめ?

目的別にまとめると、

ちょっと変更する前に戻せるようにしたい
→ ajsbackup / ajsrestore
定義を長期間保存したい
→ ajsprint / ajsdefine
定義変更前後をdiffで比較したい
→ ajsprint / ajsdefine
複数ユニットを退避ボックス単位で管理したい
→ ajsbackup / ajsrestore
別サーバーへ移行したい
→ ajsprint / ajsdefine

と考えると分かりやすいでしょう。


まとめ

JP1/AJS3のユニット定義には、

ajsprint / ajsdefine

と、

ajsbackup / ajsrestore

という2種類の退避・回復方法があります。

どちらも基本的には、

ジョブネットやジョブの定義情報を退避する仕組み

であり、実行結果までバックアップするものではありません。

最大の違いは管理方法です。

ajsprint / ajsdefine
=定義ファイルとして自分で管理
ajsbackup / ajsrestore
=JP1/AJS3の退避ボックスとして管理

という違いがあります。

さらに重要なのが、

ajsprint / ajsdefine
→ 別サーバーへの移行可能

ajsbackup / ajsrestore
→ 同一サーバーでの回復を前提

という点です。

そのため実運用では、

日常の変更前退避には ajsbackup / ajsrestore

定期バックアップ、変更履歴管理、サーバー移行には ajsprint / ajsdefine

という使い分けが分かりやすいでしょう。

そして重要なジョブネットなら、どちらか一方だけにするのではなく、

変更直前
→ ajsbackup

長期保管
→ ajsprint

と両方を組み合わせる方法も有効です。

JP1/AJS3の退避・回復は、単に「バックアップを取る」だけではなく、

何のために退避するのか

を考えて方式を選ぶことが重要です。

タイトルとURLをコピーしました