Fazer a sincronização com o Armazenamento de Blobs do Azure usando o AzCopy

Você pode sincronizar o armazenamento local com o Armazenamento de Blobs do Azure usando o utilitário de linha de comando AzCopy v10.

Você pode sincronizar o conteúdo de um sistema de arquivos local com um contêiner de blob. Você também pode sincronizar contêineres e diretórios virtuais entre si. A sincronização é de via única. Em outras palavras, você escolhe qual desses dois pontos de extremidade é a origem e qual deles é o destino. A sincronização também usa APIs de servidor para servidor. Os exemplos apresentados nesta seção também funcionam com contas que têm um namespace hierárquico.

Observação

A versão atual do AzCopy não sincroniza entre outras origens e destinos (por exemplo: buckets do Armazenamento de Arquivos ou AWS (Amazon Web Services) S3).

Para ver exemplos de outros tipos de tarefas, como carregar arquivos, baixar blobs ou copiar blobs entre contas, confira os links apresentados na seção Próximas etapas deste artigo.

Introdução

Confira o artigo Introdução ao AzCopy para baixar o AzCopy e aprender sobre as maneiras em que você pode fornecer credenciais de autorização para o serviço de armazenamento.

Observação

Os exemplos neste artigo pressupõem que você forneceu credenciais de autorização usando o Microsoft Entra ID.

Se você preferir usar um token SAS para autorizar o acesso a dados de blob, poderá acrescentar esse token à URL do recurso em cada comando AzCopy. Por exemplo: 'https://<storage-account-name>.blob.core.windows.net/<container-name><SAS-token>'.

Diretrizes

Por padrão, o comando sync compara os nomes de arquivos e os carimbos de data/hora da última modificação. Você pode substituir esse comportamento para usar hashes MD5 em vez de carimbos de data/hora da última modificação usando o sinalizador --compare-hash. Defina o sinalizador opcional --delete-destination como um valor de true ou prompt para excluir arquivos no diretório de destino se esses arquivos não existirem mais no diretório de origem.

  • Se você definir o sinalizador --delete-destination como true, o AzCopy excluirá os arquivos sem fornecer um prompt. Se você quiser que um prompt apareça antes de AzCopy excluir um arquivo, defina o sinalizador --delete-destination como prompt.

  • Se você planeja definir o sinalizador --delete-destination como prompt ou false, considere usar o comando copy em vez do comando sync e definir o parâmetro --overwrite como ifSourceNewer. O comando copy consome menos memória e gera menos custos de cobrança porque uma operação de cópia não precisa indexar a origem nem o destino antes de mover arquivos.

  • Caso você não pretenda usar o sinalizador --compare-hash, o computador no qual você executa o comando sync deve ter um relógio do sistema preciso, porque as horas da última modificação são críticas para determinar se um arquivo deve ser transferido. Se o sistema tiver uma distorção significativa do relógio, evite modificar arquivos no destino em uma hora muito próxima da qual você planeja executar um comando sync.

  • O AzCopy usa as APIs de servidor para servidor para sincronizar dados entre contas de armazenamento. Isso significa que os dados são copiados diretamente entre servidores de armazenamento. No entanto, o AzCopy configura e monitora cada transferência e para contas de armazenamento maiores (por exemplo, contas que contêm milhões de blobs), o AzCopy pode exigir uma quantidade substancial de recursos de computação para realizar essas tarefas. Portanto, se você estiver executando o AzCopy da VM (Máquina Virtual), verifique se a VM tem núcleos/memória suficientes para tratar a carga.

  • Para evitar exclusões acidentais, lembre-se de habilitar o recurso de exclusão temporária antes de usar o sinalizador --delete-destination=prompt|true.

Atualizar um contêiner com alterações em um sistema de arquivos local

Nesse caso, o contêiner é o destino e o sistema de arquivos local é a origem.

Dica

Este exemplo inclui argumentos de caminho com aspas simples (''). Use aspas simples em todos os shells de comando, exceto pelo shell de comando do Windows (cmd.exe). Se você estiver usando um shell de comando do Windows (cmd.exe), coloque os argumentos de caminho entre aspas duplas ("") em vez de aspas simples ('').

Sintaxe

azcopy sync '<local-directory-path>' 'https://<storage-account-name>.blob.core.windows.net/<container-name>' --recursive

Exemplo

azcopy sync 'C:\myDirectory' 'https://mystorageaccount.blob.core.windows.net/mycontainer' --recursive

Atualizar um sistema de arquivos local com alterações em um contêiner

Nesse caso, o sistema de arquivos local é o destino e o contêiner é a origem.

Dica

Este exemplo inclui argumentos de caminho com aspas simples (''). Use aspas simples em todos os shells de comando, exceto pelo shell de comando do Windows (cmd.exe). Se você estiver usando um shell de comando do Windows (cmd.exe), coloque os argumentos de caminho entre aspas duplas ("") em vez de aspas simples ('').

Sintaxe

azcopy sync 'https://<storage-account-name>.blob.core.windows.net/<container-name>' 'C:\myDirectory' --recursive

Exemplo

azcopy sync 'https://mystorageaccount.blob.core.windows.net/mycontainer' 'C:\myDirectory' --recursive

Atualizar um contêiner com alterações em outro contêiner

O primeiro contêiner que aparece nesse comando é a origem. O segundo é o destino.

Se você fornecer credenciais de autorização usando o Microsoft Entra ID, verifique se configurou as funções adequadas na sua conta de origem e destino. Confira Opção 1: usar o Microsoft Entra ID.

Dica

Este exemplo inclui argumentos de caminho com aspas simples (''). Use aspas simples em todos os shells de comando, exceto pelo shell de comando do Windows (cmd.exe). Se você estiver usando um shell de comando do Windows (cmd.exe), coloque os argumentos de caminho entre aspas duplas ("") em vez de aspas simples ('').

Sintaxe

azcopy sync 'https://<source-storage-account-name>.blob.core.windows.net/<container-name>/<SAS-token>' 'https://<destination-storage-account-name>.blob.core.windows.net/<container-name>' --recursive

Exemplo

azcopy sync 'https://mysourceaccount.blob.core.windows.net/mycontainer?sv=2018-03-28&ss=bfqt&srt=sco&sp=rwdlacup&se=2019-07-04T05:30:08Z&st=2019-07-03T21:30:08Z&spr=https&sig=CAfhgnc9gdGktvB=ska7bAiqIddM845yiyFwdMH481QA8%3D' 'https://mydestinationaccount.blob.core.windows.net/mycontainer' --recursive

Atualizar um diretório com alterações em um diretório em outro contêiner

O primeiro diretório que aparece nesse comando é a origem. O segundo é o destino.

Se você fornecer credenciais de autorização usando o Microsoft Entra ID, verifique se configurou as funções adequadas na sua conta de origem e destino. Confira Opção 1: usar o Microsoft Entra ID.

Dica

Este exemplo inclui argumentos de caminho com aspas simples (''). Use aspas simples em todos os shells de comando, exceto pelo shell de comando do Windows (cmd.exe). Se você estiver usando um shell de comando do Windows (cmd.exe), coloque os argumentos de caminho entre aspas duplas ("") em vez de aspas simples ('').

Sintaxe

azcopy sync 'https://<source-storage-account-name>.blob.core.windows.net/<container-name>/<directory-name>/<SAS-token>' 'https://<destination-storage-account-name>.blob.core.windows.net/<container-name>/<directory-name>' --recursive

Exemplo

azcopy sync 'https://mysourceaccount.blob.core.windows.net/<container-name>/myDirectory?sv=2018-03-28&ss=bfqt&srt=sco&sp=rwdlacup&se=2019-07-04T05:30:08Z&st=2019-07-03T21:30:08Z&spr=https&sig=CAfhgnc9gdGktvB=ska7bAiqIddM845yiyFwdMH481QA8%3D' 'https://mydestinationaccount.blob.core.windows.net/mycontainer/myDirectory' --recursive

Sincronizar com sinalizadores opcionais

Você pode ajustar sua operação de sincronização usando sinalizadores opcionais. Alguns exemplos são mostrados a seguir.

Cenário Sinalizador
Especifica a rigidez com a qual os hashes MD5 devem ser validados durante o download. --check-md5=[NoCheck|LogOnly|FailIfDifferent|FailIfDifferentOrMissing]
Excluir arquivos com base em um padrão. --exclude-path
Especifique o nível de detalhamento que você deseja nas entradas de log relacionadas à sincronização. --log-level=[WARNING|ERROR|INFO|NONE]

Para obter uma lista completa de sinalizadores, confira as opções.

Observação

O sinalizador --recursive é definido como true por padrão. Os sinalizadores --exclude-pattern e --include-pattern se aplicam somente a nomes de arquivo e não a outras partes do caminho do arquivo.

Próximas etapas

Encontre mais exemplos nestes artigos:

Consulte estes artigos para definir configurações, otimizar o desempenho e solucionar problemas: