AzCopy — Copiando dados para o Azure Blob Storage

Renicius Pagotto Fostaini
6 min readOct 20, 2022

--

E ai pessoal, hoje vamos falar sobre o AzCopy que é um utilitário de linha de comando utilizado para copiar arquivos para o Azure Blob Storage.

O que é o AzCopy?

Como mencionado anteriormente, o AzCopy é um utilitário de linha de comando no qual podemos copiar arquivos locais para o Azure Blob Storage ou ainda entre diferentes contas.

Quando Utilizar?

Um caso de uso bem comum é a migração dos dados de um servidor de arquivos para uma conta do Azure Blob Storage. Esses servidores são basicamente máquinas virtuais (VM) que serve para armazenamento de arquivos de várias aplicações.

Outro cenário muito interessante para utilização é a cópia de arquivos de uma conta do Azure Blob Storage para outra conta ou ainda cópia de arquivos entre containers de uma mesma conta.

Pré-requisitos

Instalação AzCopy no Windows

Para habilitar a utilização do AzCopy via linha de comando, primeiramente é necessário adicioná-lo ao Path nas variáveis de ambiente do Windows.

No botão iniciar do Windows, na barra de pesquisa digite env e em seguida selecione a opção de editar as variáveis de ambiente.

A tela de propriedades do sistema irá aparecer e em seguida selecione a opção Variáveis de Ambiente / Environment Variable.

Na próxima tela, selecione a opção Path das variáveis do seu usuário e clique no botão Edit.

Na tela de edição, adicione o caminho onde o utilitário AzCopy foi descompactado. No meu caso, utilizei o caminho “C:\AzCopy” do meu computador.

Após salvar as alterações, abra o terminal da sua máquina e digite o comando azcopy para ver o comando disponível e pronto para uso.

Instalação AzCopy no MacOS

A instalação do AzCopy no MacOS é extremamente simples e rápida, basta instalar o Homebrew que é um gerenciador de pacotes próprio para MacOS e após isso, instalar o AzCopy utilizando o Homebrew. Tudo funcionará perfeitamente e nenhuma configuração extra é necessária.

Comandos básicos

O AzCopy possui alguns comandos básicos para interação com o Azure Blob Storage.

Azcopy copy

É o comando responsável por realizar a cópia de dados de um lugar para outro e possui a seguinte estrutura.

azcopy copy [source] [destination] [flags]

Azcopy remove

É o comando responsável por deletar arquivos no Azure Blob Storage e possui a seguinte estrutura.

azcopy remove [resourceUrl] [flags]

Azcopy login

É o comando responsável por realizar o login no Azure Active Directory para obter acesso ao Azure Blob Storage e possui a seguinte estrutura.

azcopy login [flags]

Comando -h (Ajuda)

É basicamente um comando de ajuda, uma vez executado é exibido todas as opções disponíveis para ser utilizado.

azcopy -h

azcopy [command] -h

Preparando o Azure Blob Storage

Para a demonstração, iremos utilizar 3 contas do Azure Blob Storage onde a primeira conta é para cópia dos arquivos locais e as demais utilizaremos para cópia de informações entre si.

Para saber mais sobre o funcionamento do Azure Blob Storage e como criar uma conta, acesse esse post onde explico detalhadamente.

Na primeira conta com o nome pagottoblob1, vamos criar um novo container que será utilizado como destino de cópia dos dados locais.

Na próxima etapa, precisamos gerar um SAS de conexão que será utilizado pelo AzCopy para conexão e cópia dos dados para o Azure Blob Storage.

O que é SAS (Shared Access Signature)

Um SAS é um meio de fornecimento de acesso seguro a uma determinada conta do Azure Storage. Com o seu uso, podemos definir qual tipo de Azure Storage o usuário poderá acessar (Blob, File, Queue e Table) e podemos também definir um tempo de expiração de acesso, entre outras coisas.

Em nosso contexto, iremos utilizar o Blob service SAS URL que é o acesso a nossa conta via HTTP.

Copiando dados locais para o Azure Blob Storage

Nessa etapa, iremos utilizar o Azure Blob Storage com o nome pagottoblob1 e utilizaremos também o comando azcopy copy para copiar os arquivos locais da nossa máquina para o Azure Blob Storage. Utilizaremos o SAS para conexão e cópia das informações para a conta de destino.

Um ponto a ser observado é que a conexão SAS que recebemos, não possui referência a um container e tem o seguinte formato no começo.

https://pagottoblob1.blob.core.windows.net/?sv

Porém para cópia de arquivos para o Azure Blob Storage, precisamos especificar o container de destino, sendo necessário adicionar manualmente.

https://pagottoblob1.blob.core.windows.net/images?sv

Feito isso, vamos por fim realizar a cópia das informações utilizando o comando de cópia do AzCopy.

No comando acima, especificamos o caminho dos arquivos da minha máquina que seria C:\Users\renic\Pictures\* onde o asterisco no final significa copiar todos os arquivos do diretório e por fim utilizamos o SAS do Azure Blob Storage como destino.

Finalizado a execução, todos os arquivos do diretório local foram copiados para a conta do Azure Blob Storage.

Copiando de uma conta para outro no Azure Blob Storage

Para essa etapa, vamos utilizar as duas últimas contas do Azure Blob Storage (pagottoblob2 e pagottoblob3) no qual precisamos gerar um SAS para ambas as contas para conexão e cópia de informações entre eles.

Para cópia entre contas, podemos especificar um container de origem e destino como também podemos não especificar nenhum container, nesse caso, toda a estrutura de arquivos de uma conta será copiada na mesma estrutura para a outra conta.

Vamos analisar a estrutura da conta pagottoblob2. Nela possuímos 4 containers ($logs, docs, images2 e thumb) e todos serão copiados para a conta de destino.

A última conta nomeada de pagottoblob3, representa a nossa conta de destino e nela temos apenas um container ($logs,) que é do próprio recurso.

Vamos agora executar o comando de cópia do AzCopy onde a origem será o SAS da conta pagottoblob2 e o destino será o SAS da conta pagottoblob3.

Concluído o processo de cópia, perceba que todos os arquivos foram copiados da conta pagottoblob2 para a conta pagottoblob3 exatamente na mesma estrutura e de uma forma muito prática.

Copiando de um container para outro no Azure Blob Storage

Para copiar arquivos de um container de uma conta do Azure Blob Storage para outro container de outra conta ou ainda da mesma conta, o processo é quase igual ao demonstrado acima, o único ponto que precisamos mudar é adicionar manualmente o container de origem e destino no SAS.

E ai, gostou desse post? Quer conversar um pouco mais sobre AzCopy? Deixe um comentário com suas dúvidas e idéias ou entre em contato comigo através do LinkedIn.

Referências

azcopy | Microsoft Learn

--

--