Sincronizar com o Armazenamento de blobs do Azure com o AzCopy

Você pode sincronizar o armazenamento local com o armazenamento de Blob 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 é uma maneira. Em outras palavras, você escolhe qual desses dois pontos de extremidade é a origem e qual é 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.

Nota

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

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

Introdução

Consulte o artigo Introdução ao AzCopy para baixar o AzCopy e saiba mais sobre as maneiras de fornecer credenciais de autorização para o serviço de armazenamento.

Nota

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

Se preferir usar um token SAS para autorizar o acesso a dados de blob, você pode 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 nomes de arquivos e carimbos de data/hora da última modificação. Você pode substituir esse comportamento para usar hashes MD5 em vez de carimbos de data/hora modificados pela última vez usando o --compare-hash sinalizador. Defina o sinalizador --delete-destination opcional para um valor de ou prompt para excluir arquivos no diretório de destino se esses arquivos não existirem mais no diretório de true origem.

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

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

  • Se você não planeja usar o sinalizador, a máquina na qual você executa o --compare-hash comando sync deve ter um relógio de sistema preciso, pois os últimos horários modificados são críticos para determinar se um arquivo deve ser transferido. Se o seu sistema tiver uma distorção de relógio significativa, evite modificar arquivos no destino muito perto do horário que você planeja executar um comando de sincronização.

  • O AzCopy usa APIs de servidor para servidor para sincronizar dados entre contas de armazenamento. Isso significa que os dados são copiados diretamente entre os 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 AzCopy da máquina virtual (VM), certifique-se de que a VM tem núcleos/memória suficientes para lidar com a carga.

  • Para evitar exclusões acidentais, certifique-se de ativar o recurso de exclusão suave antes de usar o --delete-destination=prompt|true sinalizador.

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

Neste caso, o contentor é o destino e o sistema de ficheiros local é a origem.

Gorjeta

Este exemplo inclui argumentos de caminho com aspas simples (''). Use aspas simples em todos os shells de comando, exceto no Shell de Comando do Windows (cmd.exe). Se você estiver usando um Shell de Comando do Windows (cmd.exe), coloque 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 ficheiros local com alterações a um contentor

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

Gorjeta

Este exemplo inclui argumentos de caminho com aspas simples (''). Use aspas simples em todos os shells de comando, exceto no Shell de Comando do Windows (cmd.exe). Se você estiver usando um Shell de Comando do Windows (cmd.exe), coloque 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 neste comando é a origem. O segundo é o destino.

Se você fornecer credenciais de autorização usando o Microsoft Entra ID, certifique-se de ter configurado as funções adequadas em sua conta de origem e destino. Consulte Opção 1: Usar o Microsoft Entra ID.

Gorjeta

Este exemplo inclui argumentos de caminho com aspas simples (''). Use aspas simples em todos os shells de comando, exceto no Shell de Comando do Windows (cmd.exe). Se você estiver usando um Shell de Comando do Windows (cmd.exe), coloque 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 neste comando é o source. O segundo é o destino.

Se você fornecer credenciais de autorização usando o Microsoft Entra ID, certifique-se de ter configurado as funções adequadas em sua conta de origem e destino. Consulte Opção 1: Usar o Microsoft Entra ID.

Gorjeta

Este exemplo inclui argumentos de caminho com aspas simples (''). Use aspas simples em todos os shells de comando, exceto no Shell de Comando do Windows (cmd.exe). Se você estiver usando um Shell de Comando do Windows (cmd.exe), coloque 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. Aqui estão alguns exemplos.

Scenario Sinalizador
Especifique com que rigor os hashes MD5 devem ser validados durante o download. --check-md5=[NãoCheck|LogOnly|FailIfDifferent|FailIfDifferentOrMissing]
Excluir arquivos com base em um padrão. --exclude-path
Especifique o quão detalhado você deseja que suas entradas de log relacionadas à sincronização sejam. --log-level=[AVISO|ERRO|INFO|NENHUM]

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

Nota

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

Próximos passos

Encontre mais exemplos nestes artigos:

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