Partilhar via


Sincronizar com o armazenamento de Blob do Azure usando 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.

Observação

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 saber mais sobre as maneiras de fornecer credenciais de autorização para o serviço de armazenamento.

Observação

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

Se preferir usar um token SAS para autorizar o acesso aos 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>'.

Orientações

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 --delete-destination sinalizador opcional para um valor de ou true para excluir arquivos no diretório de destino se esses arquivos não existirem mais no diretório de prompt 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 --delete-destination sinalizador como prompt ou false, considere usar o comando copy em vez do comando sync e defina o --overwrite parâmetro como ifSourceNewer. 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 --compare-hash sinalizador, a máquina na qual você executa o 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 da hora 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 o AzCopy da máquina virtual (VM), certifique-se de que a VM tenha 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.

Sugestão

Este exemplo delimita 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 com 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.

Sugestão

Este exemplo delimita 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 com 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 contentor é o destino.

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

Sugestão

Este exemplo delimita 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 com 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 diretório é o destino.

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

Sugestão

Este exemplo delimita 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 com 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

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

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

Se você fornecer um token SAS, certifique-se de usar um token SAS que corresponda às contas de armazenamento de origem e destino ao usar o azcopy sync.

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>/<destination-SAS-token>' --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/?sv=2018-03-28&ss=qrdu&dst=mco&kp=rwdlapuc&se=2019-07-04T05:30:08Z&st=2019-07-03T21:31:10Z&spr=https&sig=CAfhgnc9gdGktvB=yzx9CAjMKeeN678yiyFwdNU092JC8%6D' --recursive

Sugestão

Se estiver a copiar uma grande quantidade de dados, pode utilizar o Explorador de Armazenamento do Azure.

Para verificar o tamanho dos dados copiados, no menu da barra superior, selecione Mais ->Estatísticas da Pasta para obter os detalhes do diretório, incluindo o tamanho em bytes.

Sincronizar com sinalizadores opcionais

Você pode ajustar sua operação de sincronização usando sinalizadores opcionais. Aqui estão alguns exemplos.

Cenário Bandeira
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|INFORMAÇÃO|NENHUM]
Especifique como copiar um arquivo vhd. --blob-type=BlockBlob --include-pattern "*.vhd" ou --blob-type=BlockBlob

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

Observação

O --recursive sinalizador é definido como true por padrão. Os --exclude-pattern sinalizadores e --include-pattern aplicam-se apenas a nomes de arquivo e 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: