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
Postar um comentário