SharePoint Online存储已满,寻求迁移现有文件夹至Azure归档存储的方案
针对SharePoint Online存量文件夹无法通过Power Automate/Logic Apps迁移的问题,以下是三种可行的解决方案:
方案1:PowerShell脚本批量迁移(免费,技术人员友好)
通过PnP PowerShell读取SharePoint文件,结合Azure PowerShell上传到冷层Blob存储:
安装依赖模块
Install-Module -Name PnP.PowerShell -Force -AllowClobber Install-Module -Name Az -Force -AllowClobber连接到SharePoint Online和Azure账户
# 连接SharePoint Online(交互式登录) Connect-PnPOnline -Url "https://yourtenant.sharepoint.com/sites/yoursite" -Interactive # 连接Azure账户(交互式登录) Connect-AzAccount -Interactive递归获取目标文件夹下的所有文件
定义递归函数遍历文件夹及子文件夹:function Get-PnPAllFiles { param([string]$FolderUrl) # 获取当前文件夹下的文件 $folder = Get-PnPFolder -Url $FolderUrl $files = Get-PnPFile -Folder $folder -Recurse -AsListItem foreach ($file in $files) { [PSCustomObject]@{ ServerRelativeUrl = $file["FileRef"] Name = $file["FileLeafRef"] LocalPath = Get-PnPFile -Url $file["FileRef"] -Path "C:\Temp\SPOMigration" -AsFile -Force } } # 遍历子文件夹 $subFolders = Get-PnPFolder -Url $FolderUrl -Includes Folders foreach ($subFolder in $subFolders.Folders) { Get-PnPAllFiles -FolderUrl $subFolder.ServerRelativeUrl } } # 替换为你的目标文件夹相对URL $sourceFiles = Get-PnPAllFiles -FolderUrl "/sites/yoursite/Shared Documents/YourArchiveFolder"上传到Azure Blob冷存储层
保持原文件夹结构,设置Blob存储层为冷层:$storageAccountName = "yourstorageaccountname" $containerName = "yourarchivecontainer" $ctx = New-AzStorageContext -StorageAccountName $storageAccountName -UseConnectedAccount foreach ($file in $sourceFiles) { # 构建Blob路径,保留原文件夹结构 $blobPath = $file.ServerRelativeUrl.Replace("/sites/yoursite/Shared Documents/", "") # 上传并设置冷层 Set-AzStorageBlobContent -Context $ctx -Container $containerName -File $file.LocalPath -Blob $blobPath -StandardBlobTier Cool -Force # 可选:删除SharePoint原文件(请先验证迁移完整性) # Remove-PnPFile -Url $file.ServerRelativeUrl -Force }
方案2:Azure Data Factory(低代码,支持批量/调度迁移)
适合无代码或低代码场景,可批量迁移存量文件,后续还能配置增量同步:
创建Azure Data Factory实例:在Azure Portal中创建Data Factory资源,选择适合的区域和定价层。
配置链接服务:
- 新建SharePoint Online链接服务:输入站点URL,选择OAuth或服务主体认证方式,完成授权。
- 新建Azure Blob Storage链接服务:选择目标存储账户,使用账户密钥或托管标识完成认证。
创建数据集:
- SharePoint数据集:选择目标文档库,设置文件夹路径为要迁移的文件夹,类型为文件数据集。
- Blob数据集:选择目标容器,设置Blob路径为
@dataset().FolderPath,在数据集属性中设置Blob存储层为冷层。
构建复制管道:
- 在Data Factory中新建管道,添加复制活动。
- 源配置:选择SharePoint数据集,勾选递归以包含子文件夹。
- 目标配置:选择Blob数据集,勾选保留分层结构保持原文件夹组织。
运行管道:可立即触发执行存量迁移,或配置调度规则实现定期增量同步。
方案3:Azure Storage Explorer(手动小批量迁移)
适合迁移文件量较小的场景,操作直观:
下载并安装Azure Storage Explorer,启动后登录微软账户。
连接到SharePoint Online:
- 左侧导航栏点击「添加账户」,选择「SharePoint Online」,登录后找到目标站点和要迁移的文件夹。
连接到Azure Blob存储:
- 添加目标Azure存储账户,找到目标容器,右键容器选择「设置默认访问层」,设置为冷层。
迁移文件:
- 在SharePoint文件夹中选中要迁移的内容,直接拖拽到Azure Blob容器中,Storage Explorer会自动保留原文件夹结构,且所有上传的Blob会使用冷层存储。
关键注意事项
- 权限:操作账户需拥有SharePoint文档库的读取/删除权限,以及Azure存储账户的写入权限。
- 增量同步:存量迁移完成后,可使用Power Automate/Logic Apps配置「当文件创建或修改时」的触发器,实现后续新增文件的自动同步。
- 成本评估:Azure冷存储的存储成本较低,但数据检索和提前删除会产生额外费用,需根据归档需求规划。
- 完整性验证:迁移完成后,随机抽取文件对比大小、内容,确保迁移完整。
内容的提问来源于stack exchange,提问作者Jose A
相关产品推荐
相关产品推荐

