内容迁移:导出内容
上次修改时间: 2015年3月9日
适用范围: SharePoint Foundation 2010
本文内容
导出操作概述
导出设置 (SPExportSettings) 属性
示例:导出完整网站集
内容迁移是一个分两步完成的过程。首先,将源中的内容导出到迁移包,然后将迁移包导入目标。
导出操作概述
以下流程图说明了典型导出操作的概念流程,此导出操作使用部署命名空间中的迁移 API(可以选择与 Stsadm.exe 工具结合使用)。它还说明如何支持这样一种情况:迁移整个网站集以创建并行的相同网站(保留对象标识),然后定期进行后续选择性迁移。这些后续"选择性"迁移只会提供针对符合指定标准(例如,在过去的二十四小时内已发生更改)的那些对象的导出/导入。
选择性迁移:导出流程图
请注意,在运行选择性迁移之前,必须运行完整迁移以便设置目标服务器。当运行此准备性完整迁移时,必须将 SPImportSettings 对象的 RetainObjectIdentity 属性设置为 true。
另请注意,您首先要确定是进行完整迁移还是选择性迁移。
导出设置 (SPExportSettings) 属性
SPDeploymentSettings 类用作派生 SPExportSettings 和 SPImportSettings 的基类。之后,这些派生的类会继承此类的成员;而且,每一个派生的类(导出和导入设置)都包含与导出和导入相关的专用成员。
Microsoft.SharePoint.Deployment.SPExportSettings 类的属性以及基类的属性一起分为四组:
必需:导出操作必需的属性设置。
重要:重要性较高的属性设置以及在进行导出规划时应考虑的属性设置。
与选择性迁移相关:与选择性迁移导出操作具体相关的属性设置。
次要:次要或极少使用的属性设置。
必需的导出设置
-
检索导出对象集合对象 (SPExportObjectCollection)
BaseFileName(继承自 Microsoft.SharePoint.Deployment.SPDeploymentSettings)
设置或检索内容迁移包 (.cmp) 文件的名称。这些迁移包中包含一个或多个文件扩展名为 .cmp 的 .cab 文件。此值是从 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 枚举中设置或检索一个值,此值按版本指定要导出到内容迁移包中的选定内容。有以下四个枚举值:
All:导出所有现有版本的选定文件;
CurrentVersion:仅导出最新版本的选定文件;
LastMajor:仅导出上一个主要版本的选定文件。此值为默认值。
LastMajorAndMinor:导出上一个主要版本及其次要版本。
请注意,LastMajor 为默认值。
CommandLineVerbose(继承自 Microsoft.SharePoint.Deployment.SPDeploymentSettings)
检索或设置一个布尔值,此值指定是否要将迁移信息输出到命令行控制台。默认值为 false。
FileCompression(继承自 Microsoft.SharePoint.Deployment.SPDeploymentSettings)
检索或设置一个布尔值,此值指定是否使用 CAB 压缩协议压缩内容迁移包。默认值为 true;默认值表示压缩内容迁移包。
IncludeSecurity(继承自 Microsoft.SharePoint.Deployment.SPDeploymentSettings)
检索或设置一个 SPIncludeSecurity 枚举值,此值指定迁移包中要包含的用户安全角色和角色成员数据的数目。此枚举提供三个值:
All:指定导出用户成员资格和角色分配,例如,类似 Web 设计人员的现用角色,以及从现用角色扩展的任何自定义角色。每个对象的 ACL 以及 DAP 或 LDAP 服务器中定义的用户信息导出到迁移数据包。
None:不导出任何用户角色或安全组信息。此值为默认值。
WssOnly:指定导出用户成员资格和角色分配,例如,类似 Web 设计人员的现用角色,以及从现用角色扩展的任何自定义角色。每个对象的 ACL 导出到迁移数据包;但是,不导出 DAP 或 LDAP 服务器中定义的用户信息。
默认值为 None。
LogFilePath(继承自 Microsoft.SharePoint.Deployment.SPDeploymentSettings)
检索或设置一个值,此值指定内容迁移操作的日志文件的完全限定路径。
与选择性迁移相关的导出设置
-
检索在导出操作更改日志中找到的更改令牌(字符串)。在执行选择性迁移时,当前更改令牌将指定从何时开始检索自上一次导出操作以后已发生更改的对象。然后,将选定这些对象以进行迁移。
完成选择性迁移操作之后,请保存此值。然后,在下一次运行选择性迁移作业时,将此值传递给 ExportChangeToken 属性。
-
设置或检索从 CurrentChangeToken 属性传递的更改令牌值,此值在执行上一次选择性迁移操作时已保存。
请注意,在以下两种情况下,选择性迁移支持在源网站和目标网站上进行字段删除:(a) 当 ExportMethod 属性设置为 ExportChanges 时;(b) 当 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/zh-cn/library/system.collections.arraylist.aspx(该链接可能指向英文页面)) 对象返回的导出数据文件的只读集合。此集合本身是在导出操作完成后利用 SPExport 类的 CleanUpAutoGeneratedDataFiles 方法来填充的。
-
设置或检索一个布尔值,此值指定在导出类型为 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 无法访问不同网站集中的项。 |
ExportMethod 属性 |
由于导出的是整个网站集,因此提供的是 ExportAll 值。如果执行的是选择性迁移,则应改为提供 ExportChanges 值;此外,需要通过另一个属性值提供导出更改令牌。 |
FileLocation 属性 |
提供文件夹的路径,导出操作会将导出的内容存储在该文件夹中。此值应指向目标计算机上的一个空目录。如果此目录不存在,则将在导出过程中创建它。 如果使用了文件压缩,则仅有经过压缩的文件才会存储在此位置。否则,未经压缩的文件将存储在由系统 TMP 环境变量所指定的临时目录中。当导出未经压缩的文件时,必须确保此临时目录具有足够的可用空间。 |
FileCompression 属性 |
指定是否将网站集作为一个或多个经压缩的迁移包 (.cmp) 文件导出。这些文件只是一些 Cabinet 文件。由于压缩网站集很费时,因此建议您选择仅在必要时(例如,导出存档文件时或将整个网站集移动到新的计算机中时)压缩导出文件。例如,如果此操作是一个选择性迁移操作或复制/移动操作,则可以通过选择不压缩文件来提高性能。 |
CommandVerbose 属性 |
这是一个表示可对导出操作进行记录的标志,与在运行 stsadm -o export 时提供的输出类似。 |
使用 SPSite 对象进行导出
导出整个网站集的第二种方法要求我们向 ExportObjects 集合 SPExportObjectCollection 中添加网站集的 SPSite 对象。使用此方法可以获得与前一种方法相同的结果,此方法中已隐式选择 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();
前面几节已完整介绍了这些导出设置属性,并且上表中已讨论本文示例中的导出设置属性。不过,还需要注意以下几个与尚未讨论的两个属性相关的要点。
SPExportObject.Id |
提供要导出的对象的全局唯一标识符 (GUID)。 |
SPExportObject.Type |
指定要导出的对象的类型。有以下六种 SharePoint 对象类型: 网站 - SPSite 对象(网站集) Web - SPWeb 对象(通常称作"网站") 列表 - SPList 对象 文件 - SPFile 对象 文件夹 - SPFolder 对象 列表项 - SPListItem 对象 |