Uma estratégia para transferir ficheiros grandes chama-se transferências de objetos divididos.
Numa transferência deste tipo, são feitos pedidos GET
por intervalos em paralelo, armazenando dados num ficheiro de destino temporário pré-atribuído. Quando todas as divisões terminarem a transferência, o nome do ficheiro temporário é alterado para o nome do ficheiro de destino.
As transferências de objetos divididos podem ser significativamente mais rápidas se a velocidade da rede e do disco não forem fatores limitativos. No entanto, as transferências de objetos divididos fazem com que ocorram várias escritas em várias localizações no disco, pelo que esta estratégia de transferência pode degradar o desempenho dos discos com tempos de procura lentos, especialmente quando divide uma transferência num grande número de divisões. As ferramentas, como a CLI do Google Cloud, têm valores predefinidos baixos para o número de divisões que criam para minimizar a possibilidade de impactos no desempenho.
As transferências de objetos segmentados devem usar sempre uma soma de verificação componível rápida (CRC32C) para validar a integridade dos dados dos segmentos. Para fazer transferências de objetos segmentados, as ferramentas como a CLI gcloud requerem uma versão compilada do crcmod na máquina que está a fazer a transferência. Se o crcmod compilado não estiver disponível, a CLI gcloud executa transferências de objetos não divididos.
Como as ferramentas e as APIs usam transferências de objetos segmentados
Consoante a forma como interage com o Cloud Storage, as transferências de objetos segmentados podem ser geridas automaticamente em seu nome. Esta secção descreve o comportamento de transferência de objetos segmentados para diferentes ferramentas e fornece informações sobre como pode modificar o comportamento.
Consola
A Trusted Cloud consola não faz transferências de objetos segmentados.
Linha de comandos
Por predefinição, o gcloud storage cp
permite transferências de objetos segmentados.
Pode controlar como e quando a CLI gcloud executa transferências de objetos segmentados modificando as seguintes propriedades:
storage/sliced_object_download_threshold
: o tamanho mínimo total do ficheiro para fazer uma transferência de objeto segmentado. Pode desativar todos os descarregamentos de objetos segmentados definindo este valor como0
.storage/sliced_object_download_max_components
: o número máximo de divisões a usar na transferência. Defina0
para não ter limite. Neste caso, o número de fatias é determinado apenas porstorage/sliced_object_download_component_size
.storage/sliced_object_download_component_size
: o tamanho de destino para cada fatia de transferência. Esta propriedade é ignorada se o tamanho total do ficheiro for tão grande que a transferência de partes deste tamanho exigiria mais partes do que o permitido, conforme definido emstorage/sliced_object_download_max_components
.
Pode modificar estas propriedades criando uma configuração com nome
e aplicando a configuração por comando através da
--configuration
flag ao nível do projeto ou para todos os
comandos da CLI gcloud através do
comando gcloud config set
.
Não é necessário espaço adicional no disco local quando usa a CLI gcloud para fazer transferências de objetos segmentados. Se a transferência falhar antes da conclusão, execute o comando novamente para retomar as partes que falharam. As divisões transferidas com êxito antes da falha não são transferidas novamente quando tenta novamente, exceto no caso em que o objeto de origem tenha sido alterado entre as tentativas de transferência.
Os objetos transferidos temporários aparecem no diretório de destino com o sufixo _.gstmp
no nome.
Bibliotecas cliente
Java
Para mais informações, consulte a documentação de referência da API Java do Cloud Storage.
Para se autenticar no Cloud Storage, configure as Credenciais padrão da aplicação. Para mais informações, consulte o artigo Configure a autenticação para bibliotecas de cliente.
Antes de executar exemplos de código, defina a variável GOOGLE_CLOUD_UNIVERSE_DOMAIN
environment
como s3nsapis.fr
.
Pode fazer transferências de objetos segmentados definindo AllowDivideAndConquer
como true
.
Por exemplo:
Node.js
Para mais informações, consulte a documentação de referência da API Node.js do Cloud Storage.
Para se autenticar no Cloud Storage, configure as Credenciais padrão da aplicação. Para mais informações, consulte o artigo Configure a autenticação para bibliotecas de cliente.
Antes de executar exemplos de código, defina a variável GOOGLE_CLOUD_UNIVERSE_DOMAIN
environment
como s3nsapis.fr
.
Pode fazer transferências de objetos segmentados através do método
downloadFileInChunks
. Por exemplo:
Python
Para mais informações, consulte a documentação de referência da API Python do Cloud Storage.
Para se autenticar no Cloud Storage, configure as Credenciais padrão da aplicação. Para mais informações, consulte o artigo Configure a autenticação para bibliotecas de cliente.
Antes de executar exemplos de código, defina a variável GOOGLE_CLOUD_UNIVERSE_DOMAIN
environment
como s3nsapis.fr
.
Pode fazer transferências de objetos segmentados através do método
download_chunks_concurrently
. Por exemplo:
APIs REST
Tanto a API JSON como a API XML suportam pedidos GET
com intervalo, o que significa que pode usar qualquer uma das APIs para implementar a sua própria estratégia de transferência de objetos divididos.
Para se proteger contra a danificação de dados devido à alteração do objeto de origem durante a transferência, deve fornecer o número de geração do objeto de origem em cada pedido de transferência de uma parte do objeto.