Pular para o conteúdo principal

Fundamentação Teórica: Manage Data by Using Azure Storage Explorer and AzCopy


1. Intuição Inicial​

Imagine que você precisa gerenciar arquivos em um servidor remoto. Você tem duas opções: usar um programa com interface gráfica, onde você clica, arrasta e visualiza os arquivos como se estivesse no Windows Explorer, ou usar um cliente de linha de comando altamente otimizado, capaz de transferir terabytes de dados em paralelo com velocidade máxima.

No Azure, essas duas ferramentas existem e têm nomes específicos:

Azure Storage Explorer é o gerenciador visual. Você instala no seu computador, conecta às suas Storage Accounts e navega pelos dados como se fossem pastas locais.

AzCopy é a ferramenta de linha de comando. É um executável único, sem instalação complexa, projetado para transferências de alto desempenho entre sistemas locais e o Azure, ou entre diferentes locais no Azure.

As duas ferramentas se complementam: Storage Explorer para operações pontuais e exploração visual; AzCopy para automação, scripts e transferências em grande escala.


2. Contexto​

2.1 Por que essas ferramentas existem​

O portal Azure tem capacidades limitadas para gerenciamento de dados em Storage Accounts. Você pode criar containers, fazer upload de arquivos individuais, mas não consegue:

  • Copiar milhares de arquivos de uma vez
  • Mover dados entre duas Storage Accounts em regiões diferentes
  • Sincronizar diretórios locais com containers
  • Baixar grandes volumes de dados com performance otimizada

Storage Explorer e AzCopy preenchem essas lacunas. Elas são as ferramentas primárias que um administrador Azure usa para movimentação e gerenciamento de dados no dia a dia.

2.2 Posição no ecossistema Azure​

100%
Scroll para zoom · Arraste para mover · 📱 Pinch para zoom no celular

3. Construção dos Conceitos​

3.1 Azure Storage Explorer​

O que é​

Storage Explorer é um aplicativo desktop multiplataforma (Windows, macOS, Linux) desenvolvido pela Microsoft. Ele fornece uma interface gráfica para gerenciar Storage Accounts, incluindo Blob Storage, Azure Files, Queue Storage, Table Storage, Azure Cosmos DB e Azure Data Lake Storage.

Capacidades principais​

FuncionalidadeSuporte
Navegar containers, blobs e diretóriosSim
Upload e download de arquivos e pastasSim
Copiar e mover dados entre contasSim
Gerenciar permissões de containersSim
Gerar SAS tokensSim
Gerenciar políticas de acessoSim
Visualizar e editar metadados de blobsSim
Gerenciar Azure Files (SMB/NFS)Sim
Editar dados em Queue e Table StorageSim
Conectar a contas locais (Azurite emulator)Sim
Conectar via Private EndpointSim

Formas de autenticação no Storage Explorer​

O Storage Explorer suporta múltiplos métodos de conexão, e entender cada um é fundamental:

MétodoQuando usar
Azure AD (conta Microsoft/organizacional)Acesso baseado em RBAC; recomendado para produção
Chave de acesso (Storage Account Key)Acesso total; útil para troubleshooting; evitar em produção
SAS tokenAcesso limitado e temporário; compartilhamento seguro
Connection stringCombinação de chave e endpoint; útil para emuladores locais
Acesso público (anonymous)Containers com acesso público habilitado
Managed IdentityQuando rodando em VM ou serviço Azure com identidade

3.2 AzCopy​

O que é​

AzCopy é um utilitário de linha de comando otimizado para transferência de dados de alto desempenho envolvendo Azure Storage. É um binário único, sem dependências, disponível para Windows, macOS e Linux.

A principal vantagem do AzCopy sobre outras ferramentas CLI (como az storage blob upload) é sua arquitetura de transferência paralela: ele divide arquivos grandes em partes, envia múltiplas partes simultaneamente e usa todos os núcleos disponíveis da máquina.

Capacidades principais​

FuncionalidadeSuporte
Upload de arquivos e diretóriosSim
Download de blobsSim
Cópia entre Storage Accounts (server-side)Sim
Sincronização de diretórios (sync)Sim
Transferência retomável (journaling)Sim
Verificação de integridade (MD5)Sim
Filtros por padrão de nome e dataSim
Definição de camada de acessoSim
Cópia cross-region e cross-subscriptionSim
Cópia de Amazon S3 para AzureSim
Cópia de Google Cloud Storage para AzureSim

Server-side copy: o diferencial do AzCopy​

Quando você copia dados entre duas Storage Accounts, o AzCopy usa server-side copy: os dados se movem diretamente entre os servidores Azure, sem passar pela sua máquina local. Isso significa:

  • A velocidade não é limitada pela sua conexão de internet
  • Sua máquina praticamente não usa banda larga durante a operação
  • Transferências de terabytes completam em minutos em vez de horas
100%
Scroll para zoom · Arraste para mover · 📱 Pinch para zoom no celular

3.3 Autenticação no AzCopy​

O AzCopy suporta três métodos de autenticação:

1. Azure AD (recomendado)

azcopy login

Abre o browser para autenticação interativa. Após o login, o AzCopy usa tokens OAuth2 com validade de 24 horas.

Para automação (não interativo):

# Service Principal
azcopy login --service-principal \
--application-id <app-id> \
--tenant-id <tenant-id>

Requer que o Service Principal tenha o papel Storage Blob Data Contributor (ou superior) na Storage Account.

2. SAS Token

azcopy copy \
'https://source.blob.core.windows.net/container/blob?<SAS-TOKEN>' \
'https://dest.blob.core.windows.net/container/blob?<SAS-TOKEN>'

SAS tokens são anexados diretamente à URL. Úteis quando Azure AD não está disponível ou para compartilhar acesso temporário.

3. Managed Identity

Quando o AzCopy é executado dentro de uma VM Azure com Managed Identity, ele pode autenticar automaticamente:

azcopy login --identity

4. Visão Estrutural​

100%
Scroll para zoom · Arraste para mover · 📱 Pinch para zoom no celular

5. Funcionamento na Prática​

5.1 Azure Storage Explorer: operações essenciais​

Conectando uma Storage Account​

No Storage Explorer, você pode conectar de três formas principais:

  1. Via Azure AD: Clique em "Add an Azure Account", autentique e todas as contas da assinatura aparecem automaticamente.

  2. Via Connection String ou Key: Clique em "Add a Resource" > "Storage account or service" > "Account name and key" ou "Connection string".

  3. Via SAS URI: Clique em "Add a Resource" > "Blob container" > "Shared access signature URL". Isso conecta apenas ao recurso específico referenciado pelo SAS.

Upload de arquivos​

No Storage Explorer, você pode arrastar arquivos do seu sistema operacional diretamente para um container. Ou usar o menu "Upload" que oferece opções para:

  • Definir o tipo de blob (Block, Append, Page)
  • Definir a camada de acesso (Hot, Cool, Archive)
  • Definir metadados personalizados
  • Escolher o Encryption Scope

Gerando SAS tokens no Storage Explorer​

Clique com o botão direito em um container ou blob e selecione "Get Shared Access Signature". O Storage Explorer apresenta uma interface para:

  • Definir data de início e expiração
  • Escolher permissões (Read, Write, Delete, List, Add, Create)
  • Escolher protocolo (HTTPS only ou HTTPS e HTTP)
  • Especificar IP permitido

5.2 AzCopy: comandos fundamentais​

Upload (local para Azure)​

# Upload de arquivo único
azcopy copy \
'/local/path/file.pdf' \
'https://myaccount.blob.core.windows.net/mycontainer/file.pdf'

# Upload de diretório inteiro (recursivo)
azcopy copy \
'/local/path/directory/' \
'https://myaccount.blob.core.windows.net/mycontainer/' \
--recursive

# Upload com definição de camada de acesso
azcopy copy \
'/local/path/archive-data/' \
'https://myaccount.blob.core.windows.net/mycontainer/' \
--recursive \
--block-blob-tier Cool

Download (Azure para local)​

# Download de blob único
azcopy copy \
'https://myaccount.blob.core.windows.net/mycontainer/file.pdf' \
'/local/path/file.pdf'

# Download de container inteiro
azcopy copy \
'https://myaccount.blob.core.windows.net/mycontainer/' \
'/local/path/directory/' \
--recursive

Cópia entre Storage Accounts (server-side)​

# Copiar container inteiro entre contas
azcopy copy \
'https://sourceaccount.blob.core.windows.net/source-container/' \
'https://destaccount.blob.core.windows.net/dest-container/' \
--recursive

# Com SAS tokens em ambas as contas
azcopy copy \
'https://sourceaccount.blob.core.windows.net/source-container/?<SAS>' \
'https://destaccount.blob.core.windows.net/dest-container/?<SAS>' \
--recursive

Sincronização (sync)​

O comando sync copia apenas arquivos que são diferentes entre origem e destino, e pode deletar arquivos no destino que não existem mais na origem:

# Sincronizar local com Azure (unidirecional)
azcopy sync \
'/local/directory/' \
'https://myaccount.blob.core.windows.net/mycontainer/' \
--recursive

# Sincronizar com deleção no destino
azcopy sync \
'/local/directory/' \
'https://myaccount.blob.core.windows.net/mycontainer/' \
--recursive \
--delete-destination true

Comportamento não óbvio do sync: O AzCopy compara arquivos pela data de última modificação e tamanho, não pelo conteúdo (hash). Arquivos com mesmo conteúdo mas datas diferentes serão copiados novamente.

Filtros avançados​

# Incluir apenas arquivos com determinado padrão
azcopy copy \
'/local/path/' \
'https://myaccount.blob.core.windows.net/container/' \
--recursive \
--include-pattern "*.log;*.csv"

# Excluir padrões
azcopy copy \
'/local/path/' \
'https://myaccount.blob.core.windows.net/container/' \
--recursive \
--exclude-pattern "*.tmp;*.bak"

# Incluir apenas arquivos modificados após determinada data
azcopy copy \
'/local/path/' \
'https://myaccount.blob.core.windows.net/container/' \
--recursive \
--include-after "2025-01-01T00:00:00Z"

5.3 Gerenciamento de jobs no AzCopy​

O AzCopy mantém um journal (diário) de cada operação. Se uma transferência for interrompida, ela pode ser retomada de onde parou:

# Listar todos os jobs
azcopy jobs list

# Ver status de um job específico
azcopy jobs show <job-id>

# Retomar job interrompido
azcopy jobs resume <job-id>

# Limpar jobs concluídos
azcopy jobs clean

Os journals ficam armazenados em:

  • Windows: %USERPROFILE%\.azcopy
  • Linux/macOS: ~/.azcopy

6. Formas de Implementação​

6.1 Storage Explorer: quando usar​

Use Storage Explorer quando:

  • Você precisa explorar visualmente o conteúdo de uma Storage Account
  • Vai fazer operações pontuais (upload de 10-20 arquivos, renomear, mover)
  • Precisa gerar SAS tokens de forma visual e controlada
  • Quer inspecionar metadados, propriedades e camadas de acesso de blobs individuais
  • Está diagnosticando problemas de acesso ou estrutura de dados
  • Precisa gerenciar Queue Storage ou Table Storage visualmente

Limitações do Storage Explorer:

  • Não é adequado para automação ou scripts
  • Performance inferior ao AzCopy para grandes volumes
  • Não suporta filtros avançados de inclusão/exclusão
  • Não retoma transferências interrompidas de forma granular

6.2 AzCopy: quando usar​

Use AzCopy quando:

  • Transferindo volumes grandes de dados (dezenas de GB ou mais)
  • Precisar de uma operação reproduzível em script
  • Migrando dados entre Storage Accounts
  • Implementando backup automatizado via cron/Task Scheduler
  • Precisar de filtros de inclusão/exclusão por padrão de nome
  • Precisar de sincronização incremental de diretórios

Limitações do AzCopy:

  • Sem interface gráfica (pode ser intimidador para usuários não técnicos)
  • Requer configuração de autenticação antes do uso
  • Não gerencia Queue Storage nem Table Storage

6.3 Comparação direta​

CritérioStorage ExplorerAzCopy
InterfaceGráfica (desktop)Linha de comando
Performance em grandes volumesModeradaAlta (transferência paralela)
Automação e scriptsNãoSim
Retomada de transferênciasLimitadaSim (journal)
Filtros avançadosNãoSim
Server-side copySimSim
Sincronização incrementalNãoSim (comando sync)
Queue e Table StorageSimNão
Geração de SASSim (visual)Via Azure CLI separada
Curva de aprendizadoBaixaMédia

7. Controle e Segurança​

7.1 Autenticação recomendada por cenário​

CenárioStorage ExplorerAzCopy
Administrador em ambiente corporativoAzure ADAzure AD (azcopy login)
Script de automação em pipeline CI/CDN/AService Principal com Azure AD
Script em VM AzureN/AManaged Identity (azcopy login --identity)
Compartilhar acesso com terceirosSAS tokenSAS token na URL
Ambiente de desenvolvimento localConnection string (emulador)Connection string

7.2 Princípio do menor privilégio com SAS​

Ao gerar SAS tokens no Storage Explorer ou para usar com AzCopy, aplique apenas as permissões necessárias:

OperaçãoPermissões SAS necessárias
Apenas uploadWrite, Add, Create
Apenas downloadRead
Listar e baixarRead, List
Upload e downloadRead, Write, Add, Create
DeletarDelete (conceder com extrema cautela)

7.3 Variável de ambiente para SAS no AzCopy​

Em vez de incluir SAS tokens diretamente na linha de comando (que fica visível no histórico do shell), use variáveis de ambiente:

export AZCOPY_SAS_TOKEN="?sv=2023-01-03&ss=b&..."
azcopy copy \
"https://myaccount.blob.core.windows.net/container/$AZCOPY_SAS_TOKEN" \
'/local/path/'

7.4 Log e auditoria no AzCopy​

O AzCopy gera logs detalhados de cada operação. Configure o nível de log:

azcopy copy \
'/source/' \
'https://myaccount.blob.core.windows.net/container/' \
--log-level INFO \
--recursive

Níveis disponíveis: NONE, DEBUG, INFO, WARNING, ERROR.

Os logs ficam no mesmo diretório que os journals (~/.azcopy ou %USERPROFILE%\.azcopy).


8. Tomada de Decisão​

8.1 Escolha da ferramenta por cenário​

SituaçãoMelhor escolhaMotivo
Explorar estrutura de uma conta desconhecidaStorage ExplorerInterface visual facilita navegação
Migrar 5 TB entre duas Storage AccountsAzCopyServer-side copy, paralelo, sem usar banda local
Gerar SAS token para compartilhar com parceiroStorage ExplorerInterface visual clara para definir permissões
Backup noturno automatizado via cronAzCopyScriptável, retomável, sem interação humana
Sincronizar diretório local com AzureAzCopy syncNativo no AzCopy, incremental
Gerenciar filas e tabelasStorage ExplorerAzCopy não suporta esses serviços
Upload pontual de 3 arquivosQualquer umAmbos adequados para volumes pequenos
Pipeline DevOps de deploy de assetsAzCopyIntegração com scripts de CI/CD
Copiar de Amazon S3 para AzureAzCopySuporte nativo a S3 como origem
Diagnóstico de metadados de blobStorage ExplorerVisualização rica de propriedades

8.2 copy vs sync​

Aspectoazcopy copyazcopy sync
ComportamentoCopia todos os arquivos especificadosCopia apenas diferenças
Deletar no destinoNãoOpcional (--delete-destination)
Sobrescrever existentesSim (padrão)Apenas se diferente
Uso típicoMigração, backup completoSincronização contínua
Comparação de arquivosN/AData de modificação e tamanho

9. Boas Práticas​

Para AzCopy:

  • Prefira Azure AD a SAS tokens para automação de longo prazo. Tokens SAS expiram e precisam ser rotacionados.
  • Use Managed Identity em qualquer VM ou serviço Azure que execute AzCopy, eliminando o gerenciamento de credenciais.
  • Sempre use --recursive explicitamente ao copiar diretórios. O comportamento sem o flag pode ser confuso.
  • Teste com --dry-run (onde disponível) antes de executar operações destrutivas com sync --delete-destination.
  • Configure --cap-mbps em ambientes onde a largura de banda deve ser preservada para outras aplicações:
azcopy copy '/source/' 'https://...' --recursive --cap-mbps 100
  • Monitore jobs de longa duração com azcopy jobs show <job-id> em vez de deixar o terminal aberto.
  • Limpe journals antigos periodicamente com azcopy jobs clean para liberar espaço em disco.

Para Storage Explorer:

  • Use Azure AD como método padrão de conexão em vez de chaves de acesso.
  • Nunca salve connection strings com chaves em configurações compartilhadas.
  • Mantenha o Storage Explorer atualizado, pois novas versões adicionam suporte a novos recursos e corrigem vulnerabilidades.
  • Use SAS tokens com validade curta ao compartilhar acesso com terceiros via Storage Explorer.

10. Erros Comuns​

ErroPor que aconteceComo evitar
AuthorizationPermissionMismatch no AzCopyUsuário autenticado não tem RBAC suficienteVerificar se tem pelo menos Storage Blob Data Contributor
SAS token expirado no AzCopyToken gerado com validade curtaGerar tokens com validade adequada ou usar Azure AD
sync deletou arquivos no destino inesperadamenteUso de --delete-destination true sem intençãoTestar com --dry-run antes; omitir a flag quando não necessário
Upload lento mesmo com boa conexão--cap-mbps configurado; ou poucos threadsVerificar configurações; AzCopy ajusta paralelismo automaticamente
Transferência falha no meio e não retomaJob não identificado corretamenteUsar azcopy jobs resume <job-id> explicitamente
Blobs copiados com camada erradaNão especificou --block-blob-tierSempre especificar a camada desejada em cópias cross-account
Storage Explorer não mostra contasAzure AD da assinatura não selecionadaVerificar subscriptions em "Select Subscriptions"
Cópia server-side falha com erro 403SAS da conta destino não tem permissão de WriteIncluir permissões adequadas no SAS de destino
AzCopy sem acesso a ambiente com Private EndpointTráfego bloqueado pelo firewall da Storage AccountExecutar AzCopy de dentro da VNet ou via Jump Server

11. Operação e Manutenção​

11.1 Verificando a versão do AzCopy​

azcopy --version

O AzCopy é atualizado frequentemente. Versões diferentes podem ter comportamentos diferentes. Documente a versão usada em scripts de produção.

11.2 Configurações de performance do AzCopy​

O AzCopy ajusta automaticamente o paralelismo com base nos recursos da máquina, mas você pode controlar:

# Número máximo de operações concorrentes
export AZCOPY_CONCURRENCY_VALUE=32

# Número de goroutines por operação (para arquivos grandes)
export AZCOPY_CONCURRENT_FILES=10

11.3 Monitoramento de transferências em andamento​

# Ver status de todos os jobs ativos
azcopy jobs list

# Detalhes de um job específico (inclui progresso percentual)
azcopy jobs show <job-id>

11.4 Limites relevantes​

LimiteValor
Tamanho máximo de blob (Block Blob via AzCopy)190,7 TiB
Tamanho de parte em upload multipart100 MiB (padrão, configurável)
Conexões paralelas padrãoBaseado em núcleos da CPU
Requisições por segundo (Storage Account)20.000 (limite do serviço, não do AzCopy)

12. Integração e Automação​

12.1 AzCopy em pipelines Azure DevOps​

- task: AzureCLI@2
inputs:
azureSubscription: 'MyServiceConnection'
scriptType: 'bash'
scriptLocation: 'inlineScript'
inlineScript: |
# Autenticar com Service Principal via Azure CLI
# e usar o token para AzCopy
azcopy copy \
'./dist/' \
'https://myaccount.blob.core.windows.net/$web/' \
--recursive \
--overwrite true

Autenticação em pipelines: Em Azure DevOps, use a Service Connection configurada na task AzureCLI@2. O AzCopy, quando invocado dentro dessa task, herda as credenciais do Azure CLI automaticamente.

12.2 AzCopy com GitHub Actions​

- name: Upload assets to Azure Storage
run: |
azcopy copy \
'./build/' \
'${{ secrets.AZURE_STORAGE_URL }}/${{ secrets.AZURE_SAS_TOKEN }}' \
--recursive

12.3 Backup automatizado com cron (Linux)​

#!/bin/bash
# /opt/scripts/backup-to-azure.sh

# Autenticar via Managed Identity (em VM Azure)
azcopy login --identity

# Executar backup com timestamp
DATE=$(date +%Y-%m-%d)
azcopy copy \
'/var/app/data/' \
"https://backupaccount.blob.core.windows.net/backups/$DATE/" \
--recursive \
--log-level WARNING

# Crontab: 0 2 * * * /opt/scripts/backup-to-azure.sh

12.4 Migração de Amazon S3 para Azure com AzCopy​

# Configurar credenciais AWS
export AWS_ACCESS_KEY_ID="<access-key>"
export AWS_SECRET_ACCESS_KEY="<secret-key>"

# Copiar bucket S3 inteiro para container Azure
azcopy copy \
'https://s3.amazonaws.com/my-bucket/' \
'https://myaccount.blob.core.windows.net/mycontainer/?<SAS>' \
--recursive \
--s2s-preserve-access-tier false

13. Resumo Final​

Conceitos essenciais:

  • Azure Storage Explorer é uma ferramenta gráfica desktop para gerenciar visualmente Storage Accounts. Ideal para exploração, operações pontuais e geração de SAS tokens.
  • AzCopy é uma ferramenta de linha de comando otimizada para transferências de alto desempenho. Ideal para automação, migração e grandes volumes de dados.
  • As duas ferramentas se complementam e cobrem diferentes casos de uso.

Diferenças críticas:

  • Copy vs Sync no AzCopy: copy copia todos os arquivos especificados; sync copia apenas diferenças e pode deletar no destino com --delete-destination true.
  • Server-side copy: Quando o AzCopy copia entre duas Storage Accounts, os dados não passam pela máquina local. Isso elimina o limite de banda da conexão de internet.
  • Autenticação: Azure AD é o método recomendado para ambas as ferramentas. SAS tokens são para acesso temporário e compartilhado.
  • Retomada de transferências: AzCopy mantém journals que permitem retomar operações interrompidas com azcopy jobs resume.

O que precisa ser lembrado:

  • AzCopy requer azcopy login antes do uso com Azure AD.
  • O papel mínimo para leitura é Storage Blob Data Reader; para escrita é Storage Blob Data Contributor.
  • Journals e logs do AzCopy ficam em ~/.azcopy (Linux/macOS) ou %USERPROFILE%\.azcopy (Windows).
  • Storage Explorer não é adequado para automação; AzCopy não gerencia Queue e Table Storage.
  • Em pipelines CI/CD, use Service Principal ou Managed Identity para autenticar o AzCopy, nunca chaves de conta.
  • O comando sync compara por data de modificação e tamanho, não por hash de conteúdo.
  • AzCopy suporta cópia direta de Amazon S3 e Google Cloud Storage para Azure Storage.