CRX2Oak は、異なるリポジトリ間でデータを移行するために設計されたツールです。
このツールを使用して、Apache Jackrabbit 2 をベースとする以前の CQ バージョンから Oak にデータを移行したり、Oak リポジトリ間でデータをコピーしたりできます。
最新バージョンの crx2oak は、次の場所で公開されているアドビリポジトリからダウンロードできます。
https://repo.adobe.com/nexus/content/groups/public/com/adobe/granite/crx2oak/
最新バージョンの変更点と修正点の一覧は、CRX2Oak のリリースノートにあります。
注意:
Apache Oak と AEM の永続性の主要な概念について詳しくは、AEM プラットフォームの紹介を参照してください。
このツールでは以下のことが可能です。
- 以前の CQ 5 バージョンから AEM 6 への移行
- 複数の Oak リポジトリ間でのデータのコピー
- 異なる Oak マイクロカーネル実装間でのデータの変換
外部の BLOB ストア(一般的にはデータストアとして知られる)を使用したリポジトリ移行のサポートは、様々な組み合わせで提供されています。考えられる移行パスの 1 つは、外部 FileDataStore を使用する CRX2 リポジトリから S3DataStore を使用する Oak リポジトリへの移行です。
下の図は、CRX2Oak がサポートしているすべての移行の組み合わせを示したものです。

CRX2Oak は、AEM 6.1 へのアップグレード時に自動的に呼び出されますが、さらにカスタマイズが必要な場合に手動で実行することもできます。
デフォルトの設定では、ノードストアのみが移行され、新しいリポジトリが古いバイナリストレージを再利用します。
デフォルトでは、このツールは「/」パスの下にあるリポジトリ全体を移行します。しかし、どのコンテンツを移行するかは完全に制御できます。
新しいインスタンスに不要な部分がコンテンツにある場合は、--exclude-path パラメーターを使用してそのコンテンツを除外し、アップグレード手順を最適化できます。
2 つのリポジトリ間でデータをコピーする必要があり、両方のインスタンス上でコンテンツパスが異なる場合は、--merge-path パラメーターでコンテンツパスを定義できます。定義すると、CRX2Oak は新しいノードのみをコピー先リポジトリにコピーし、古いノードは元の場所に保持します。

デフォルトでは、AEM は変更されたノードまたはページごとにバージョンを作成し、リポジトリ内に保存します。これらのバージョンを使用して、ページを以前の状態に復元できます。
ただし、元のページが削除されても、これらのバージョンはパージされません。長時間使用されているリポジトリを扱う場合は、孤立したバージョンによって生じた多数の冗長なデータを移行で処理しなければならないことがあります。
このような状況に役立つ機能は、--copy-versions パラメーターを付加することです。このパラメーターを使用すると、移行またはリポジトリのコピー中に、バージョンノードをスキップできます。
--copy-orphaned-versions=true を付加して、孤立したバージョンをコピーするかどうかを選択することもできます。
特定の日付までのバージョンをコピーする場合、どちらのパラメーターも日付形式 YYYY-MM-DD をサポートしています。

オープンソース版の CRX2Oak は、oak-upgrade の形で入手できます。このツールは、CRX2 サポートを除くすべての機能をサポートしています。詳しくは、Apache に関するドキュメントを参照してください。
- --cache:MB 単位でのキャッシュサイズ(デフォルトは 256)
- --mmap:セグメントストア用のメモリマップファイルアクセスを有効化します
- --src-password:ソース RDB データベースのパスワード
- --src-user:ソース RDB のユーザー
- --user:ターゲット RDB のユーザー
- --password:ターゲット RDB のパスワード
- --early-shutdown:ノードのコピー後、コミットフックの適用前に、ソース JCR2 リポジトリをシャットダウンします
- --fail-on-error:ソースリポジトリからノードを読み取れない場合、強制的に移行を失敗させます
- --skip-on-error:移行中にエラーが発生した場合に例外をスローしません。代わりに警告がログに記録されます。障害が発生したノードはスキップされ、ターゲットリポジトリ内での制約違反を回避するために、親のプライマリタイプが nt:unstructured に設定されます。
- --ldap:LDAP ユーザーを CQ 5.x インスタンスから Oak ベースのインスタンスに移行します。この機能を有効にするには、Oak 設定内の ID プロバイダーを ldap という名前にする必要があります。詳しくは、LDAP に関するドキュメントを参照してください。
- --ldap-config:認証に複数の LDAP サーバーを使用していた CQ 5.x リポジトリに対しては、このパラメーターと --ldap パラメーターを併用します。このパラメーターを使用して、CQ 5.x の ldap_login.conf または jaas.conf 設定ファイルを指すことができます。形式は --ldapconfig=path/to/ldap_login.conf です。
- --copy-orphaned-versions:孤立したバージョンのコピーをスキップします。サポートされているパラメーターは、true、false、yyyy-mm-dd です。デフォルトは true です。
- --copy-versions:バージョンストレージをコピーします。パラメーターは、true、false、yyyy-mm-dd です。デフォルトは true です。
- --include-paths:コピー時に含めるパスのコンマ区切りのリスト
- --merge-paths:コピー時に結合するパスのコンマ区切りのリスト
- --exclude-paths:コピー時に除外するパスのコンマ区切りのリスト
- --src-datastore:ソース FileDataStore として使用するデータストアディレクトリ
- --src-fileblobstore:ソース FileBlobStore として使用するデータストアディレクトリ
- --src-s3datastore:ソース S3DataStore として使用するデータストアディレクトリ
- --src-s3config:ソース S3DataStore の設定ファイル。
- --datastore:ターゲット FileDataStore として使用するデータストアディレクトリ
- --fileblobstore:ターゲット FileBlobStore として使用するデータストアディレクトリ
- --s3datastore:ターゲット S3DataStore として使用するデータストアディレクトリ
- --s3config:ターゲット S3DataStore の設定ファイル。
-
ダウンロード
MongoDB 複製セットに移行する場合は、Mongo データベースへのすべての接続で、WriteConcern パラメーターを 2 に設定します。
次のように、接続文字列の末尾に w=2 パラメーターを付加することによって設定できます。
java -Xmx4092m -XX:MaxPermSize=1024m -jar crx2oak.jar crx-quickstart/repository/ mongodb://localhost:27017/aem-author?replicaset=replica1&w=2
注意:
詳しくは、MongoDB の接続文字列に関するドキュメントで書き込み確認について参照してください。