オンプレミスに存在するIBM i固有のオブジェクトがSAVFに保管してある場合、どうIBM Power Systems Virtual Server/IBM iへ復元するか悩みました。IBM Cloud Object StorageはいわゆるLUW(Linux/Unix/Windows)ファイルの復元を前提に設計されているからです。
そこで、以下の手順での復元手順を考えました。
①オンプレミスのIBM iに存在するSAVFをbinaryでPCにダウンロード
② ①でダウンロードしたファイルをIBM Cloud Object Storageにアップロード
③ ②でアップロードしたファイルをIBM iからCPYFRMCLDコマンドでIBM iのIFS(Integrated File System)にコピー
④ IBM i内で、IFSにあるファイルをライブラリーにFTP転送
実は、SFTPによるファイル転送も試みたのですが、1Kくらいのファイルサイズしか送信できませんでしたので、IBM Cloud Object Storage経由での送信に至りました。。
Cloud Storage Solutions for i は構成済みの前提で、個々を検証します。
① オンプレミスのIBM iに存在するSAVFをbinaryでPCにダウンロード
② ①でダウンロードしたファイルをIBM Cloud Object Storageにアップロード
③ ②でアップロードしたファイルをIBM iからCPYFRMCLDコマンドでIBM iのIFS(Integrated File System)にコピー
CPYFRMCLD RESOURCE(ICOS_JUN) ASYNC(*NO) CLOUDFILE(QINTER2984.SAVF)
LOCALFILE('/jun/qinter2984.savf')
※CLOUDFILEパラメーターは大文字/小文字を認識するので、注意します。
④ IBM iのIFSにQINTER2984.SAVFが転送されていることを確認
⑤ IBM i内で、IFSにあるファイルをライブラリーにFTP転送
こちら↓を参考にしました。
How to FTP a Save File Stored in the IFS to a Library on the Same System so Data Can be Restored From It
a)受け入れ用のSAVFを作成
CRTSAVF FILE(JUNTEST/QINTER2984)
b)IBM iのIPアドレスをCFGTCP->OPT1で確認。
回線記述CLOUDINIT0のIPアドレスを控えます。
c) b)で控えたアドレスを指定して、IBM i内部でFTP(IFSからIBM iオリジナルオブジェクトへ変換)
FTP RMTSYS('IP address')
d) 以下のコマンドでFTPを進めます。
ポイントはget /IFSDIRECTORY/YOURSAVF YOURLIB/YOURSAVF (REPLACE です。
OS/400 is the remote operating system. The TCP/IP version is "V7R4M0".
250 Now using naming format "0".
257 "QGPL" is current library.
> bin
200 Representation type is binary IMAGE.
> quote site namefmt 1
250 Now using naming format "1".
> get /jun/qinter2984.savf juntest/qinter2984 (REPLACE
229 Entering Extended Passive Mode (|||17047|).
150 Retrieving file /jun/qinter2984.savf
226 File transfer completed successfully.
0.009秒に135168バイトが転送された。転送速度は15379.114 KB/秒です。
e)最後に、置き換えたSAVFがIBM iオブジェクトとして保管されているか確認
DSPSAVF FILE(JUNTEST/QINTER2984)
DSPSAVFコマンドでSAVF内にIBM iオブジェクトが保管されていることが確認できました。
ちょっとしたサイズのSAVFなら、この手法で移行できることがわかりました。