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​
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​
| Funcionalidade | Suporte |
|---|---|
| Navegar containers, blobs e diretórios | Sim |
| Upload e download de arquivos e pastas | Sim |
| Copiar e mover dados entre contas | Sim |
| Gerenciar permissões de containers | Sim |
| Gerar SAS tokens | Sim |
| Gerenciar polÃticas de acesso | Sim |
| Visualizar e editar metadados de blobs | Sim |
| Gerenciar Azure Files (SMB/NFS) | Sim |
| Editar dados em Queue e Table Storage | Sim |
| Conectar a contas locais (Azurite emulator) | Sim |
| Conectar via Private Endpoint | Sim |
Formas de autenticação no Storage Explorer​
O Storage Explorer suporta múltiplos métodos de conexão, e entender cada um é fundamental:
| Método | Quando 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 token | Acesso limitado e temporário; compartilhamento seguro |
| Connection string | Combinação de chave e endpoint; útil para emuladores locais |
| Acesso público (anonymous) | Containers com acesso público habilitado |
| Managed Identity | Quando 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​
| Funcionalidade | Suporte |
|---|---|
| Upload de arquivos e diretórios | Sim |
| Download de blobs | Sim |
| 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 data | Sim |
| Definição de camada de acesso | Sim |
| Cópia cross-region e cross-subscription | Sim |
| Cópia de Amazon S3 para Azure | Sim |
| Cópia de Google Cloud Storage para Azure | Sim |
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
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​
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:
-
Via Azure AD: Clique em "Add an Azure Account", autentique e todas as contas da assinatura aparecem automaticamente.
-
Via Connection String ou Key: Clique em "Add a Resource" > "Storage account or service" > "Account name and key" ou "Connection string".
-
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ério | Storage Explorer | AzCopy |
|---|---|---|
| Interface | Gráfica (desktop) | Linha de comando |
| Performance em grandes volumes | Moderada | Alta (transferência paralela) |
| Automação e scripts | Não | Sim |
| Retomada de transferências | Limitada | Sim (journal) |
| Filtros avançados | Não | Sim |
| Server-side copy | Sim | Sim |
| Sincronização incremental | Não | Sim (comando sync) |
| Queue e Table Storage | Sim | Não |
| Geração de SAS | Sim (visual) | Via Azure CLI separada |
| Curva de aprendizado | Baixa | Média |
7. Controle e Segurança​
7.1 Autenticação recomendada por cenário​
| Cenário | Storage Explorer | AzCopy |
|---|---|---|
| Administrador em ambiente corporativo | Azure AD | Azure AD (azcopy login) |
| Script de automação em pipeline CI/CD | N/A | Service Principal com Azure AD |
| Script em VM Azure | N/A | Managed Identity (azcopy login --identity) |
| Compartilhar acesso com terceiros | SAS token | SAS token na URL |
| Ambiente de desenvolvimento local | Connection 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ção | Permissões SAS necessárias |
|---|---|
| Apenas upload | Write, Add, Create |
| Apenas download | Read |
| Listar e baixar | Read, List |
| Upload e download | Read, Write, Add, Create |
| Deletar | Delete (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ção | Melhor escolha | Motivo |
|---|---|---|
| Explorar estrutura de uma conta desconhecida | Storage Explorer | Interface visual facilita navegação |
| Migrar 5 TB entre duas Storage Accounts | AzCopy | Server-side copy, paralelo, sem usar banda local |
| Gerar SAS token para compartilhar com parceiro | Storage Explorer | Interface visual clara para definir permissões |
| Backup noturno automatizado via cron | AzCopy | Scriptável, retomável, sem interação humana |
| Sincronizar diretório local com Azure | AzCopy sync | Nativo no AzCopy, incremental |
| Gerenciar filas e tabelas | Storage Explorer | AzCopy não suporta esses serviços |
| Upload pontual de 3 arquivos | Qualquer um | Ambos adequados para volumes pequenos |
| Pipeline DevOps de deploy de assets | AzCopy | Integração com scripts de CI/CD |
| Copiar de Amazon S3 para Azure | AzCopy | Suporte nativo a S3 como origem |
| Diagnóstico de metadados de blob | Storage Explorer | Visualização rica de propriedades |
8.2 copy vs sync​
| Aspecto | azcopy copy | azcopy sync |
|---|---|---|
| Comportamento | Copia todos os arquivos especificados | Copia apenas diferenças |
| Deletar no destino | Não | Opcional (--delete-destination) |
| Sobrescrever existentes | Sim (padrão) | Apenas se diferente |
| Uso tÃpico | Migração, backup completo | Sincronização contÃnua |
| Comparação de arquivos | N/A | Data 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
--recursiveexplicitamente 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 comsync --delete-destination. - Configure
--cap-mbpsem 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 cleanpara 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​
| Erro | Por que acontece | Como evitar |
|---|---|---|
AuthorizationPermissionMismatch no AzCopy | Usuário autenticado não tem RBAC suficiente | Verificar se tem pelo menos Storage Blob Data Contributor |
| SAS token expirado no AzCopy | Token gerado com validade curta | Gerar tokens com validade adequada ou usar Azure AD |
sync deletou arquivos no destino inesperadamente | Uso de --delete-destination true sem intenção | Testar com --dry-run antes; omitir a flag quando não necessário |
| Upload lento mesmo com boa conexão | --cap-mbps configurado; ou poucos threads | Verificar configurações; AzCopy ajusta paralelismo automaticamente |
| Transferência falha no meio e não retoma | Job não identificado corretamente | Usar azcopy jobs resume <job-id> explicitamente |
| Blobs copiados com camada errada | Não especificou --block-blob-tier | Sempre especificar a camada desejada em cópias cross-account |
| Storage Explorer não mostra contas | Azure AD da assinatura não selecionada | Verificar subscriptions em "Select Subscriptions" |
| Cópia server-side falha com erro 403 | SAS da conta destino não tem permissão de Write | Incluir permissões adequadas no SAS de destino |
| AzCopy sem acesso a ambiente com Private Endpoint | Tráfego bloqueado pelo firewall da Storage Account | Executar 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​
| Limite | Valor |
|---|---|
| Tamanho máximo de blob (Block Blob via AzCopy) | 190,7 TiB |
| Tamanho de parte em upload multipart | 100 MiB (padrão, configurável) |
| Conexões paralelas padrão | Baseado 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:
copycopia todos os arquivos especificados;synccopia 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 loginantes 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
synccompara 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.