首先,我们先来实际操作,迁移本地文件服务器资料至Sharepoint Online
安装Migration API的安装先决条件:
.NET4.0 下载地址:
http://www.microsoft.com/zh-cn/download/details.aspx?id=17718
SharePointOnline Management Shell 下载地址:
http://www.microsoft.com/en-us/download/details.aspx?id=35588
Migration API也可以安装在Windows7等客户端操作系统,并不一定要安装在Server操作系统
Migration API迁移时会用到的命令
https://technet.microsoft.com/zh-cn/library/mt143608.aspx
安装完成Sharepoint Online Mnagement Shell之后,以管理员身份运行
首先,第一步,运行命令 Connect-SPOService -Url https://prowz-admin.sharepoint.com ,连接到Sharepoint Online 管理中心 ,并输入Sharepoint Online管理员账户密码
如果身份验证正确后即可进行到下一步操作
本次我们是将一个网络共享里面的内容迁移过去,记录网络共享路径,并确保具备读取权限
准备两个文件夹,一个用于存放Migration API第一次转换的文件,一个用于存放Migration API第二次转换的Log文件
准备完成后,运行命令
New-SPOMigrationPackage -SourceFilesPath "\\d-dn792-4\File" -OutputPackagePath"c:\mig\spotemp" -TargetWebUrl "https://prowz.sharepoint.com" -TargetDocumentLibraryPath "Shared Documents"
-SourceFilesPath 指向来源文件服务器路径 ,后期这个路径也需要上传到Azure的容器,最终存放到Sharepoint Online的文档库
-OutputPackagePath 文件服务器第一次转换为Sharepoint Export所要存放的路径
-TargetWebUrl 目标要迁移到的Sharepoint Online网站
-TargetDocumentLibraryPath 目标要迁移到的Sharepoint Online文档库
命令执行完成后,打开之前建立的文件夹就可以看到第一次转换的内容
第一次转换完成后,即产生了文件服务器所特定生成的SharePoint Export元数据文件,我们还需要将这种元数据库文件转换为Sharepoint Online所能支持的文件,即进行第二次转换,执行命令
ConvertTo-SPOMigrationTargetedPackage -SourceFilesPath "\\d-dn792-4\File" -SourcePackagePath "C:\mig\spotemp" -OutputPackagePath "C:\mig\spomigpack" -TargetWebUrl "https://prowz.sharepoint.com" -TargetDocumentLibraryPath "Shared Documents"
-SourceFilesPath 指向来源文件服务器路径
-SourcePackagePath 指向第一次转换生成的路径
-OutputPackagePath 指向要生成的转换log路径
-TargetWebUrl 目标要迁移到的Sharepoint Online网站
-TargetDocumentLibraryPath 目标要迁移到的Sharepoint Online文档库
脚本执行完成后,打开之前的SPOtemp第一次转换的路径,可以看到,文件的修改日期已经变成了最新,是经过Convert之后的,可以被Sharepoint Online所识别的格式了
打开创建的第二个文件夹,可以看到里面存在一个转换log,点击进去可看到转换过程中所有的详细步骤
完成了以上工作后,接下来按照之前所说的流程,我们需要把文件源文件,以及最终转换完成的文件xml元数据,都上传到Azure Blob的容器中,如果您没有Azure账户,可以参考以下链接使用365自带的Import Services进行操作
首先去Azure Blob里面建立一个新的容器,并复制取得容器name,容器key,也可以使用现有的容器
注:Azure账户可以不与365是同一个账户,只要能够取得存储账户名以及访问密钥即可
取得完成后运行如下命令,设置一个azurelocations路径,并且使用加密的方式进行上传,后期在Sharepoint Online运行job的时候需要调用这个locations路径
$azurelocations = Set-SPOMigrationPackageAzureSource -SourceFilesPath "C:\file" -SourcePackagePath "C:\Mig\SPOTEMP" -FileContainerName migration-files -PackageContainerName migration-package -AccountName techdays2016 -AccountKey "jPbyzNkB9321wUiKP4uNy9oluygVCwvQD/"
-SourcePackagePath 指向来源文件服务器路径上传到Azure的容器,最终存放到Sharepoint Online的文档库
-SourcePackagePath 指向最终转换完成的路径,最终存放到Sharepoint Online的文档库
-FileContainerName 输入需要在blob中创建的文件容器名称
-PackageContainerName 输入需要在blob中创建的转换package容器名称
-AccountName 输入Azure blob的存储账户名称
-AccountKey 输入Azure blob的存储账户访问密钥
命令执行成功后,会在Azure blob里面看到已经创建的容器
点击容器进去即可看见已经成功上传的内容
将文件内容和元数据成功上传至Azure容器后,就可以使用命令publish Sharepoint Online运行迁移的Timejob,执行如下命令
$job = Submit-SPOMigrationJob -TargetWebUrl "https://prowz.sharepoint.com" -MigrationPackageAzureLocations $azurelocations
-TargetWebUrl 为Web应用程序名称
-MigrationPackageAzureLocations 指定之前创建容器时的变量
Job开始之后,可以使用Get-SPOMigrationJobStatus命令来查看Job执行的情况,在Sharepoint Online中这些迁移作业都会被做成不同的queue,等空闲的时候再执行这个queue,通常这个等待时间会很短,一般会在一分钟左右。
Get-SPOMigrationJobStatus -TargetWebUrl https://prowz.sharepoint.com
当你看见JobState状态为Queued的时候说明你的这个迁移Job还没有执行,还在排列中,等过一阵子也许你会看到process,说明这个Job正在跑
当你隔一段时间再次运行这条命令的时候
Get-SPOMigrationJobStatus -TargetWebUrl https://prowz.sharepoint.com
发现GetSPOMigrationJobStatus Get不到任何东西的时候就说明你的这个Job已经执行完了,在Sharepoint Online的文档库中已经可以看到同步上来的文件,以及文件的修改时间等等详细信息
总结:本小节中,我带领大家简单了解了一下微软Office 365所提供的Migration API的基本用法,其实这个API不仅仅是可以通过powershell控制,还可以供ISV进行二次开发的接口,支持通过CSOM去call API进行运行,大体来说 Migration API 是提供给广大公司及IT工程师一种新的选择,可以通过这样一种方式,将本地端的 文件服务器或者Sharepoint Server 2013 迁移至云端。Migration API迁移文档时有一个格外需要注意的地方,就是如果Online的文档库中已经存在同样的内容,那么Migration的时候,API只会执行覆盖操作。以上就是本章介绍的内容,下一章中我将带领大家实作如何将本地Sharepoint 2013的文档库迁移至Sharepoint Online的文档库。