Compartilhar via


Sincronizar 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 do 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 fontes e destinos (por exemplo: armazenamento de arquivos ou buckets S3 do Amazon Web Services (AWS).

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.

Comece agora

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, habilite o recurso de exclusão reversível antes de usar o --delete-destination=prompt|true sinalizador.

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 neste comando é a origem. O segundo é o destino.

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

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 a ID do Microsoft Entra, verifique se configurou as funções adequadas em sua conta de origem e destino. Consulte a opção 1: Usar a ID do Microsoft Entra.

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

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 é o destino.

Se você fornecer um token SAS, certifique-se de usar um token SAS que corresponda tanto à conta de armazenamento de origem quanto à de destino ao utilizar 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

Dica

Se você estiver copiando um tamanho maior de dados, poderá usar o Gerenciador de Armazenamento do Azure.

Verifique os detalhes de tamanho copiados. No menu da barra superior, escolha Mais ->Estatísticas de Pasta para ajudar você a 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. Alguns exemplos são mostrados a seguir.

Cenário Bandeira
Especifique quão rigorosamente os hashes MD5 devem ser validados ao baixar. --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]
Especifique como copiar um arquivo vhd. --blob-type=BlockBlob --include-pattern “*.vhd” ou --blob-type=BlockBlob

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

Observação

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