コンテンツ移行 : コンテンツのエクスポート
コンテンツ移行は、2 つの手順で構成されるプロセスです。まず、ソースから移行パッケージにコンテンツをエクスポートし、次に、その移行パッケージを移行先にインポートします。
エクスポート操作の概要
以下のフローチャートは、Deployment 名前空間の移行 API (Stsadm.exe と共に使用されることもある) を使用した典型的なエクスポート操作の概念的なフローを示しています。このフローチャートは、サイト コレクション全体を移行して、オブジェクト ID を維持する同等のサイトを作成し、その後、選択的な移行を定期的スケジュールで実行するといったシナリオをサポートする方法を示しています。この 「選択的に」移行する機能によって、特定の条件 (「過去 24 時間以内に変更されたもの」など) を満たすオブジェクトだけでエクスポートとインポートを実行することができます。
選択的移行 : エクスポートのフローチャート
選択的な移行を実行する前に、完全移行を実行して、移行先サーバーをセットアップする必要があります。この完全移行を実行する際に、SPImportSettings オブジェクトで RetainObjectIdentity プロパティを true に設定する必要があります。
また、完全移行と選択的な移行のどちらを実行するかを最初に決定します。
エクスポート設定 (SPExportSettings) のプロパティ
SPDeploymentSettings クラスは、SPExportSettings と SPImportSettings の両方の派生元の基本クラスとして機能します。次に、そのメンバは、これら両方の派生クラスから継承されます。また、各派生クラス (エクスポート設定およびインポート設定) には、特殊なエクスポート関連のメンバとインポート関連のメンバが含まれます。
Microsoft.SharePoint.Deployment.SPExportSettings クラスのプロパティおよび基本クラスのプロパティは、以下の 4 つのグループに分類できます。
必須 : エクスポートに必要なプロパティ設定。
重要 : 非常に重要なプロパティ設定、およびエクスポートの計画時に考慮する必要があるプロパティ設定。
選択的な移行に関連 : 特に選択的な移行を実行する場合のエクスポート操作に関連するプロパティ設定。
マイナー : 補助的なプロパティの設定、またはほとんど使用しないプロパティの設定。
必要なエクスポート設定
-
エクスポート オブジェクトのコレクション オブジェクト (SPExportObjectCollection) を取得します。
BaseFileName (Microsoft.SharePoint.Deployment.SPDeploymentSettings から継承)
コンテンツ移行パッケージ (.cmp) ファイル (複数可) の名前を設定または取得します。これらのファイルは 1 つ以上の .cab ファイルで構成され、ファイル拡張子は .cmp です。この値は、SPDeploymentSettings クラスのコンダクタ (SPDeploymentSettings) にある baseFileName パラメータから取得されます。
複数の .cmp ファイルがあるときは、ファイル名に数字が順番に付加されます。たとえば、baseFileName パラメータが "MyWeb" である場合、エクスポート操作で複数の .cmp ファイルが作成されると、この移行パッケージのファイル名は "MyWeb1.cmp"、"MyWeb2.cmp" のようになります。
SiteUrl (Microsoft.SharePoint.Deployment.SPDeploymentSettings から継承)
エクスポートするコンテンツを含むサイト コレクションの URL を設定または取得します。この値はサイトの絶対 URL です。また、この値は、SPDeploymentSettings クラスのコンストラクタ (SPDeploymentSettings) の siteUrl パラメータで提供されます。
FileLocation (Microsoft.SharePoint.Deployment.SPDeploymentSettings から継承)
エクスポート時にコンテンツ移行パッケージが配置されるファイル パスおよびディレクトリの場所を設定または取得します。この値は、SPDeploymentSettings クラスのコンストラクタ (SPDeploymentSettings) の fileLocation パラメータで提供されます。
重要なエクスポート設定
-
コンテンツ移行パッケージへのエクスポート対象として選択するコンテンツをバージョンで指定する SPIncludeVersions 列挙の値を設定または取得します。列挙の値には次の 4 つがあります。
All: 選択したファイルのすべての既存バージョンをエクスポートします。
CurrentVersion: 選択したファイルの最新バージョンのみをエクスポートします。
LastMajor: 選択したファイルの最新メジャー バージョンのみをエクスポートします。これは既定値です。
LastMajorAndMinor: 最新のメジャー バージョンおよびそのマイナー バージョンをエクスポートします。
既定値は LastMajor です。
CommandLineVerbose (Microsoft.SharePoint.Deployment.SPDeploymentSettings から継承)
移行情報をコマンド ライン コンソールに出力するかどうかを指定するブール値を取得または設定します。既定値は falseです。
FileCompression (Microsoft.SharePoint.Deployment.SPDeploymentSettings から継承)
CAB 圧縮プロトコルを使用してコンテンツ移行パッケージを圧縮するかどうかを指定するブール値を取得または設定します。既定値は true で、コンテンツ移行パッケージは圧縮されます。
IncludeSecurity (Microsoft.SharePoint.Deployment.SPDeploymentSettings から継承)
移行パッケージに含めるユーザー セキュリティ ロールおよびロール メンバシップ データを指定する SPIncludeSecurity 列挙値を取得または設定します。列挙には、以下の 3 つの値があります。
All: ユーザーのメンバシップおよびロールの割り当てのエクスポートを指定します。このロールには、Web デザイナなどの既定のロールのほか、既定のロールを拡張したあらゆるカスタム ロールがあります。DAP サーバーや LDAP サーバーで定義されているユーザー情報、および各オブジェクトに対する ACL が移行パッケージにエクスポートされます。
None: ユーザー ロールとセキュリティ グループ情報をエクスポートしません。これは既定の設定です。
WssOnly: ユーザーのメンバシップおよびロールの割り当てのエクスポートを指定します。このロールには、Web デザイナなどの既定のロールのほか、既定のロールを拡張したあらゆるカスタム ロールがあります。各オブジェクトに対する ACL は移行パッケージにエクスポートされますが、DAP サーバーや LDAP サーバーで定義されているユーザー情報はエクスポートされません。
既定値は None です。
LogFilePath (Microsoft.SharePoint.Deployment.SPDeploymentSettings から継承)
コンテンツ移行操作を記録するログ ファイルへの完全修飾パスを指定する値を取得または設定します。
選択的な移行に関連するエクスポート設定
-
エクスポート操作の変更ログで見つかった変更トークン (文字列) を取得します。選択的な移行を実行する場合、前回のエクスポート操作後に変更されたオブジェクトを取得するときに、現在の変更トークンによって開始点が指定されます。ここで取得されたオブジェクトが移行対象として選択されます。
選択的な移行操作が完了したら、この値を保存します。選択的な移行ジョブを次に実行する際に、この値を ExportChangeToken プロパティに渡します。
-
選択的な移行操作を前回実行したときに保存された CurrentChangeToken プロパティから渡された変更トークン値を設定または取得します。
ExportMethod プロパティが ExportChanges に設定されている場合、および SPImportSettings オブジェクトの P:Microsoft.SharePoint.Deployment.SPImportSettings.RetainObjectIdentity プロパティが true に設定されている場合、選択的な移行を実行する際に、ソース サイトおよび移行先サイトでフィールドを削除することができます。
-
SPExportMethodType 列挙の値を提供します。この列挙によって、完全移行、ソース サイトの全オブジェクトのエクスポート (ExportAll)、増分移行、または前回の移行後に変更されたオブジェクトだけを移行する選択的な移行 (ExportChanges) のどの操作を実行するかが指定されます。
選択的な移行を実行する場合は、この値を ExportChanges に設定してください。
HaltOnWarning (Microsoft.SharePoint.Deployment.SPDeploymentSettings から継承)
警告が発生したときに移行を中断するかどうかを指定するブール値を設定または取得します。警告を無視して移行を継続するには、false に設定します。既定値は false です。
HaltOnNonfatalError (Microsoft.SharePoint.Deployment.SPDeploymentSettings から継承)
致命的ではないエラーが発生したときに移行を中断するかどうかを指定するブール値を設定または取得します。致命的ではないエラーを無視して移行を継続するには、falseに設定します。既定値は false です。
マイナーなエクスポート設定
-
コンテンツ移行パッケージのファイル名を自動的に生成するかどうかを指定するブール値を設定または取得します。コンテンツ移行パッケージのファイル名を自動的に生成する場合は、この値を true に設定します。既定値は falseです。
true に設定した場合、ファイル名の値は SPDeploymentSettings クラス コンストラクタ (SPDeploymentSettings) の baseFileName パラメータから決定されます。
複数の .cmp ファイルが生成されたときは、ファイル名に数字が順番に付加されます。たとえば、baseFileName パラメータが "MyWeb" である場合、エクスポート操作で複数の .cmp ファイルが作成されると、この移行パッケージのファイル名は "MyWeb1.cmp"、"MyWeb2.cmp" のようになります。
-
ArrayList (https://msdn.microsoft.com/ja-jp/library/system.collections.arraylist.aspx) オブジェクトとして返されたエクスポート データ ファイルの読み取り専用コレクションを取得します。このコレクション自体は、エクスポート操作の完了後に CleanUpAutoGeneratedDataFiles メソッドを使用して SPExport クラスに追加されます。
-
SPFile 型または SPListItem 型のオブジェクトをエクスポートする際に、コンテンツ移行パッケージ (.cmp) ファイルから依存オブジェクトを除外するかどうかを指定するブール値を設定または取得します。依存オブジェクトを除外する場合は、この値を true に設定します。既定は false です。
-
リスト フィールドをエクスポートする際に、パブリック スキーマ形式を使用するかどうかを指定するブール値を設定または取得します。エクスポート時にパブリック スキーマ形式を使用する場合は、この値を true に設定します。リスト アイテム フィールド コレクションをデータベースから直接取得する場合は false に設定します。既定は true です。
フィールド コレクションをデータベースから直接取得するほうが簡単です。一方、データベースに保存されているスキーマ形式は内部的なものであり、別のバージョンに変更できることに注意してください。
-
コンテンツ移行 (.cmp) ファイルの最大サイズを指定する整数を設定または取得します (メガバイト単位 (MB))。既定は 0 MB です。これは、移行パッケージのサイズに制限がないことを示しています。
エクスポート操作の実行時に、圧縮されたエクスポート ファイルのサイズが指定された最大サイズを超えている場合は、移行時にエクスポート ファイルが分割されます。
-
エクスポート オブジェクトが格納されている一時テーブルのコンテンツをエクスポート ログ ファイルにコピーするかどうかを指定するブール値を設定または取得します。エクスポート テーブルをログ ファイルに書き込む場合は、この値を true に設定します。既定値は false です。
このプロパティは、エクスポート操作をテストする場合、またはエクスポート時に発生した問題のトラブルシューティングを行う必要がある場合にのみ使用します。これは、オブジェクト テーブルをログに記録すると、パフォーマンスに著しい支障が生じるためです。
-
同じ名前のファイルを再エクスポートする際に、コンテンツ移行パッケージ (.cmp) ファイルのデータ ファイルを上書きするかどうかを指定するブール値を設定または取得します。既存のファイルを上書きする場合は、この値を true に設定します。
このプロパティを false に設定した場合で、データ ファイルが既に存在しているときには、エクスポート操作時に例外がスローされます。また、このプロパティを true に設定した場合で、既存のデータ ファイルが複数の移行パッケージファイルに分かれているときには、エクスポート操作によって新しい出力ファイルが生成される前に、ファイル コレクション全体が削除されます。
-
エクスポート操作のテストを実行するかどうかを指定するブール値を設定または取得します。テストを実行する場合は、この値を true に設定します。
例 : サイト コレクション全体のエクスポート
Microsoft.SharePoint.Deployment 名前空間の API を使用してサイト コレクション全体をエクスポートする (完全移行を実行する) には、SPExportSettings オブジェクトを使用する方法と SPSite オブジェクトを使用する方法があります。
SPExportSettings オブジェクトを使用したエクスポート
このオブジェクトを使用してサイト コレクション全体 (SPSite) をエクスポートするには、SPExportSettings オブジェクトを作成して、実行するエクスポート操作の構成設定を定義する必要があります。ここではエクスポートする特定のオブジェクトを選択しないため (選択的な移行ではオブジェクトを選択します)、この操作によってサイト コレクション全体がエクスポートされます。
定義した構成設定に基づいて SPExport オブジェクトを作成します。次に、SPExport オブジェクトで Run() メソッドを呼び出して、エクスポート操作を開始します。
SPExportSettings settings = new SPExportSettings();
settings.SiteUrl = "http://localhost:SourceSiteCollection";
settings.ExportMethod = SPExportMethodType.ExportAll;
settings.FileLocation = @"c:\export";
settings.FileCompression = false;
settings.CommandLineVerbose = true;
SPExport export = new SPExport(settings);
export.Run();
エクスポート設定のプロパティについては、上記のセクションですべて説明されています。ただし、一部のプロパティでは、以下のような点に注意する必要があります。
SiteUrl プロパティ |
エクスポート対象のソース サイト コレクションの絶対 URL を提供します。移行 API は、1 回のエクスポート操作で、異なるサイト コレクションにあるアイテムにアクセスできないことに注意してください。 |
ExportMethod プロパティ |
サイト コレクション全体をエクスポートするため、ExportAll 値を使用しました。選択的な移行を実行する場合は、代わりに ExportChanges 値を使用します。この場合は、エクスポート変更トークンも用意する必要があります。 |
FileLocation プロパティ |
操作時にエクスポートされたコンテンツを格納するフォルダへのパスを提供します。この値は、対象コンピュータ上の空のディレクトリをポイントする必要があります。ディレクトリが存在していない場合、エクスポート中に作成されます。 ファイル圧縮を使用している場合は、圧縮されたファイルだけがこの場所に格納されます。圧縮されていないファイルは、システムの TMP 環境変数によって指定された一時ディレクトリに格納されます。圧縮されていないファイルをエクスポートする場合は、この一時ディレクトリに十分な空き領域があることを確認してください。 |
FileCompression プロパティ |
サイト コレクションを 1 つ以上の圧縮移行パッケージ (.cmp) ファイルでエクスポートするかどうかを指定します。これらは単純なキャビネット ファイルです。サイト コレクションの圧縮には時間がかかることがあるので、エクスポート ファイルは、アーカイバル ファイルをエクスポートする場合、サイト コレクション全体を新しいコンピュータに移動する場合など、必要時にのみ圧縮することをお勧めします。選択的な移行を実行する場合 (コピー操作、移動操作など) は、ファイルを圧縮しないことによって、パフォーマンスを向上させることができます。 |
CommandVerbose プロパティ |
これは、エクスポート操作のロギングを有効にするフラグです。stsadm -o export の実行時に提供される出力に似ています。 |
SPSite オブジェクトを使用したエクスポート
このオブジェクトを使用してサイト コレクション全体をエクスポートするには、サイト コレクションの SPSite オブジェクトを ExportObjects コレクションである SPExportObjectCollection に追加します。この方法では、エクスポート対象のオブジェクトを明示的に選択しないで SPSite オブジェクトを暗黙的に選択した前述の方法と同じ結果が得られます。
SPSite site = new SPSite("http://localhost:SourceSiteCollection ");
SPExportObject exportObject = new SPExportObject();
exportObject.Id = site.ID;
exportObject.Type = SPDeploymentObjectType.Site;
SPExportSettings settings = new SPExportSettings();
settings.SiteUrl = "http://localhost:SourceSiteCollection ";
settings.ExportMethod = SPExportMethodType.ExportAll;
settings.FileLocation = @"c:\export";
settings.FileCompression = false;
settings.ExportObjects.Add(exportObject);
SPExport export = new SPExport(settings);
export.Run();
site.dispose();
これらのエクスポート設定のプロパティについては、上記のセクションですべて説明されています。また、ここで紹介した例については、前述のテーブルで説明されています。ただし、以下 2 つのプロパティでは、いくつかの点に注意する必要があります。
SPExportObject.Id |
エクスポート対象のオブジェクトのグローバル一意識別子 (GUID) を提供します。 |
SPExportObject.Type |
エクスポートするオブジェクトの種類を指定します。SharePoint には、次の 6 つのオブジェクトの種類があります。 サイト - SPSite オブジェクト (サイト コレクション) Web - SPWeb オブジェクト (「サイト」と呼ばれることもあります) リスト - SPList オブジェクト ファイル - SPFile オブジェクト フォルダ - SPFolder オブジェクト ListItem - SPListItem オブジェクト |