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 immutable.
Copiar um objeto
Papéis necessários
Para receber as permissões necessárias para copiar um objeto, peça ao
administrador para conceder a você o papel de leitor de objetos do Storage
(roles/storage.objectViewer
) no bucket de origem e o papel de usuário do objeto do Storage (roles/storage.objectUser
) no
bucket de destino. Se você planeja usar o console do Google Cloud, peça ao
administrador para conceder a você o papel básico de Leitor nos projetos que contêm
os buckets de origem e destino, além de conceder as funções de Leitor de objetos do
Storage e Usuário de objetos do Storage.
Esses papéis contêm as seguintes permissões, que são necessárias para copiar um objeto:
storage.objects.get
no bucket de origemstorage.objects.create
no bucket de destinostorage.objects.delete
no bucket de destino (somente necessário se for substituir um objeto)
Ao usar o console do Google Cloud, você também precisa ter as seguintes permissões:
storage.objects.list
nos buckets de origem e de destinostorage.buckets.list
nos projetos que contêm os buckets de origem e destino
Se o objeto que você quer copiar tiver recursos ativados, talvez seja necessário usar
funções alternativas. Por exemplo, se o objeto que você quer copiar tiver
uma configuração de retenção de objetos que você quer manter, será necessário ter uma função no
bucket de destino que inclua a
permissão storage.objects.setRetention
, como a de administrador de objetos do Storage
(roles/storage.objectAdmin
).
Essas permissões podem ser concedidas com funções personalizadas ou outros papéis predefinidos.
Para instruções sobre como conceder papéis nos buckets, consulte Usar o IAM com buckets.
Para instruções sobre como conceder papéis a projetos, consulte Gerenciar o acesso aos projetos.
Para copiar um objeto em um intervalo do Cloud Storage:
- No Console do Google Cloud, acesse a página Buckets do Cloud Storage.
Na lista de buckets, clique no nome daquele que contém o objeto que você quer copiar.
A página Detalhes do bucket é aberta, com a guia Objetos selecionada.
Navegue até o objeto, que pode estar localizado em uma pasta.
Clique no menu flutuante objeto (more_vert) associado ao objeto.
Clique em Copiar.
O painel Copiar objeto é exibido.
No campo 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 saber como acessar informações detalhadas de erro sobre operações do Cloud Storage com falha no console do Google Cloud, consulte Solução de problemas.
Use o comando gcloud storage cp
:
gcloud storage 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á semelhante a esta:
Copying gs://example-bucket/file.txt to gs://other-bucket/file-copy.txt Completed files 1/1 | 164.3kiB/164.3kiB
Para mais informações, consulte a documentação de referência da API Cloud Storage C++.
Para autenticar no Cloud Storage, configure o Application Default Credentials. Para mais informações, acesse Configurar a autenticação para bibliotecas de cliente.
Para mais informações, consulte a documentação de referência da API Cloud Storage C#.
Para autenticar no Cloud Storage, configure o Application Default Credentials. Para mais informações, acesse Configurar a autenticação para bibliotecas de cliente.
Para mais informações, consulte a documentação de referência da API Cloud Storage Go.
Para autenticar no Cloud Storage, configure o Application Default Credentials. Para mais informações, acesse Configurar a autenticação para bibliotecas de cliente.
Para mais informações, consulte a documentação de referência da API Cloud Storage Java.
Para autenticar no Cloud Storage, configure o Application Default Credentials. Para mais informações, acesse Configurar a autenticação para bibliotecas de cliente.
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, acesse Configurar a autenticação para bibliotecas de cliente.
Para mais informações, consulte a documentação de referência da API Cloud Storage PHP.
Para autenticar no Cloud Storage, configure o Application Default Credentials. Para mais informações, acesse Configurar a autenticação para bibliotecas de cliente.
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, acesse Configurar a autenticação para bibliotecas de cliente.
Para mais informações, consulte a documentação de referência da API Cloud Storage Ruby.
Para autenticar no Cloud Storage, configure o Application Default Credentials. Para mais informações, acesse Configurar a autenticação para bibliotecas de cliente.
Ter a CLI gcloud instalada e inicializada, o que permite gerar um token de acesso para o cabeçalho
Authorization
.Use
cURL
para chamar a API JSON com uma solicitação dePOST
Object:curl -X POST \ -H "Authorization: Bearer $(gcloud auth print-access-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:
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 $(gcloud auth print-access-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 }
Ter a CLI gcloud instalada e inicializada, o que permite gerar um token de acesso para o cabeçalho
Authorization
.Use
cURL
para chamar a API XML com uma solicitação de objetoPUT
:curl -X PUT \ -H "Authorization: Bearer $(gcloud auth print-access-token)" \ -H "x-goog-copy-source:
SOURCE_BUCKET_NAME /SOURCE_OBJECT_NAME " \ "https://storage.googleapis.com/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 codificado por URL que você quer dar à cópia do seu objeto. Por exemplo,shiba.png
.
Mover ou renomear um objeto
Papéis necessários
Para receber as permissões necessárias para mover ou renomear um objeto,
peça ao administrador para conceder a você o papel de Usuário do objeto do Storage
(roles/storage.objectUser
) no bucket de origem e
no de destino. Se você planeja usar o console do Google Cloud, peça
ao administrador para conceder a você o papel básico de "Visualizador" nos projetos
que contêm os buckets de origem e destino, além de conceder a função de usuário de
objetos do Storage.
Esses papéis contêm as seguintes permissões, que são necessárias para mover ou renomear um objeto:
storage.objects.delete
no bucket de origem (também necessário no bucket de destino se um objeto for substituído)storage.objects.get
no bucket de origemstorage.objects.create
no bucket de destino
Ao usar o console do Google Cloud, você também precisa ter as seguintes permissões:
storage.objects.list
nos buckets de origem e de destinostorage.buckets.list
nos projetos que contêm os buckets de origem e destino
Se o objeto que você quer mover ou renomear tiver recursos ativados, talvez seja
necessário usar funções alternativas. Por exemplo, se o objeto que você quer mover tiver
uma configuração de retenção de objetos, será necessário ter um papel no
bucket de destino que inclua a
permissão storage.objects.setRetention
, como o papel de administrador de objetos do
Storage (roles/storage.objectAdmin
).
Essas permissões podem ser concedidas com funções personalizadas ou outros papéis predefinidos.
Para instruções sobre como conceder papéis nos buckets, consulte Usar o IAM com buckets.
Para instruções sobre como conceder papéis a projetos, consulte Gerenciar o acesso aos projetos.
Para mover um objeto no Cloud Storage entre buckets ou renomear um objeto dentro de um bucket:
- No Console do Google Cloud, acesse a página Buckets do Cloud Storage.
Na lista de buckets, clique no nome do bucket que contém o objeto que você quer mover ou renomear.
A página Detalhes do bucket é aberta, com a guia Objetos selecionada.
Navegue até o objeto, que pode estar localizado em uma pasta.
Clique no menu flutuante objeto (more_vert) associado ao objeto.
Se você quiser dar um novo nome ao objeto no mesmo bucket, clique em Renomear.
Na janela de sobreposição, insira um novo nome para o objeto.
Clique em Renomear.
Se quiser mover o objeto para outro bucket, 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 saber como acessar informações detalhadas de erro sobre operações do Cloud Storage com falha no console do Google Cloud, consulte Solução de problemas.
Use o comando gcloud storage mv
:
gcloud storage 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 ou renomear. Por exemplo,my-bucket
.SOURCE_OBJECT_NAME
é o nome do objeto que você quer mover ou renomear. Por exemplo,pets/dog.png
.DESTINATION_BUCKET_NAME
é o nome do bucket que armazena o objeto movido ou renomeado. Por exemplo,another-bucket
.DESTINATION_OBJECT_NAME
é o nome que você quer que o objeto tenha após ser movido ou renomeado. Por exemplo,shiba.png
.
Se a operação for bem-sucedida, a resposta será semelhante a esta:
Copying gs://example-bucket/old-file.txt to gs://new-bucket/new-file.txt Removing gs://example-bucket/old-file.txt... Completed files 1/1 | 164.3kiB/164.3kiB
Para mais informações, consulte a documentação de referência da API Cloud Storage C++.
Para autenticar no Cloud Storage, configure o Application Default Credentials. Para mais informações, acesse Configurar a autenticação para bibliotecas de cliente.
Para mais informações, consulte a documentação de referência da API Cloud Storage C#.
Para autenticar no Cloud Storage, configure o Application Default Credentials. Para mais informações, acesse Configurar a autenticação para bibliotecas de cliente.
Para mais informações, consulte a documentação de referência da API Cloud Storage Go.
Para autenticar no Cloud Storage, configure o Application Default Credentials. Para mais informações, acesse Configurar a autenticação para bibliotecas de cliente.
Para mais informações, consulte a documentação de referência da API Cloud Storage Java.
Para autenticar no Cloud Storage, configure o Application Default Credentials. Para mais informações, acesse Configurar a autenticação para bibliotecas de cliente.
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, acesse Configurar a autenticação para bibliotecas de cliente.
Para mais informações, consulte a documentação de referência da API Cloud Storage PHP.
Para autenticar no Cloud Storage, configure o Application Default Credentials. Para mais informações, acesse Configurar a autenticação para bibliotecas de cliente.
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, acesse Configurar a autenticação para bibliotecas de cliente.
Para mais informações, consulte a documentação de referência da API Cloud Storage Ruby.
Para autenticar no Cloud Storage, configure o Application Default Credentials. Para mais informações, acesse Configurar a autenticação para bibliotecas de cliente.
Para mover ou renomear um objeto usando diretamente a API JSON, primeiro faça uma cópia do objeto com as propriedades desejadas e exclua o objeto original.
Para mover ou renomear um objeto usando diretamente a API XML, primeiro faça uma cópia do objeto com as propriedades desejadas e 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.
- Torne objetos e buckets acessíveis publicamente.
- Saiba mais sobre os requisitos de nomenclatura de objetos.
- Saiba como usar condições predefinidas para evitar disputas.