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

【JP1/AJS】退避ボックスのディレクトリをOSコマンドで先に削除してしまった場合の危険性と対処の考え方

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

JP1/AJS3の退避ボックスを整理していると、

「もう不要だから、このディレクトリごと消してしまえばいいのでは?」

と思うことがあります。

例えばLinux/UNIX環境で、

rm -rf /var/opt/jp1ajs2/backup/schedule/BACKUP01

のように、退避ボックス用ディレクトリをOSコマンドで直接削除するケースです。

しかし、これは注意が必要です。

JP1/AJS3の退避ボックスは、単なる「ファイル置き場」ではありません。

退避ファイルと、それを管理するための情報がセットで存在しています。

そのため、

本来 ajsbkudel で削除すべき退避情報を、先にOS側からディレクトリごと消してしまうと、JP1/AJS3から見た管理状態と、実際のファイル状態が食い違う可能性があります。

この記事では、

  • なぜ先にディレクトリ削除すると危険なのか
  • どんな不整合が起きる可能性があるのか
  • その後に ajsbkudel を実行したらどうなる可能性があるのか
  • やってはいけない復旧方法
  • 実際に確認すべきポイント
  • 再発防止策

を詳しく整理します。


まず結論

退避ボックスを完全に削除したい場合、本来の順序は次のように考えるのが安全です。

JP1/AJS側で削除
    ↓
ajsbkudel -n BACKUP01
    ↓
OS上に空ディレクトリが残っていれば確認
    ↓
必要ならrmdir

つまり、

ajsbkudel -n BACKUP01

を先に実行します。

その後に、残ったディレクトリが空で不要なら、

rmdir /var/opt/jp1ajs2/backup/schedule/BACKUP01

とします。

逆に、

OS側でディレクトリ削除
    ↓
JP1/AJS側の削除処理

という逆順にすると、状態によっては不整合やエラーにつながる可能性があります。


退避ボックスは単なるフォルダではない

JP1/AJS3の退避ボックス配下には、例えば次のようなファイルがあります。

BACKUP01/
├─ .ajsbkup
├─ 0001
├─ 0002
├─ 0003
└─ 0004

ここで、

0001
0002
0003
0004

は退避ファイルです。

そして、

.ajsbkup

は退避情報管理ファイルです。

つまり、JP1/AJS3の退避機能は、

退避ファイル
+
退避情報管理ファイル

の組み合わせで管理されています。

このため、OS上からディレクトリごと消してしまうというのは、

退避データだけでなく、その管理情報も一気に破棄してしまう操作

になります。


何が問題なのか

一番大きな問題は、

JP1/AJS3が想定している削除手順を通らないこと

です。

本来 ajsbkudel を使用すれば、JP1/AJS3は退避ボックスや退避ファイルを「削除処理の対象」として認識し、製品仕様に沿って処理します。

しかし、

rm -rf BACKUP01

のようにOS側から消してしまうと、JP1/AJS3はその削除処理に関与しません。

その結果、

JP1/AJS3が認識している状態

と、

OS上の実体

が一致しない可能性があります。


問題1:ajsrestoreで参照できなくなる

例えば削除前には、

ajsrestore -t -n BACKUP01

で内容を確認できていたとします。

しかし、OS上から、

rm -rf BACKUP01

を実行すると、当然ながら退避ファイルも管理ファイルもなくなります。

その後、

ajsrestore -t -n BACKUP01

を実行しても、

  • 退避ボックスが存在しない
  • 管理情報を読めない
  • 対象退避ファイルを取得できない

といった状態になる可能性があります。

つまり、

回復可能だったバックアップを自分で破壊してしまう

ことになります。


問題2:ajsbkudelが正常に完了しない可能性

次に考えられるのが、

「先にディレクトリを消してしまったけれど、そのあと ajsbkudel を実行すれば帳尻が合うのでは?」

という考えです。

例えば、

rm -rf /var/opt/jp1ajs2/backup/schedule/BACKUP01

を実行したあと、

ajsbkudel -n BACKUP01

を実行するケースです。

しかしこのとき、JP1/AJS3が必要とする退避情報管理ファイルや退避ファイルがすでに存在しません。

そのため、

  • 対象退避ボックスが見つからない
  • 退避情報管理ファイルを読めない
  • 削除対象を認識できない
  • エラー終了する

といった可能性があります。

つまり、

「後からJP1コマンドを実行すれば元に戻る」とは限りません。


問題3:一部だけ削除した場合はさらに厄介

ディレクトリごと消すよりもさらに厄介なのが、

rm 0002

のように、一部の退避ファイルだけを直接削除してしまった場合です。

例えば元の状態が、

BACKUP01/
├─ .ajsbkup
├─ 0001
├─ 0002
└─ 0003

だったとします。

ここで、

rm BACKUP01/0002

とすると、

管理情報上
→ 0002が存在している

OS上
→ 0002が存在しない

という状態になる可能性があります。

この状態では、

管理情報
≠
実ファイル

となります。

こうした不整合は、ディレクトリ全削除よりも分かりにくいことがあります。

見た目では、

0001
0003

が残っているため、一見正常そうに見えるからです。


問題4:.ajsbkupだけ残る、または消えるケース

さらに、

.ajsbkupだけ残る

あるいは逆に、

.ajsbkupだけ消える

という状態も考えられます。

例えば、

退避ファイルはある
管理ファイルがない

という状態です。

この場合、物理ファイルが存在していても、JP1/AJS3がその内容を正しく認識できるとは限りません。

逆に、

管理情報はある
実体ファイルがない

という状態も問題です。

つまり重要なのは、

退避ボックスはディレクトリの中身全体で一つの管理単位

と考えることです。


問題5:誤って別の退避ボックスまで消す危険

rm -rf の怖いところは、JP1固有の問題だけではありません。

単純にOS操作として危険です。

例えば、

rm -rf /var/opt/jp1ajs2/backup/schedule/BACKUP01

のつもりが、

rm -rf /var/opt/jp1ajs2/backup/schedule/*

とすれば、退避ボックス全部を削除する可能性があります。

さらに、パス指定を間違えると、もっと広範囲を消す危険もあります。

そのため、

JP1/AJSの管理領域
+
rm -rf

という組み合わせは、できるだけ避けた方が安全です。


問題6:削除したあとに「何が消えたか分からない」

ajsbkudel を使う場合は、

どのボックスを削除したか
どの退避ファイルを削除したか

がコマンドとして明確です。

例えば、

ajsbkudel -n BACKUP01 0001

なら、

BACKUP01の0001を削除

と分かります。

一方、

rm -rf BACKUP01

では、

  • .ajsbkup
  • 0001
  • 0002
  • 0003
  • その他ファイル

を一気に消します。

あとから、

「どの退避番号があったか」

「何が回復できたはずなのか」

を確認しようとしても、情報がなくなっています。


問題7:復旧に必要な情報そのものを失う

災害時や設定変更時に、

変更前へ戻したい

となったとき、

退避ボックスは非常に重要です。

しかし、その退避ボックス自体を誤ってOS操作で削除してしまえば、

本来の復旧手段そのものを失う

ことになります。

例えば、

本番ジョブネットを修正
↓
問題発生
↓
退避ボックスから戻そうとする
↓
実は掃除のつもりで削除済み

という事故です。

そのため、退避ボックスの削除は単なるファイル整理ではなく、

復旧手段を破棄する操作

と考えた方がよいです。


では、誤って先にディレクトリを消したらどうするか

ここで重要なのは、

慌てて適当なファイルや空ディレクトリを作り直さないこと

です。

例えば、

mkdir BACKUP01

として、

「ディレクトリ名だけ戻せばよいのでは」

と考えるのは危険です。

なぜなら、

空のBACKUP01

を作っても、

.ajsbkup
0001
0002
...

は戻らないからです。

つまり見た目だけは元に戻りますが、退避情報としては別物です。


空ディレクトリを作り直しても復旧にはならない

例えば、

mkdir /var/opt/jp1ajs2/backup/schedule/BACKUP01

としただけでは、

BACKUP01/

という空ディレクトリができるだけです。

これは、

元の退避ボックス

ではありません。

元の退避ボックスは、

BACKUP01/
├─ .ajsbkup
├─ 0001
├─ 0002
└─ 0003

だったからです。

したがって、

ディレクトリ名を再作成することと、退避情報を復旧することは別です。


バックアップがあるならOSバックアップから戻す選択肢

もし、退避情報ディレクトリ自体を、

  • ファイルシステムバックアップ
  • スナップショット
  • VMバックアップ
  • ストレージバックアップ

で保存しているなら、そこから復元できる可能性があります。

ただしこの場合も、

対象JP1/AJS3環境の状態と整合性を確認してから戻す必要があります。

単純にバックアップから、

BACKUP01

だけコピーすれば必ず正常になるとは限りません。

運用条件やJP1/AJS3のバージョン、稼働状態によって確認が必要です。


まず確認すべきこと

誤って削除してしまった場合は、最低でも次を確認します。

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

1. 何を削除したか

例えば、

退避ボックス全体

なのか、

0001だけ

なのか、

.ajsbkupだけ

なのかを確認します。


2. いつ削除したか

削除前後で、

  • JP1/AJS3の操作
  • バックアップ取得
  • リストア
  • ジョブネット変更

などが行われていないか確認します。


3. ajsrestoreでどう見えるか

ajsrestore -t -n BACKUP01

を実行して、JP1/AJS3からどう見えているか確認します。

エラー内容も重要です。


4. 実ファイルを確認

例えば、

ls -la /var/opt/jp1ajs2/backup/schedule/BACKUP01

で、

.ajsbkup
0001
0002

などが残っているか確認します。


5. JP1/AJS3ログ・メッセージを確認

エラーが出ている場合は、メッセージIDを控えます。

JP1製品では、

KAVSxxxx

などのメッセージIDが表示されることがあります。

これを公式マニュアルで確認します。


「消してしまったからajsbkudelを実行」は慎重に

例えば、

rm -rf BACKUP01

を実行したあと、

ajsbkudel -n BACKUP01

とすれば綺麗になる、と考えるのは危険です。

削除対象の情報そのものがなくなっているため、

ajsbkudelが何を見て削除するのか

という問題があります。

したがって、

OS側を壊したあとにJP1コマンドを実行すれば自動修復される、とは考えない方がよいです。


「空フォルダを作ってから削除」も万能ではない

例えば、

mkdir BACKUP01
ajsbkudel -n BACKUP01

という方法も、一般的な復旧手順として扱うべきではありません。

理由は、

空ディレクトリ

と、

元の退避ボックス

は同じではないからです。

元の退避情報管理ファイルがなくなっている以上、製品が期待する状態ではありません。

したがって、

ディレクトリを再作成してコマンドを通す、という方法を安易に標準手順として使わない方が安全です。


本当に重要な退避だった場合

もし削除した退避ボックスが、

本番変更前

や、

障害復旧用

の重要バックアップだった場合は、自己判断で操作を重ねるより、

  • OSバックアップ
  • VMスナップショット
  • ストレージスナップショット
  • ファイルシステムバックアップ
  • JP1/AJS3の別バックアップ

が残っていないか確認する方が先です。

操作を重ねるほど、復旧可能性を下げる場合があります。


OS側を消す前に必ずやるべきこと

削除前には、

ajsrestore -t -n BACKUP01

で中身を確認します。

そして、

ajsbkudel -n BACKUP01

を実行します。

その後に、

ls -ld /var/opt/jp1ajs2/backup/schedule/BACKUP01

で確認し、

空ディレクトリが残っているなら、

rmdir /var/opt/jp1ajs2/backup/schedule/BACKUP01

とします。

この順序なら、

JP1/AJS側
↓
OS側

という自然な流れになります。


正しい削除順序

整理すると、

1. 退避内容を確認
   ↓
ajsrestore -t -n BACKUP01

2. 不要であることを確認

3. JP1/AJS3のコマンドで削除
   ↓
ajsbkudel -n BACKUP01

4. OS上の残存ディレクトリを確認

5. 空なら必要に応じてrmdir

です。


逆順は避ける

避けたいのは、

1. rm -rf BACKUP01
2. あとからajsbkudel

です。

この順序は、

実体を先に破壊
↓
製品側に後から処理させる

という形になります。

管理情報を持つ製品では、このような操作順序は基本的に避ける方が安全です。


特に本番環境では「rm -rf禁止ルール」も有効

運用ルールとして、

JP1/AJS退避領域では
rm -rfを原則禁止

としてしまう方法もあります。

例えば、

削除はajsbkudelのみ
↓
残った空ディレクトリだけrmdir

というルールにします。

これなら誤操作リスクをかなり減らせます。


退避領域を一般ユーザーに書き込みさせない

さらに安全にするなら、

退避情報ディレクトリ

に対して、不要なユーザーが自由に削除できないようにします。

例えば、

  • 所有者を限定
  • グループを限定
  • sudo経由だけで操作
  • 運用ユーザーだけ書き込み可能

とします。

人間の注意だけに頼るより、

OS権限で事故を防ぐ

方が安全です。


削除前に一覧をログ保存する

もう一つおすすめなのが、

ajsrestore -t -n BACKUP01 > BACKUP01_before_delete.txt

です。

削除前に中身をログとして残しておけば、

何を消したか

をあとから確認できます。

さらに、

ls -la /var/opt/jp1ajs2/backup/schedule/BACKUP01 \
  > BACKUP01_oslist_before_delete.txt

も残しておけば、物理ファイル情報も記録できます。


運用手順にするとこうなる

例えば、本番運用では次のようにします。

【退避ボックス削除手順】

1. 対象ボックス確認
2. ajsrestore -tで中身確認
3. 出力をログ保存
4. 保管期限確認
5. 作業責任者確認
6. ajsbkudel実行
7. 結果確認
8. 残存ディレクトリ確認
9. 空ならrmdir
10. 作業ログ保存

これだけでも事故リスクはかなり下がります。


もし既にrm -rfしてしまった場合の考え方

まとめると、

rm -rfしてしまった
↓
慌てて空フォルダを作らない
↓
追加の削除操作を止める
↓
何を消したか確認
↓
ajsrestoreの結果確認
↓
OSバックアップの有無確認
↓
ログ・メッセージ確認
↓
必要ならサポート判断

という流れが安全です。

重要なのは、

状態が分からないまま操作を追加しないこと

です。


「rmで消えているからもう問題ない」は危険

OS上でファイルがなくなれば、

見た目上はきれい

になります。

しかし、

JP1/AJSとして正常な削除だったか

は別問題です。

特に管理情報を持つ製品では、

OS上で存在しない
=
製品上でも正常に削除済み

とは限りません。


まとめ

JP1/AJS3の退避ボックスを削除する場合、

OSコマンドでディレクトリを先に削除するのは避けた方が安全です。

本来は、

ajsrestore -t -n BACKUP01

で内容を確認し、

ajsbkudel -n BACKUP01

でJP1/AJS3側から削除します。

その後、必要なら、

rmdir BACKUP01

で空ディレクトリを削除します。

一方、

rm -rf BACKUP01

を先に実行すると、

  • 退避ファイルを失う
  • 退避情報管理ファイルを失う
  • ajsrestoreで参照できなくなる
  • ajsbkudelが正常に処理できない可能性がある
  • 管理情報と実体の不整合が発生する可能性がある
  • 本来使えた復旧ポイントそのものを失う

といった問題につながる可能性があります。

特に重要なのは、

OS上のディレクトリと、JP1/AJS3の退避ボックスは完全に同じ意味ではない

という点です。

そのため、退避ボックスを削除するときは、

JP1/AJSコマンドで削除
↓
OS側は最後に整理

という順序を守ることをおすすめします。

もしすでにOSコマンドで削除してしまった場合は、

空ディレクトリを作り直したり、さらに削除コマンドを試したりせず、まず現状確認を優先する

ことが重要です。

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