azcopy sync

Replica o local de origem para o local de destino. Este artigo fornece uma referência detalhada para o comando azcopy sync. Para saber mais sobre a sincronização de blobs entre locais de origem e de destino, confira Sincronizar com o armazenamento de blobs do Azure usando o AzCopy v10. Para Arquivos do Azure, confira Sincronizar arquivos.

Observação

O AzCopy não dá suporte a cenários em que a origem ou o destino está sendo alterado ativamente durante a transferência.

Sinopse

As horas da última modificação são usadas para comparação. O arquivo será ignorado, se a hora da última modificação no destino for mais recente. Como alternativa, você pode usar o sinalizador --compare-hash para transferir apenas os arquivos diferentes no respectivo hash MD5. Os pares compatíveis são:

  • Local <–> Blob do Azure/Arquivo do Azure (a autenticação SAS ou OAuth pode ser usada)
  • Blob do Azure <-> Blob do Azure (a autenticação SAS ou OAuth pode ser usada)
  • Arquivo do Azure <-> Arquivo do Azure (a origem deve incluir uma SAS ou pode ser acessado publicamente; A autenticação SAS deve ser usada para o destino)
  • Blob do Azure < - > Arquivo do Azure

O comando sync é diferente do comando copy de várias maneiras:

  1. Por padrão, o sinalizador recursivo é true e o comando sync copia todos os subdiretórios. O comando sync copia apenas os arquivos de nível superior em um diretório se o sinalizador recursivo for false.
  2. Ao sincronizar entre diretórios virtuais, adicione uma barra à direita no caminho (veja os exemplos), se houver um blob com o mesmo nome de um dos diretórios virtuais.
  3. Se o sinalizador 'deleteDestination' for definido como true ou prompt, o comando sync excluirá os arquivos e blobs no destino que não estiverem presentes na origem.

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 manipular a carga.

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

Avançado

Observe que se você não especificar uma extensão de arquivo, o AzCopy detectará automaticamente o tipo de conteúdo dos arquivos ao carregar no disco local, com base na extensão de arquivo ou no conteúdo.

A tabela de pesquisa interna é pequena, mas no UNIX, ela é aumentada pelos arquivos mime.types do sistema local, caso estejam disponíveis em um ou mais desses nomes:

  • /etc/mime.types
  • /etc/apache2/mime.types
  • /etc/apache/mime.types

No Windows, os tipos MIME são extraídos do registro.

Por padrão, a sincronização funciona fora dos horários da última modificação, a menos que você substitua esse comportamento padrão usando o sinalizador --compare-hash. Portanto, no caso do Arquivo do Azure <–> Arquivo do Azure, o campo de cabeçalho Last-Modified é usado em vez de x-ms-file-change-time, o que significa que as alterações de metadados na origem também podem disparar uma cópia completa.

azcopy sync [flags]

Exemplos

Sincronizar um único arquivo:

azcopy sync "/path/to/file.txt" "https://[account].blob.core.windows.net/[container]/[path/to/blob]"

O mesmo procedimento acima, mas também calcula o hash MD5 do conteúdo do arquivo e salva como a propriedade Content-MD5 do blob.

azcopy sync "/path/to/file.txt" "https://[account].blob.core.windows.net/[container]/[path/to/blob]" --put-md5

Sincronize um diretório inteiro, incluindo os subdiretórios (observe que é recursivo por padrão em):

azcopy sync "/path/to/dir" "https://[account].blob.core.windows.net/[container]/[path/to/virtual/dir]" ou azcopy sync "/path/to/dir" "https://[account].blob.core.windows.net/[container]/[path/to/virtual/dir]" --put-md5

Sincronize somente os arquivos dentro de um diretório, mas não os subdiretórios ou os arquivos dentro dos subdiretórios:

azcopy sync "/path/to/dir" "https://[account].blob.core.windows.net/[container]/[path/to/virtual/dir]" --recursive=false

Sincronize um subconjunto de arquivos em um diretório (por exemplo: somente arquivos jpg e pdf ou se o nome do arquivo for "exactName"):

azcopy sync "/path/to/dir" "https://[account].blob.core.windows.net/[container]/[path/to/virtual/dir]" --include-pattern="*.jpg;*.pdf;exactName"

Sincronize um diretório inteiro, mas exclua determinados arquivos do escopo (por exemplo: cada arquivo que inicia com foo ou termina com bar):

azcopy sync "/path/to/dir" "https://[account].blob.core.windows.net/[container]/[path/to/virtual/dir]" --exclude-pattern="foo*;*bar"

Sincronize um único blob:

azcopy sync "https://[account].blob.core.windows.net/[container]/[path/to/blob]?[SAS]" "https://[account].blob.core.windows.net/[container]/[path/to/blob]"

Sincronize um diretório virtual:

azcopy sync "https://[account].blob.core.windows.net/[container]/[path/to/virtual/dir]?[SAS]" "https://[account].blob.core.windows.net/[container]/[path/to/virtual/dir]" --recursive=true

Sincronize um diretório virtual que tem o mesmo nome de um blob (adicione uma barra à direita no caminho para eliminar a ambiguidade):

azcopy sync "https://[account].blob.core.windows.net/[container]/[path/to/virtual/dir]/?[SAS]" "https://[account].blob.core.windows.net/[container]/[path/to/virtual/dir]/" --recursive=true

Sincronize um diretório de arquivos do Azure (a mesma sintaxe do blob):

azcopy sync "https://[account].file.core.windows.net/[share]/[path/to/dir]?[SAS]" "https://[account].file.core.windows.net/[share]/[path/to/dir]" --recursive=true

Observação: se os sinalizadores de inclusão e exclusão forem usados juntos, somente os arquivos correspondentes aos padrões de inclusão serão examinados, mas os que correspondem aos padrões de exclusão serão ignorados.

Opções

--block-size-mb (float) Use este tamanho de bloco (especificado em MiB) ao carregar e baixar no Armazenamento do Microsoft Azure. O padrão é calculado automaticamente com base no tamanho do arquivo. Frações decimais são permitidas (por exemplo: 0,25). Ao carregar ou baixar, o tamanho máximo de bloco permitido é de 0.75 * AZCOPY_BUFFER_GB. Para saber mais, consulte Otimizar o uso da memória.

--check-md5 (cadeia de caracteres) Especifica o nível de restrição com o qual os hashes MD5 devem ser validados durante o download. Essa opção só está disponível durante o download. Os valores disponíveis incluem: NoCheck, LogOnly, FailIfDifferent, FailIfDifferentOrMissing. (padrão 'FailIfDifferent'). (padrão 'FailIfDifferent')

--compare-hash (cadeia de caracteres) Informe sync para confiar em hashes como uma alternativa à Hora da Última Modificação (LMT). Hashes ausentes em uma fonte remota gerarão um erro. (Nenhum, MD5) Padrão: Nenhum (padrão "Nenhum")

--cpk-by-name Chave fornecida pelo cliente por nome que oferece aos clientes que fazem solicitações no Armazenamento de Blobs do Azure a opção de fornecer uma chave de criptografia para cada solicitação. O nome da chave fornecido será buscado no Azure Key Vault e será usada para criptografar os dados

--cpk-by-value (cadeia de caracteres) Chave fornecida pelo cliente por nome que oferece aos clientes que fazem solicitações no Armazenamento de Blobs do Azure a opção de fornecer uma chave de criptografia para cada solicitação. A chave fornecida e o respectivo hash serão buscados em variáveis de ambiente

--delete-destination (cadeia de caracteres) Define se deve excluir os arquivos adicionais do destino que não estão presentes na origem. Pode ser definido como true, false ou prompt. Se definida como prompt, uma pergunta será feita ao usuário antes de agendar arquivos e blobs para exclusão. (padrão 'false'). (padrão "false")

--dry-run Imprime o caminho dos arquivos que seriam copiados ou removidos pelo comando de sincronização. Esse sinalizador não copia nem remove os arquivos reais.

--exclude-attributes (cadeira de caracteres) (somente Windows) Exclui os arquivos cujos atributos correspondem à lista de atributos. Por exemplo: A;S;R

--exclude-path (cadeia de caracteres) Exclui esses caminhos ao comparar a origem com o destino. Essa opção não dá suporte a caracteres curinga (*). Verifica o prefixo de caminho relativo (por exemplo: myFolder;myFolder/subDirName/file.pdf).

--exclude-pattern (cadeira de caracteres) Exclui os arquivos com nomes que correspondem à lista padrão. Por exemplo: .jpg;.pdf;exactName

--exclude-regex (cadeira de caracteres) Exclui o caminho relativo dos arquivos que corresponderem às expressões regulares. Separe as expressões regulares com ';'.

--force-if-read-only Ao substituir um arquivo existente no Windows ou nos Arquivos do Azure, force a substituição para funcionar mesmo que o arquivo existente tenha seu próprio atributo somente leitura definido.

--from-to (cadeira de caracteres) Especifica opcionalmente a combinação de origem e destino. Por exemplo: LocalBlob, BlobLocal, LocalFile, FileLocal, BlobFile, FileBlob etc.

-h, --help ajuda a sincronizar

--include-attributes (cadeira de caracteres) (somente do Windows) Inclui os arquivos cujos atributos correspondem à lista de atributos. Por exemplo: A;S;R

--include-pattern (cadeira de caracteres) Inclui somente os arquivos com nome correspondente à lista padrão. Por exemplo: .jpg;.pdf;exactName

--include-regex (cadeira de caracteres) Inclui o caminho relativo dos arquivos que corresponderem às expressões regulares. Separe as expressões regulares com ';'.

--hash-meta-dir Ao usar --local-hash-storage-mode=HiddenFileso , você pode especificar um diretório alternativo para armazenar arquivos de metadados de hash (em vez de ao lado dos arquivos relacionados na origem).

--local-hash-storage-mode Especifique uma maneira alternativa de armazenar hashes de arquivo em cache. As opções válidas são: HiddenFiles (OS Agnostic), (requer user_xattr em todos os sistemas de arquivos percorridos na origem), AlternateDataStreams (somente Windows. requer fluxos nomeados no XAttr (Linux/MacOS only volume de destino).

--mirror-mode Desabilita a comparação baseada em tempo da última modificação e substitui os arquivos e blobs conflitantes no destino se esse sinalizador estiver definido como true. O padrão é falso

--put-blob-size-mb Use esse tamanho (especificado em MiB) como um limite para determinar se um blob deve ser carregado como uma única solicitação PUT ao carregar no Armazenamento do Azure. O valor padrão é calculado automaticamente com base no tamanho do arquivo. Frações decimais são permitidas (por exemplo: 0,25).

--preserve-permissions False por padrão. Preserva ACLs entre recursos conscientes (Windows e Arquivos do Azure ou ADLS Gen 2 para ADLS Gen 2). Para as contas com Namespace hierárquico, você precisará de um token SAS ou OAuth de contêiner com as permissões Modificar Propriedade e Modificar Permissões. Para baixar, você também precisará do sinalizador --backup para restaurar as permissões nas quais o novo proprietário não será o usuário que vai executar o AzCopy. Esse sinalizador é aplicável a arquivos e pastas, a menos que um filtro de apenas arquivo seja especificado (por exemplo, incluir padrão).

--preserve-posix-properties- False por padrão. Preserves informações de propriedade obtidas de stat ou statx em metadados de objeto.

--preserve-smb-info Para locais com reconhecimento de SMB, o sinalizador será definido como true por padrão. Preserva as informações de propriedade SMB (hora da última gravação, hora de criação, bits de atributo) entre recursos com reconhecimento de SMB (Arquivos do Azure). Esse sinalizador é aplicável a arquivos e pastas, a menos que um filtro de apenas arquivo seja especificado (por exemplo, incluir padrão). As informações transferidas para pastas são as mesmas para arquivos, exceto a Hora da última gravação que não é preservada para pastas. (padrão true)

--put-md5 Cria um hash MD5 de cada arquivo e salva o hash como a propriedade Content-MD5 do blob ou arquivo de destino. (Por padrão, o hash NÃO é criado.) Disponível somente ao carregar.

--recursive True por padrão, examina os subdiretórios recursivamente ao sincronizar entre diretórios. (padrão true) (padrão true)

--s2s-preserve-access-tier Preserva a camada de acesso durante a cópia de serviço para serviço. Consulte o Armazenamento de blobs do Azure: camadas de acesso frequentes, esporádicos e do arquivo para garantir que a conta de armazenamento de destino dê suporte à configuração da camada de acesso. Nos casos em que não há suporte para a configuração da camada de acesso, use s2sPreserveAccessTier=false para ignorar a cópia da camada de acesso. (padrão true) (padrão true)

--s2s-preserve-blob-tags Preserva as marcas de índice durante a sincronização de serviço a serviço de um armazenamento de blobs para outro

--trailing-dot Habilitado por padrão para tratar operações relacionadas ao compartilhamento de arquivos de maneira segura. Opções disponíveis: Enable, Disable. Escolha Disable voltar ao tratamento herdado (potencialmente inseguro) de arquivos de ponto à direita em que o serviço de arquivo cortará todos os pontos à direita nos caminhos. Isso pode resultar em possível corrupção de dados se a transferência contiver dois caminhos que diferem apenas por um ponto final (por exemplo mypath , e mypath.). Se esse sinalizador estiver definido como Disable e o AzCopy encontrar um arquivo de ponto à direita, ele avisará os clientes no log de verificação, mas não tentará anular a operação. Se o destino não der suporte a arquivos de ponto à direita (Windows ou Armazenamento de Blobs), o AzCopy falhará se o arquivo de ponto à direita for a raiz da transferência e ignorará todos os caminhos de ponto à direita encontrados durante a enumeração.

Opções herdadas de comandos pai

--log-level (cadeira de caracteres) Define o detalhamento de log para o arquivo de log, níveis disponíveis: INFORMAÇÕES (todas as solicitações/respostas), AVISO (respostas lentas), ERRO (somente solicitações com falha) e NENHUM (sem logs de saída). (padrão INFO). (padrão "INFO")

--cap-mbps (float) Limita a taxa de transferência, em megabits por segundo. A taxa de transferência por minuto pode variar um pouco do limite. Caso essa opção esteja definida como zero ou omitida, a taxa de transferência não tem limite.

--output-type (cadeia de caracteres) Formato da saída do comando. As opções incluem: text, JSON. O valor padrão é "texto". (padrão “text”)

--trusted-microsoft-suffixes (cadeia de caracteres) Especifica outros sufixos de domínio para onde os tokens de logon do Microsoft Entra podem ser enviados. O padrão é “.core.windows.net;.core.chinacloudapi.cn;.core.cloudapi.de;.core.usgovcloudapi.net;*.storage.azure.net”. Todos listados aqui são adicionados ao padrão. Por segurança, você deve colocar apenas domínios do Microsoft Azure aqui. Separar várias entradas com ponto e vírgula.

Confira também