Nesta página, mostramos como copiar, renomear e mover objetos dentro e entre buckets no Cloud Storage.
Embora algumas ferramentas no Cloud Storage façam com que a movimentação ou renomeação de objetos pareça uma operação única, elas sempre consistem em uma operação de cópia seguida de uma operação de exclusão do objeto original, porque os objetos são imutáveis.
Prerequisites
Os pré-requisitos podem variar com base na ferramenta usada:
Console
Para concluir este guia usando o Console do Google Cloud, é preciso ter as permissões de IAM adequadas. Se os buckets que você quer acessar existirem em um projeto que você não criou, talvez seja necessário que o proprietário do projeto conceda a você um papel que contenha as permissões necessárias.
Para uma lista de permissões necessárias para ações específicas, consulte Permissões do IAM para o Console do Google Cloud.
Para ver a lista de papéis relevantes, consulte Papéis do Cloud Storage. Como alternativa, é possível criar um papel personalizado que tenha permissões mais limitadas.
Linha de comando
Para concluir este guia usando um utilitário de linha de comando, você precisa ter as permissões de IAM adequadas. Se os buckets que você quer acessar existirem em um projeto que você não criou, talvez seja necessário que o proprietário do projeto conceda a você um papel que contenha as permissões necessárias.
Para uma lista de permissões necessárias para ações específicas, consulte Permissões do IAM para comandos gsutil.
Para ver a lista de papéis relevantes, consulte Papéis do Cloud Storage. Como alternativa, é possível criar um papel personalizado que tenha permissões mais limitadas.
Exemplos de código
Para concluir este guia usando as bibliotecas de cliente do Cloud Storage, é preciso ter as permissões de IAM adequadas. Se os buckets que você quer acessar existirem em um projeto que você não criou, talvez seja necessário que o proprietário do projeto conceda a você um papel que contenha as permissões necessárias. Salvo indicação em contrário, as solicitações de biblioteca de cliente são feitas por meio da API JSON.
Para uma lista de permissões necessárias para ações específicas, consulte Permissões do IAM para métodos JSON.
Para ver a lista de papéis relevantes, consulte Papéis do Cloud Storage. Como alternativa, é possível criar um papel personalizado que tenha permissões mais limitadas.
APIs REST
API JSON
Para concluir este guia usando a API JSON, é preciso ter as permissões do IAM adequadas. Se os buckets que você quer acessar existirem em um projeto que você não criou, talvez seja necessário que o proprietário do projeto conceda a você um papel que contenha as permissões necessárias.
Para uma lista de permissões necessárias para ações específicas, consulte Permissões do IAM para métodos JSON.
Para ver a lista de papéis relevantes, consulte Papéis do Cloud Storage. Como alternativa, é possível criar um papel personalizado que tenha permissões mais limitadas.
Copiar um objeto
Para copiar um objeto em um intervalo do Cloud Storage:
Console
- No Console do Cloud, acesse a página Navegador do Cloud Storage.
Na lista de buckets, clique no nome do bucket que contém o objeto que você quer copiar.
A página Detalhes do bucket será aberta, com a guia Objetos selecionada.
Navegue até o objeto, que pode estar localizado em uma pasta.
Clique no menu mais ações (
) associado ao objeto.
Clique em Copiar.
O painel Copiar objeto é exibido.
Na caixa de texto Destino, digite o nome do bucket de destino e o nome do objeto copiado.
Se preferir, clique em Procurar para selecionar o destino. No entanto, as opções de navegação são limitadas aos buckets no projeto atual.
Clique em Copiar.
Para informações detalhadas sobre erros de operações com falha no navegador do Cloud Storage, consulte Solução de problemas.
Linha de comando
Use o comando gsutil cp
:
gsutil cp gs://SOURCE_BUCKET_NAME/SOURCE_OBJECT_NAME gs://DESTINATION_BUCKET_NAME/NAME_OF_COPY
Em que:
SOURCE_BUCKET_NAME
é o nome do bucket que contém o objeto que você quer copiar. Por exemplo,my-bucket
.SOURCE_OBJECT_NAME
é o nome do objeto que você quer copiar. Por exemplo,pets/dog.png
.DESTINATION_BUCKET_NAME
é o nome do bucket para o qual você quer copiar seu objeto. Por exemplo,another-bucket
.NAME_OF_COPY
é o nome que você quer dar à cópia do seu objeto. Por exemplo,shiba.png
.
Se a operação for bem-sucedida, a resposta será parecida com esta:
Operation completed over 1 objects/58.8 KiB.
Amostras de código
C++
Para mais informações, consulte a documentação de referência da API Cloud Storage para C++.
C#
Para mais informações, consulte a documentação de referência da API Cloud Storage para C#.
Go
Para mais informações, consulte a documentação de referência da API Cloud Storage para Go.
Java
Para mais informações, consulte a documentação de referência da API Cloud Storage para Java.
Node.js
Para mais informações, consulte a documentação de referência da API Cloud Storage para Node.js.
PHP
Para mais informações, consulte a documentação de referência da API Cloud Storage para PHP.
Python
Para mais informações, consulte a documentação de referência da API Cloud Storage para Python.
Ruby
Para mais informações, consulte a documentação de referência da API Cloud Storage para Ruby.
APIs REST
API JSON
- Receba um token de acesso de autorização do OAuth 2.0 Playground. Configure o Playground para usar suas credenciais do OAuth. Para ver instruções, consulte Autenticação de APIs.
Use
cURL
para chamar a API JSON com uma solicitação dePOST
Objeto:curl -X POST \ -H "Authorization: Bearer OAUTH2_TOKEN" \ -H "Content-Length: 0" \ "https://storage.googleapis.com/storage/v1/b/SOURCE_BUCKET_NAME/o/SOURCE_OBJECT_NAME/rewriteTo/b/DESTINATION_BUCKET_NAME/o/NAME_OF_COPY"
Em que:
OAUTH2_TOKEN
é o nome do token de acesso que você gerou na etapa 1.SOURCE_BUCKET_NAME
é o nome do bucket que contém o objeto que você quer copiar. Por exemplo,my-bucket
.SOURCE_OBJECT_NAME
é o nome codificado por URL do objeto que você quer copiar. Por exemplo,pets/dog.png
, codificado por URL comopets%2Fdog.png
.DESTINATION_BUCKET_NAME
é o nome do bucket para o qual você quer copiar seu objeto. Por exemplo,another-bucket
.NAME_OF_COPY
é o nome codificado por URL que você quer dar à cópia do seu objeto. Por exemplo,shiba.png
.
Como o método
rewrite
copia dados em blocos de tamanho limitado, sua cópia pode exigir várias solicitações, especialmente para objetos grandes.Por exemplo, a resposta a seguir para uma solicitação
rewrite
indica que você precisa fazer outras solicitaçõesrewrite
:{ "kind": "storage#rewriteResponse", "totalBytesRewritten": 1048576, "objectSize": 10000000000, "done": false, "rewriteToken": TOKEN_VALUE }
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_NAME/o/SOURCE_OBJECT_NAME/rewriteTo/b/DESTINATION_BUCKET_NAME/o/NAME_OF_COPY"
Em que:
TOKEN_VALUE
é o valor derewriteToken
retornado na solicitação anterior.- Todos os outros valores correspondem aos usados na solicitação anterior.
Quando o objeto é totalmente copiado, a última resposta tem uma propriedade
done
definida comotrue
, não há propriedaderewriteToken
e os metadados da cópia são incluídos na propriedaderesource
.{ "kind": "storage#rewriteResponse", "totalBytesRewritten": 10000000000, "objectSize": 10000000000, "done": true, "resource": objects Resource }
API XML
- Receba um token de acesso de autorização do OAuth 2.0 Playground. Configure o Playground para usar suas credenciais do OAuth. Para ver instruções, consulte Autenticação de APIs.
Use
cURL
(em inglês) para chamar a API XML com uma solicitação de objetoPUT
:curl -X PUT \ -H "Authorization: Bearer OAUTH2_TOKEN" \ -H "x-goog-copy-source: SOURCE_BUCKET_NAME/SOURCE_OBJECT_NAME" \ "https://storage.googleapis.com/DESTINATION_BUCKET_NAME/NAME_OF_COPY"
Em que:
OAUTH2_TOKEN
é o nome do token de acesso que você gerou na etapa 1.SOURCE_BUCKET_NAME
é o nome do bucket que contém o objeto que você quer copiar. Por exemplo,my-bucket
.SOURCE_OBJECT_NAME
é o nome do objeto que você quer copiar. Por exemplo,pets/dog.png
.DESTINATION_BUCKET_NAME
é o nome do bucket para o qual você quer copiar seu objeto. Por exemplo,another-bucket
.NAME_OF_COPY
é o nome codificado por URL que você quer dar à cópia do seu objeto. Por exemplo,shiba.png
.
Renomear um objeto
Para renomear um objeto existente em um dos seus buckets do Cloud Storage, faça o seguinte:
Console
- No Console do Cloud, acesse a página Navegador do Cloud Storage.
Na lista de buckets, clique no nome do bucket que contém o objeto que você quer renomear.
A página Detalhes do bucket será aberta, com a guia Objetos selecionada.
Navegue até o objeto, que pode estar localizado em uma pasta.
Clique no menu mais ações (
) associado ao objeto.
Clique em Renomear.
Na janela de sobreposição, insira um novo nome para o objeto.
Clique em Renomear.
Para informações detalhadas sobre erros de operações com falha no navegador do Cloud Storage, consulte Solução de problemas.
Linha de comando
Use o comando gsutil mv
:
gsutil mv gs://BUCKET_NAME/OLD_OBJECT_NAME gs://BUCKET_NAME/NEW_OBJECT_NAME
Em que:
BUCKET_NAME
é o nome do bucket que contém o objeto que você quer renomear. Por exemplo,my-bucket
.OLD_OBJECT_NAME
é o nome do objeto que você quer renomear. Por exemplo,pets/dog.png
.NEW_OBJECT_NAME
é o novo nome que você quer dar ao seu objeto. Por exemplo,pets/shiba.png
.
Se a operação for bem-sucedida, a resposta será parecida com esta:
Operation completed over 1 objects/58.8 KiB.
Amostras de código
C++
Para mais informações, consulte a documentação de referência da API Cloud Storage para C++.
C#
Para mais informações, consulte a documentação de referência da API Cloud Storage para C#.
Go
Para mais informações, consulte a documentação de referência da API Cloud Storage para Go.
Java
Para mais informações, consulte a documentação de referência da API Cloud Storage para Java.
Node.js
Para mais informações, consulte a documentação de referência da API Cloud Storage para Node.js.
PHP
Para mais informações, consulte a documentação de referência da API Cloud Storage para PHP.
Python
Para mais informações, consulte a documentação de referência da API Cloud Storage para Python.
Ruby
Para mais informações, consulte a documentação de referência da API Cloud Storage para Ruby.
APIs REST
API JSON
Para renomear um objeto usando a API JSON diretamente, primeiro faça uma cópia do objeto, dê a ela o novo nome desejado e exclua o objeto original:
API XML
Para renomear um objeto usando a API XML diretamente, primeiro faça uma cópia do objeto, dê a ela o novo nome desejado e exclua o objeto original.
Mover um objeto
Para mover um objeto no Cloud Storage, faça o seguinte:
Console
- No Console do Cloud, acesse a página Navegador do Cloud Storage.
Na lista de buckets, clique no nome do bucket que contém o objeto que você quer mover.
A página Detalhes do bucket será aberta, com a guia Objetos selecionada.
Navegue até o objeto, que pode estar localizado em uma pasta.
Clique no menu mais ações (
) associado ao objeto.
Clique em Mover.
Na janela de sobreposição que aparece, clique em Procurar.
Selecione o destino do objeto que você está movendo.
Clique em Selecionar.
Clique em Mover.
Para informações detalhadas sobre erros de operações com falha no navegador do Cloud Storage, consulte Solução de problemas.
Linha de comando
Use o comando gsutil mv
:
gsutil mv gs://SOURCE_BUCKET_NAME/SOURCE_OBJECT_NAME gs://DESTINATION_BUCKET_NAME/DESTINATION_OBJECT_NAME
Em que:
SOURCE_BUCKET_NAME
é o nome do bucket que contém o objeto que você quer mover. Por exemplo,my-bucket
.SOURCE_OBJECT_NAME
é o nome do objeto que você quer mover. Por exemplo,pets/dog.png
.DESTINATION_BUCKET_NAME
é o nome do bucket para o qual você quer mover seu objeto. Por exemplo,another-bucket
.DESTINATION_OBJECT_NAME
é o nome que você quer dar ao objeto no novo local. Por exemplo,shiba.png
.
Se a operação for bem-sucedida, a resposta será parecida com esta:
Operation completed over 1 objects/58.8 KiB.
Amostras de código
C++
Para mais informações, consulte a documentação de referência da API Cloud Storage para C++.
C#
Para mais informações, consulte a documentação de referência da API Cloud Storage para C#.
Go
Para mais informações, consulte a documentação de referência da API Cloud Storage para Go.
Java
Para mais informações, consulte a documentação de referência da API Cloud Storage para Java.
Node.js
Para mais informações, consulte a documentação de referência da API Cloud Storage para Node.js.
PHP
Para mais informações, consulte a documentação de referência da API Cloud Storage para PHP.
Python
Para mais informações, consulte a documentação de referência da API Cloud Storage para Python.
Ruby
Para mais informações, consulte a documentação de referência da API Cloud Storage para Ruby.
APIs REST
API JSON
Para mover um objeto usando a API JSON diretamente, primeiro faça uma cópia do objeto no novo local desejado e depois exclua o objeto original.
API XML
Para mover um objeto usando a API XML diretamente, primeiro faça uma cópia do objeto no novo local desejado e depois exclua o objeto original.
Recomendamos usar o Serviço de Transferência do Cloud Storage para mover mais de 1 TB de dados entre buckets.
A seguir
- Altere a classe de armazenamento de um objeto.
- Edite os metadados de um objeto.
- Saiba mais sobre pastas e namespaces simples no Cloud Storage.
- Torne objetos e buckets acessíveis publicamente.
- Saiba mais sobre os requisitos de nomenclatura de objetos.
- Saiba mais sobre a imutabilidade de objetos.