Nesta página, mostramos como copiar, renomear e mover objetos. Algumas ferramentas realizam operações atômicas de movimentação de objetos, enquanto outras simulam uma operação de movimentação copiando o objeto para um novo local especificado e excluindo o objeto original.
- Para instruções sobre como copiar objetos, consulte Copiar objetos.
- Para instruções sobre como mover ou renomear objetos copiando-os, consulte Mover ou renomear objetos copiando.
- Para instruções sobre como renomear objetos de forma atômica, consulte Renomear objetos de forma atômica.
Recomendamos usar o Serviço de Transferência do Cloud Storage para mover mais de 1 TB de dados entre buckets.
Antes de começar
Para copiar, renomear ou mover objetos, é necessário ter as funções do IAM necessárias. As seções a seguir descrevem os requisitos do IAM para diferentes casos de uso.
Copiar objetos (incluindo mover ou renomear por cópia)
Para receber as permissões necessárias para copiar objetos, peça ao administrador para conceder a você os seguintes papéis do IAM no bucket de origem que contém os objetos que você quer mover ou no bucket de destino para onde você quer mover os objetos:
-
Leitor de objetos do Storage (
roles/storage.objectViewer
) no bucket de origem -
Usuário do objeto de armazenamento (
roles/storage.objectUser
) no bucket de destino -
Para copiar objetos usando o console Google Cloud :
Papel básico de leitor (
roles/viewer
) nos buckets de origem e destino, além deroles/storage.objectViewer
eroles/storage.objectUser
Esses papéis predefinidos contêm as permissões necessárias para copiar objetos. Para conferir as permissões exatas necessárias, expanda a seção Permissões necessárias:
Permissões necessárias
As seguintes permissões são necessárias para copiar objetos:
-
storage.objects.get
no bucket de origem -
storage.objects.create
no bucket de destino -
storage.objects.delete
(necessário apenas se você estiver substituindo ou sobrescrevendo um objeto no bucket de destino como parte de uma operação de cópia ou movimentação de objeto) no bucket de destino -
storage.objects.delete
(necessário apenas se você estiver movendo um objeto usando uma operação de cópia e exclusão) no bucket de origem -
storage.folders.create
(obrigatório apenas se o objeto que você está movendo estiver localizado em uma pasta que você quer criar no bucket de destino) no bucket de destino -
storage.objects.list
(obrigatório apenas se você estiver copiando, movendo ou renomeando um objeto usando o console Google Cloud ) nos buckets de origem e destino -
storage.buckets.list
(obrigatório apenas se você estiver copiando, movendo ou renomeando um objeto usando o console Google Cloud ) no projeto que contém os buckets de origem e de destino
Também é possível receber essas permissões com funções personalizadas.
Para informações sobre como conceder papéis nos buckets, consulte Usar o IAM com buckets. Para informações sobre como conceder papéis em projetos, consulte Gerenciar acesso a projetos.
Se o objeto que você quer copiar tiver determinados recursos ativados, talvez seja necessário usar
funções adicionais ou 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
).
Para mais informações, consulte
Permissões do IAM para o Cloud Storage.
Renomear objetos de forma atômica
Para receber as permissões necessárias para renomear objetos de forma atômica,
peça ao administrador para conceder a você o papel do IAM de
Usuário de objetos do Storage (roles/storage.objectUser
)
no bucket que contém o objeto que você quer renomear.
Esse papel predefinido contém as permissões necessárias para renomear objetos de forma atômica. Para conferir as permissões exatas necessárias, expanda a seção Permissões necessárias:
Permissões necessárias
As seguintes permissões são necessárias para renomear objetos de forma atômica:
-
storage.objects.move
-
storage.objects.create
-
storage.objects.delete
(necessário apenas se você estiver substituindo um objeto)
Também é possível receber essas permissões com funções personalizadas.
Para informações sobre como conceder papéis nos buckets, consulte Usar o IAM com buckets.
Copiar objetos
Esta seção descreve como copiar objetos. É possível copiar objetos de um bucket para outro.
Console
- No console 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 Google Cloud , consulte Solução de problemas.
Linha de comando
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
Bibliotecas de cliente
C++
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.
C#
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.
Go
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.
Java
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.
Node.js
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.
PHP
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.
Python
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.
Ruby
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.
APIs REST
API JSON
Ter 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 de objetoPOST
: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 }
API XML
Ter 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 objetos copiando
Nesta seção, descrevemos como mover ou renomear objetos usando operações de cópia de objetos subjacentes. As ferramentas descritas nesta seção movem e renomeiam objetos copiando o objeto original para outro namespace e excluindo o objeto original.
Console
- No console 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.
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 Google Cloud , consulte Solução de problemas.
Linha de comando
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 para onde você quer mover o objeto. 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
Bibliotecas de cliente
C++
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.
C#
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.
Go
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.
Java
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.
Node.js
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.
PHP
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.
Python
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.
Ruby
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.
APIs REST
API JSON
Para instruções da API JSON sobre como mover ou renomear objetos copiando, consulte Copiar objetos.
API XML
Para instruções da API XML sobre como mover ou renomear objetos copiando, consulte Copiar objetos.
Renomear objetos de forma atômica
Nesta seção, descrevemos como renomear objetos de forma atômica em um bucket.
Para renomear um objeto, use o método Objects: move
na
API JSON do Cloud Storage.
APIs REST
API JSON
Para renomear um objeto de forma atômica, faça o seguinte:
Ter 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çãoObjects: move
:curl -X POST
-H "Authorization: Bearer $(gcloud auth print-access-token)"
-H "Content-Length: 0"
"https://storage.googleapis.com/storage/v1/b/BUCKET_NAME/o/SOURCE_OBJECT_NAME/moveTo/o/DESTINATION_OBJECT_NAME"Em que:
BUCKET_NAME
é o nome do bucket que contém o objeto que você quer renomear. Por exemplo,my-bucket
.SOURCE_OBJECT_NAME
é o nome codificado por URL do objeto que você quer renomear. Por exemplo,pets/dog.png
, codificado por URL comopets%2Fdog.png
.DESTINATION_OBJECT_NAME
é o nome codificado por URL que você quer usar. Por exemplo,pets/cat.png
, codificado por URL comopets%2Fcat.png
.
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.