Uma estratégia para fazer o download de arquivos grandes é chamada de downloads de objetos divididos.
Nesse download, as solicitações GET
por intervalo são feitas em paralelo, armazenando dados em um arquivo de destino temporário e pré-alocado. Depois que o download de todas as frações é concluído, o arquivo temporário é renomeado como o arquivo de destino.
Os downloads de objetos divididos poderão ser significativamente mais rápidos se as velocidades da rede e do disco não tiverem fatores limitantes. No entanto, os downloads de objetos divididos fazem com que várias gravações ocorram em vários locais no disco. Por isso, essa estratégia de download pode prejudicar o desempenho de discos com tempos de busca lentos, especialmente ao dividir um download em um grande número de frações. Ferramentas como a CLI do Google Cloud têm valores padrão baixos para o número de frações criadas a fim de minimizar a possibilidade de impactos no desempenho.
Os downloads de objetos divididos precisam sempre usar uma soma de verificação (CRC32C) rápida combinável para verificar a integridade de dados das frações. Para executar downloads de objetos fracionados, ferramentas como a gcloud CLI exigem uma versão compilada do crcmod na máquina que executa o download. Se o crcmod compilado não estiver disponível, a CLI gcloud vai realizar downloads de objetos sem divisão.
Como ferramentas e APIs usam downloads de objetos divididos
Dependendo de como você interage com o Cloud Storage, os downloads de objetos divididos podem ser gerenciados automaticamente para você. Esta seção descreve o comportamento de download de objetos divididos em diferentes ferramentas e fornece informações sobre como modificar esse comportamento.
Console
O console do Google Cloud não faz o download de objetos divididos.
Linha de comando
Por padrão, o gcloud storage cp
permite downloads de objetos divididos.
É possível controlar como e quando a gcloud CLI executa downloads
de objetos fracionados modificando as propriedades a seguir:
storage/sliced_object_download_threshold
: o tamanho mínimo total do arquivo para fazer um download de objeto dividido. É possível desativar todos os downloads de objetos divididos definindo esse valor como0
.storage/sliced_object_download_max_components
: o número máximo de frações a serem usadas no download. Defina0
para sem limite. Nesse caso, o número de frações será determinado exclusivamente pelostorage/sliced_object_download_component_size
.storage/sliced_object_download_component_size
: o tamanho do destino de cada fração do download. Essa propriedade será ignorada se o tamanho total do arquivo for tão grande que fazer o download de frações desse tamanho exigiria mais frações do que o permitido, conforme definido emstorage/sliced_object_download_max_components
.
É possível modificar essas propriedades criando uma configuração nomeada e
aplicando a configuração por comando usando
a flag --configuration
em todo o projeto ou para todos os comandos da gcloud CLI usando o
comando gcloud config set
.
Nenhum espaço extra em disco local é necessário ao usar a CLI gcloud para executar downloads de objetos fatiados. Se o download falhar antes da conclusão, execute novamente o comando para retomar as frações que falharam. Os downloads das frações concluídos antes da falha não são refeitos ao tentar novamente, exceto quando o objeto de origem é alterado entre as tentativas de download.
Os downloads de objetos temporários aparecem no diretório de destino com
o sufixo _.gstmp
no nome.
Bibliotecas de cliente
Node.js
Para mais informações, consulte a documentação de referência da API Cloud Storage Node.js.
Para autenticar no Cloud Storage, configure o Application Default Credentials. Para mais informações, consulte Configurar a autenticação para um ambiente de desenvolvimento local.
É possível fazer downloads de objetos fatiados usando o método downloadFileInChunks
. Exemplo:
Python
Para mais informações, consulte a documentação de referência da API Cloud Storage Python.
Para autenticar no Cloud Storage, configure o Application Default Credentials. Para mais informações, consulte Configurar a autenticação para um ambiente de desenvolvimento local.
É possível fazer downloads de objetos fatiados usando o método download_chunks_concurrently
. Exemplo:
APIs REST
A API JSON e a API XML são compatíveis com solicitações GET
por intervalo. Isso significa que é possível usar qualquer uma das APIs para implementar sua própria estratégia de downloads de objetos divididos.
Para prevenir a corrupção de dados devido à alteração do objeto de origem durante o download, informe o número de geração do objeto de origem em cada solicitação de download de uma fração do objeto.