Copiar Dados do SharePoint para o Azure Blob Storage com Rclone e PnP PowerShell

Objetivo

Este documento descreve o processo para copiar dados de um site SharePoint para um Azure Blob Storage utilizando o rclone com a storage mapeada, facilitando a transferência entre os dois ambientes.

Pré-requisitos

Antes de começar, verifique se você possui os seguintes itens:

  • Conta no SharePoint com permissões adequadas para acessar e copiar arquivos ou documentos.
  • Conta no Azure com o Azure Blob Storage configurado.
  • rclone instalado. Se ainda não instalou, siga o guia de instalação aqui.
  • PowerShell 7.0 instalado. Baixe a versão mais recente aqui
  • Credenciais de acesso para o SharePoint e Azure Blob Storage.
  • Configuração do rclone com o Azure Blob Storage.

- Configuração do Rclone

Abra o terminal ou prompt de comando e navega té a pasta do rclone onde o programa foi salvo:
C: Temp\ rclone-v1.69.0-windows-amd64

Em seguida  execute o comando:
rclone config

- Crie uma nova configuração:

Escolha n para criar uma nova configuração.
Dê um nome para a configuração, por exemplo: azureblob.
Selecione 34 para Azure Blob Storage.
Insira as credenciais (Account Name, Account Key, Tenant e url SAS) do seu Azure Blob Storage ou utilize a autenticação via Azure AD.

Teste a conexão com o Azure Blob Storage: Após configurar, execute o comando:
rclone lsd azureblob:

- Mapear a Storage no rclone
rclone mount azureblob:"contoso" X: --vfs-cache-mode full  

Após executar o comando o mesmo vai aparecer no file Explorer.

Obs: A tela do Rclone não pode ser fechada, pois ela encerra o compartilhamento.


- Conectar ao SharePoint

Primeiramente, é essencial garantir que o módulo PnP PowerShell esteja instalado e atualizado em sua máquina. Para isso, execute os seguintes comandos, a fim de assegurar que todas as configurações necessárias estejam corretas:

Install-Module PnP.PowerShell -Scope CurrentUser -Force
Update-Module PnP.PowerShell

Após a instalação e atualização, o próximo passo é estabelecer a conexão com seu ambiente SharePoint Online utilizando as credenciais apropriadas. Para se conectar ao seu site, utilize o seguinte comando:

$SiteURL = "https://azuretechinsights.com.br/teste/teste"
Connect-PnPOnline -Url $SiteURL -UseWebLogin

Será solicitado que você forneça suas credenciais:

Nota importante: é necessário ser Global Admin para realizar esta operação.

- Configurar Variáveis para o Processo

Agora, é necessário configurar as variáveis essenciais para o script, incluindo o nome da biblioteca, o caminho da pasta dentro da biblioteca e o diretório local para armazenar os arquivos:

$SiteURL = "https://azuretechinsights.com.br/teste/teste"
$LibraryName = "Documentos Compartilhados"  # Nome da biblioteca no SharePoint
$FolderPath = "azuretechinsights"   # Caminho relativo da pasta dentro da biblioteca
$DownloadPath = "Caminho da Storage Mapeada"  # Caminho local onde os arquivos serão baixados

- $LibraryName: Nome da biblioteca de documentos do SharePoint onde os arquivos estão armazenados.
$FolderPath: Caminho relativo da pasta dentro da biblioteca que você deseja copiar.
$DownloadPath: Diretório local onde os arquivos serão armazenados após o download.

Após a configuração das variáveis, execute o script abaixo. Ele realizará o download da pasta denominada azuretechinsights do SharePoint

=========================================================================

# Atualizar e instalar o módulo PnP PowerShell (se necessário)
Install-Module PnP.PowerShell -Scope CurrentUser -Force
Update-Module PnP.PowerShell
 
$SiteURL = "https://azuretechinsights/teste/teste"
Connect-PnPOnline -Url $SiteURL -UseWebLogin
 
# Configurar variáveis
$SiteURL = "https://azuretechinsights/teste/teste"
$LibraryName = "Documentos Compartilhados"  # Nome da biblioteca no SharePoint
$FolderPath = "azuretechinsights"   # Caminho relativo da pasta dentro da biblioteca
$DownloadPath = "Caminho da Storage Mapeada"  # Caminho local onde os arquivos serão baixados
 
# Conectar ao SharePoint
Connect-PnPOnline -Url $SiteURL -Interactive
 
# Criar a pasta local se não existir
if (!(Test-Path -Path $DownloadPath)) {
    New-Item -ItemType Directory -Path $DownloadPath -Force
}
 
# Obter itens da pasta específica dentro da biblioteca
$Files = Get-PnPListItem -List $LibraryName | Where-Object { $_.FieldValues.FileRef -match $FolderPath }
 
foreach ($File in $Files) {
    $FileUrl = $File.FieldValues.FileRef
    $FileName = Split-Path $FileUrl -Leaf
    $RelativePath = $FileUrl -replace "^/sites/sites/Shared Documents/", ""  # Ajuste para refletir a estrutura exata
    $LocalFilePath = Join-Path -Path $DownloadPath -ChildPath $RelativePath
 
    # Criar diretório local correspondente, se necessário
    $LocalFolderPath = Split-Path -Path $LocalFilePath -Parent
    if (!(Test-Path -Path $LocalFolderPath)) {
        New-Item -ItemType Directory -Path $LocalFolderPath -Force
    }
 
    # Baixar arquivo mantendo a estrutura
    Get-PnPFile -Url $FileUrl -Path $LocalFolderPath -FileName $FileName -AsFile -Force
    Write-Host "Arquivo baixado: $FileName para $LocalFolderPath"
}
 
Write-Host "Download concluído!"
 

Após receber a mensagem acima, os dados vão está na storage que foi mapeada e sera copiado direto para a nuvem.

=====================================================================

Conclusão

Neste processo, foi demonstrado como realizar a cópia de dados de uma biblioteca do SharePoint para um Azure Blob Storage, utilizando o rclone e o PnP PowerShell. O uso do rclone mapeado permite uma transferência eficiente dos arquivos diretamente para a nuvem.

Após a execução do script, os dados serão baixados e, em seguida, transferidos para o armazenamento em nuvem, mantendo a integridade da estrutura de pastas original.

Esse método oferece uma maneira prática e escalável de mover dados do SharePoint para o Azure Blob Storage, sem a necessidade de intervenção manual, tornando o processo mais ágil e seguro.






















Comentários

Postagens mais visitadas deste blog

Microsoft Authenticator agora suporta Passkeys: Como ativar e testar

Mudança no Processo de Exclusão de Usuário no Microsoft 365

Microsoft está removendo as permissões "Todos, exceto usuários externos" no OneDrive