Como mover e renomear intervalos

Ao criar um intervalo, você define permanentemente seu nome, sua localização geográfica e o projeto de que ele faz parte. No entanto, é possível mover ou renomear o intervalo:

  • Se não houver dados no intervalo antigo, basta excluí-lo e criar outro com um novo nome em um novo local ou projeto.

  • Se houver dados no intervalo antigo, crie um novo com o nome, local e/ou projeto que você quer, copie os dados do intervalo antigo para o novo e exclua o antigo e o conteúdo dele. Veja a descrição desse processo nas etapas abaixo.

    Se quiser que o novo intervalo tenha o mesmo nome do antigo, mova os dados duas vezes: um intervalo intermediário armazena temporariamente os dados para que você possa excluir o intervalo original e liberar o nome do intervalo final.

Para mover seus dados de um intervalo para outro:

Etapa 1) Criar um novo intervalo

Console

  1. Abra o navegador do Cloud Storage no Console do Google Cloud Platform.
    Abrir o navegador do Cloud Storage
  2. Clique em Criar intervalo.
  3. Especifique um Nome, sujeito aos requisitos de nomenclatura do intervalo.
  4. Selecione uma classe de armazenamento padrão para o intervalo. A classe de armazenamento será atribuída por padrão a todos os objetos carregados no intervalo.

    Observação: clique em Comparar classes de armazenamento para comparar as classes de armazenamento e as estimativas de custo mensais.

  5. Defina um local em que os dados do intervalo serão armazenados.
  6. Novo intervalo

  7. Clique em Criar

gsutil

Use o comando gsutil mb, substituindo [VALUES_IN_BRACKETS] pelos valores apropriados:

gsutil mb gs://[BUCKET_NAME]/

Para ter mais controle sobre a criação do intervalo, defina as seguintes sinalizações opcionais:

Exemplo:

  gsutil mb -p [PROJECT_NAME] -c [STORAGE_CLASS] -l [BUCKET_LOCATION] -b on gs://[BUCKET_NAME]/

Amostras de código

C++

Para mais informações, consulte a documentação de referência da API Cloud Storage para C++.

namespace gcs = google::cloud::storage;
using ::google::cloud::StatusOr;
[](gcs::Client client, std::string bucket_name) {
  StatusOr<gcs::BucketMetadata> bucket_metadata =
      client.CreateBucket(bucket_name, gcs::BucketMetadata());

  if (!bucket_metadata) {
    throw std::runtime_error(bucket_metadata.status().message());
  }

  std::cout << "Bucket " << bucket_metadata->name() << " created."
            << "\nFull Metadata: " << *bucket_metadata << "\n";
}

C#

Para mais informações, consulte a documentação de referência da API Cloud Storage para C#.

private void CreateBucket(string bucketName)
{
    var storage = StorageClient.Create();
    storage.CreateBucket(s_projectId, bucketName);
    Console.WriteLine($"Created {bucketName}.");
}

Go

Para mais informações, consulte a documentação de referência da API Cloud Storage para Go.

bucket := client.Bucket(bucketName)
if err := bucket.Create(ctx, projectID, &storage.BucketAttrs{
	StorageClass: "COLDLINE",
	Location:     "asia",
}); err != nil {
	return err
}

Java

Para mais informações, consulte a documentação de referência da API Cloud Storage para Java.

Bucket bucket =
    storage.create(
        BucketInfo.newBuilder(bucketName)
            // See here for possible values: http://g.co/cloud/storage/docs/storage-classes
            .setStorageClass(StorageClass.COLDLINE)
            // Possible values: http://g.co/cloud/storage/docs/bucket-locations#location-mr
            .setLocation("asia")
            .build());

Node.js

Para mais informações, consulte a documentação de referência da API Cloud Storage para Node.js.

// Imports the Google Cloud client library
const {Storage} = require('@google-cloud/storage');

// Creates a client
const storage = new Storage();

/**
 * TODO(developer): Uncomment the following line before running the sample.
 */
// const bucketName = 'Name of a bucket, e.g. my-bucket';

// Creates a new bucket in the Asia region with the coldline default storage
// class. Leave the second argument blank for default settings.
//
// For default values see: https://cloud.google.com/storage/docs/locations and
// https://cloud.google.com/storage/docs/storage-classes
await storage.createBucket(bucketName, {
  location: 'ASIA',
  storageClass: 'COLDLINE',
});

console.log(`Bucket ${bucketName} created.`);

PHP

Para mais informações, consulte a documentação de referência da API Cloud Storage para PHP.

use Google\Cloud\Storage\StorageClient;

/**
 * Create a Cloud Storage Bucket.
 *
 * @param string $bucketName name of the bucket to create.
 * @param string $options options for the new bucket.
 *
 * @return Google\Cloud\Storage\Bucket the newly created bucket.
 */
function create_bucket($bucketName, $options = [])
{
    $storage = new StorageClient();
    $bucket = $storage->createBucket($bucketName, $options);
    printf('Bucket created: %s' . PHP_EOL, $bucket->name());
}

Python

Para mais informações, consulte a documentação de referência da API Cloud Storage para Python.

def create_bucket(bucket_name):
    """Creates a new bucket."""
    storage_client = storage.Client()
    bucket = storage_client.create_bucket(bucket_name)
    print('Bucket {} created'.format(bucket.name))

Ruby

Para mais informações, consulte a documentação de referência da API Cloud Storage para Ruby.

# project_id    = "Your Google Cloud project ID"
# bucket_name   = "Name of Google Cloud Storage bucket to create"
# location      = "Location of where to create Cloud Storage bucket"
# storage_class = "Storage class of Cloud Storage bucket"

require "google/cloud/storage"

storage = Google::Cloud::Storage.new project_id: project_id
bucket  = storage.create_bucket bucket_name,
                                location:      location,
                                storage_class: storage_class

puts "Created bucket #{bucket.name} in #{location}" +
     " with #{storage_class} class"

APIs REST

API JSON

Para informações sobre as classes de armazenamento disponíveis para serem definidas como padrão para o intervalo, consulte Classes de armazenamento.

  1. Consiga um token de acesso de autorização do OAuth 2.0 Playground. Configure o Playground para usar suas credenciais do OAuth.
  2. Crie um arquivo .json que contenha as informações a seguir e substitua [VALUES_IN_BRACKETS] pelos valores apropriados:
  3. {
      "name": "[BUCKET_NAME]",
      "location": "[BUCKET_LOCATION]",
      "storageClass": "[STORAGE_CLASS]"
    }
  4. Use cURL para chamar a API JSON, substituindo [VALUES_IN_BRACKETS] pelos valores apropriados:
    curl -X POST --data-binary @[JSON_FILE_NAME].json \
         -H "Authorization: Bearer [OAUTH2_TOKEN]" \
         -H "Content-Type: application/json" \
         "https://www.googleapis.com/storage/v1/b?project=[PROJECT_ID]"

API XML

Para informações sobre as classes de armazenamento disponíveis para serem definidas como padrão para o intervalo, consulte Classes de armazenamento.

  1. Consiga um token de acesso de autorização do OAuth 2.0 Playground. Configure o Playground para usar suas credenciais do OAuth.
  2. Substitua [VALUES_IN_BRACKETS] pelos valores apropriados para criar um arquivo .xml com as informações abaixo:
  3. <CreateBucketConfiguration>
       <LocationConstraint>[BUCKET_LOCATION]</LocationConstraint>
       <StorageClass>[STORAGE_CLASS]</StorageClass>
    </CreateBucketConfiguration>
  4. Use cURL para chamar a API XML, substituindo [VALUES_IN_BRACKETS] pelos valores apropriados:
    curl -X PUT --data-binary @[XML_FILE_NAME].xml \
         -H "Authorization: Bearer [OAUTH2_TOKEN]" \
         -H "x-goog-project-id: [PROJECT_ID]" \
         "https://storage.googleapis.com/[BUCKET_NAME]"

Etapa 2) Copiar arquivos do intervalo antigo para o novo

Console

Para copiar dados de um intervalo do Cloud Storage para outro, use o Serviço de Transferência do Cloud Storage no Console do Google Cloud Platform:

  1. Abra a página Transferir no Console do Google Cloud Platform.

    Abra a página Transferir

  2. Clique em Criar job de transferência.
  3. Siga as instruções detalhadas e clique em Continuar ao concluir cada etapa:

    • Selecionar a origem: use o intervalo do Google Cloud Storage como a origem escolhida e clique em Procurar para encontrar e selecionar o intervalo do qual você pretende retirar os arquivos.

    • Selecionar o destino: clique em Procurar para encontrar e selecione o intervalo para que pretende mover os arquivos.

      Marque a caixa de seleção Excluir objetos de origem após a conclusão da transferência.

    • Configurar transferência: ignore essa seção.

  4. Depois de concluir as instruções, clique em Criar.

    Isso inicia o processo de cópia dos arquivos do intervalo antigo para o novo. Esse processo pode demorar algum tempo. Depois de clicar em Criar, você pode sair do Console do Google Cloud Platform.

Para visualizar o progresso da transferência, abra a página "Transferir" no Console do Google Cloud Platform.

Abrir a página Transferir

gsutil

  1. Verifique se pelo menos o gsutil 4.12 está instalado.
  2. Use o comando gsutil cp com a opção -r para copiar recursivamente todos os arquivos do intervalo de origem para o intervalo de destino. Substitua [VALUES_IN_BRACKETS] pelos valores apropriados:

    gsutil cp -r gs://[SOURCE_BUCKET]/* gs://[DESTINATION_BUCKET]

APIs REST

API JSON

Use o método rewrite da API JSON para copiar dados em blocos de tamanho limitado em várias solicitações. Ao fazer isso, é preciso estabelecer um loop e chamar o método rewrite até que todos os dados tenham sido movidos:

  1. Use cURL e o método de substituição da API JSON para copiar dados de um intervalo de origem para um intervalo de destino. Basta substituir [VALUES_IN_BRACKETS] pelos valores apropriados:
  2. curl -X POST -H "Authorization: Bearer [OAUTH2_TOKEN]" \
    -H "Content-Length: 0" \
    "https://www.googleapis.com/storage/v1/b/[SOURCE_BUCKET]/o/[OBJECT_NAME]/rewriteTo/b/[DESTINATION_BUCKET]/o/[OBJECT_NAME]"
    

    Por exemplo, se o objeto tiver 10 GB, a resposta a essa solicitação será parecida com esta:

    {
    "kind": "storage#rewriteResponse",
    "totalBytesRewritten": 1048576,
    "objectSize": 10000000000,
    "done": false,
    "rewriteToken": [TOKEN_VALUE]
    }
    
  3. Use o rewriteToken em uma solicitação posterior e continue a copiar dados, substituindo [VALUES_IN_BRACKETS] pelos valores apropriados:
  4. curl -X POST -H "Authorization: Bearer [OAUTH2_TOKEN]" \
    -H "Content-Length: 0" \
    -d '{"rewriteToken": "[TOKEN_VALUE]"}' \
    "https://www.googleapis.com/storage/v1/b/[SOURCE_BUCKET]/o/[OBJECT_NAME]/rewriteTo/b/[DESTINATION_BUCKET]/o/[OBJECT_NAME]"
    

    Quando todos os dados forem copiados, a última resposta terá uma propriedade done igual a true. Não há propriedade rewriteToken e os metadados do objeto copiado são incluídos na propriedade resource.

    {
    "kind": "storage#rewriteResponse",
    "totalBytesRewritten": 10000000000,
    "objectSize": 10000000000,
    "done": true,
    "resource": objects Resource
    }
    

Etapa 3) Excluir arquivos do intervalo antigo

Console

Você não precisa fazer nada para excluir os arquivos do intervalo antigo. Como parte da cópia de arquivos com o Serviço de Transferência, os arquivos antigos são excluídos automaticamente. Isso pressupõe que você tenha marcado a caixa de seleção "Excluir objetos de origem após concluir a transferência".

gsutil

Use o comando gsutil rm com a opção -r para excluir recursivamente todos os arquivos do intervalo de origem, bem como o próprio depósito de origem. Substitua [VALUES_IN_BRACKETS] pelos valores apropriados:

gsutil rm -r gs://[SOURCE_BUCKET]

Ou, para excluir os arquivos mantendo o intervalo de origem:

gsutil rm -a gs://[SOURCE_BUCKET]/**

APIs REST

API JSON

  1. Use cURL e o método delete da API JSON para remover a versão original de seus dados com o seguinte comando, substituindo [VALUES_IN_BRACKETS] pelos valores apropriados:
    curl -X DELETE -H "Authorization: Bearer [OAUTH2_TOKEN]" \
    https://www.googleapis.com/storage/v1/b/[SOURCE_BUCKET]/o/[OBJECT_NAME]

Se for bem-sucedido, o método retornará uma resposta vazia.

Próximas etapas

Esta página foi útil? Conte sua opinião sobre:

Enviar comentários sobre…

Precisa de ajuda? Acesse nossa página de suporte.