Como mover e renomear buckets

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

  • Se não houver dados no bucket antigo, exclua-o e crie outro bucket com um novo nome, em um novo local ou em um novo projeto.

  • Se houver dados no bucket antigo, crie um novo com o nome, local e/ou projeto que você quer, copie os dados do bucket 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 bucket tenha o mesmo nome do antigo, mova os dados duas vezes: um bucket intermediário armazena temporariamente os dados para que você possa excluir o bucket original e liberar o nome do bucket final.

Para mover seus dados de um bucket para outro, siga estas etapas:

Console

Use o Serviço de transferência do Cloud Storage no Console do Google Cloud para copiar dados de um bucket do Cloud Storage para outro:

  1. Se você ainda não tiver um bucket de destino, crie um bucket.
  2. Abra a página "Transferência" no Console do Google Cloud.

    Abrir a página Transferência

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

    • Selecione a origem: use o bucket do Google Cloud Storage como a origem selecionada e clique em Procurar para localizar e selecionar o bucket do qual quer mover os objetos.

    • Selecione Destino: clique em Procurar para localizar e selecionar o bucket para o qual quer mover os objetos.

      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.

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

    Isso inicia o processo de cópia dos objetos do bucket antigo para o novo. Esse processo pode levar algum tempo. No entanto, depois de clicar em Criar, será possível sair do Console do Google Cloud.

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

    Abrir a página Transferência

    Consulte a Solução de problemas para informações detalhadas sobre erros de operações com falha no navegador do Cloud Storage.

  6. Após a conclusão da transferência, não será necessário fazer nada para excluir os objetos do bucket antigo se a caixa de seleção Excluir objetos de origem após a conclusão da transferência estiver selecionada durante a configuração. No entanto, você também pode excluir o bucket antigo, o que precisa ser feito separadamente.

gsutil

  1. Verifique se pelo menos o gsutil 4.12 está instalado.
  2. Se você ainda não tiver um bucket de destino, crie um bucket.
  3. Use o comando gsutil cp, com a opção -r, para copiar recursivamente todos os objetos do bucket de origem para o bucket de destino:

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

    Em que:

    • SOURCE_BUCKET é o nome do bucket original. Por exemplo, old-bucket.
    • DESTINATION_BUCKET é o nome do bucket para o qual você está movendo os dados. Por exemplo, my-bucket.
  4. Use o comando gsutil rm, com a opção -r, para excluir recursivamente todos os objetos do bucket de origem, assim como o próprio bucket de origem:

    gsutil rm -r gs://SOURCE_BUCKET

    Em que SOURCE_BUCKET é o nome do bucket original. Por exemplo, old-bucket.

    Ou, para excluir os objetos, mas manter o bucket de origem:

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

APIs REST

API JSON

Use o método rewriteda 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. Receba um token de acesso de autorização do OAuth 2.0 Playground. Configure o Playground para usar suas credenciais do OAuth.
  2. Se você ainda não tiver um bucket de destino, crie um bucket.

  3. Use cURL e o método da API JSON rewrite para copiar dados de um bucket de origem para um bucket de destino:

    curl -X POST \
     -H "Authorization: Bearer OAUTH2_TOKEN" \
     -H "Content-Length: 0" \
     "https://storage.googleapis.com/storage/v1/b/SOURCE_BUCKET/o/OBJECT_NAME/rewriteTo/b/DESTINATION_BUCKET/o/OBJECT_NAME"

    Em que:

    • OAUTH2_TOKEN é o token de acesso gerado na Etapa 1.
    • SOURCE_BUCKET é o nome do bucket original. Por exemplo, old-bucket.
    • OBJECT_NAME é o nome do objeto que você quer copiar. Por exemplo, pets/dog.png.
    • DESTINATION_BUCKET é o nome do bucket para o qual você está movendo os dados. Por exemplo, my-bucket.

    Se o objeto tiver, por exemplo, 10 GB de tamanho, a resposta a essa solicitação será semelhante ao seguinte exemplo:

    {
     "kind": "storage#rewriteResponse",
     "totalBytesRewritten": 1048576,
     "objectSize": 10000000000,
     "done": false,
     "rewriteToken": TOKEN_VALUE
    }
  4. Use o rewriteToken em uma solicitação subsequente para continuar copiando dados:

    curl -X POST \
     -H "Authorization: Bearer OAUTH2_TOKEN" \
     -H "Content-Length: 0" \
     -d '{"rewriteToken": "TOKEN_VALUE"}' \
     "https://storage.googleapis.com/storage/v1/b/SOURCE_BUCKET/o/OBJECT_NAME/rewriteTo/b/DESTINATION_BUCKET/o/OBJECT_NAME"

    Em que:

    • OAUTH2_TOKEN é o token de acesso gerado na Etapa 1.
    • TOKEN_VALUE é o valor de rewriteToken retornado na etapa anterior.
    • SOURCE_BUCKET é o nome do bucket original. Por exemplo, old-bucket.
    • OBJECT_NAME é o nome do objeto que você quer copiar. Por exemplo, pets/bunny.png.
    • DESTINATION_BUCKET é o nome do bucket para o qual você está movendo os dados. Por exemplo, my-bucket.

    Quando todos os dados são copiados, a última resposta tem 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
    }
  5. Use cURL e o método da API JSONdelete para remover a versão original dos dados com o seguinte comando:

    curl -X DELETE \
    -H "Authorization: Bearer OAUTH2_TOKEN" \
    "https://storage.googleapis.com/storage/v1/b/SOURCE_BUCKET/o/OBJECT_NAME"

    Em que:

    • OAUTH2_TOKEN é o token de acesso gerado na Etapa 1.
    • SOURCE_BUCKET é o nome do bucket original. Por exemplo, old-bucket.
    • OBJECT_NAME é o nome do objeto que você quer excluir. Por exemplo, pets/dog.png.

A seguir