Esta página mostra como copiar, mudar o nome e mover objetos. Embora algumas ferramentas realizem operações de movimento de objetos atómicas, outras ferramentas simulam uma operação de movimento de objetos copiando o objeto para uma nova localização especificada e, em seguida, eliminando o objeto original.
- Para ver instruções sobre como copiar objetos, consulte o artigo Copie objetos.
- Para obter instruções sobre como mover ou mudar o nome de objetos copiando-os, consulte o artigo Mova ou mude o nome de objetos copiando-os.
- Para ver instruções sobre como mudar o nome de objetos de forma atómica, consulte o artigo Mude o nome de objetos de forma atómica.
Recomendamos a utilização do Serviço de transferência de armazenamento para mover mais de 1 TB de dados entre contentores.
Antes de começar
Para copiar, mudar o nome ou mover objetos, tem de ter as funções do IAM necessárias. As secções seguintes descrevem os requisitos do IAM para diferentes exemplos de utilização.
Copiar objetos (incluindo mover ou mudar o nome através da cópia)
Para receber as autorizações de que precisa para copiar objetos, peça ao seu administrador que lhe conceda as seguintes funções do IAM no contentor de origem que contém os objetos que quer mover ou no contentor de destino para onde quer mover os objetos:
-
Storage Object Viewer (
roles/storage.objectViewer
) no contentor de origem -
Utilizador de objetos do Storage (
roles/storage.objectUser
) no contentor de destino -
Para copiar objetos através da Google Cloud consola:
Função básica de leitor (
roles/viewer
) no contentor de origem e no contentor de destino, além deroles/storage.objectViewer
eroles/storage.objectUser
Estas funções predefinidas contêm as autorizações necessárias para copiar objetos. Para ver as autorizações exatas que são necessárias, expanda a secção Autorizações necessárias:
Autorizações necessárias
São necessárias as seguintes autorizações para copiar objetos:
-
storage.objects.get
no contentor de origem -
storage.objects.create
no contentor de destino -
storage.objects.delete
(obrigatório apenas se estiver a substituir ou a substituir um objeto no contentor de destino como parte de uma operação de cópia ou movimento de objetos) no contentor de destino -
storage.objects.delete
(obrigatório apenas se estiver a mover um objeto através de uma operação de cópia e eliminação subjacente) no contentor de origem -
storage.folders.create
(obrigatório apenas se o objeto que está a mover estiver localizado numa pasta que quer criar no contentor de destino) no contentor de destino -
storage.objects.list
(obrigatório apenas se estiver a copiar, mover ou mudar o nome de um objeto através da Google Cloud consola) nos contentores de origem e destino -
storage.buckets.list
(obrigatório apenas se estiver a copiar, mover ou mudar o nome de um objeto através da Google Cloud consola) no projeto que contém os contentores de origem e de destino
Também pode obter estas autorizações com funções personalizadas.
Para ver informações sobre a concessão de funções em contentores, consulte o artigo Use o IAM com contentores. Para informações sobre a atribuição de funções em projetos, consulte o artigo Faça a gestão do acesso a projetos.
Se o objeto que quer copiar tiver determinadas funcionalidades ativadas, pode precisar de funções adicionais ou alternativas. Por exemplo, se o objeto que quer copiar tiver uma configuração de retenção de objetos que quer manter, precisa de uma função no contentor de destino que inclua a autorização storage.objects.setRetention
, como a função de administrador de objetos de armazenamento (roles/storage.objectAdmin
).
Para mais informações, consulte o artigo
Autorizações de IAM para o Cloud Storage.
Mude o nome dos objetos de forma atómica
Para receber as autorizações de que
precisa para mudar o nome de objetos de forma atómica,
peça ao seu administrador para lhe conceder a função de IAM
Utilizador de objetos de armazenamento (roles/storage.objectUser
)
no contentor que contém o objeto ao qual quer mudar o nome.
Esta função predefinida contém as autorizações necessárias para mudar o nome de objetos de forma atómica. Para ver as autorizações exatas que são necessárias, expanda a secção Autorizações necessárias:
Autorizações necessárias
São necessárias as seguintes autorizações para mudar o nome de objetos de forma atómica:
-
storage.objects.move
-
storage.objects.create
-
storage.objects.delete
(obrigatório apenas se estiver a substituir um objeto)
Também pode obter estas autorizações com funções personalizadas.
Para ver informações sobre a concessão de funções em contentores, consulte o artigo Use o IAM com contentores.
Copie objetos
Esta secção descreve como copiar objetos. Pode copiar objetos de um contentor para outro.
Consola
- Na Google Cloud consola, aceda à página Recipientes do Cloud Storage.
Na lista de contentores, clique no nome do contentor que contém o objeto que quer copiar.
É aberta a página Detalhes do contentor, com o separador Objetos selecionado.
Navegue para o objeto, que pode estar localizado numa pasta.
Clique no menu Adicional de objetos (more_vert) associado ao objeto.
Clique em Copiar.
É apresentado o painel Copiar objeto.
No campo Destino, escreva o nome do contentor de destino e o nome do objeto copiado.
Em alternativa, pode clicar em Procurar para selecionar o destino, mas as opções de procura estão limitadas a contentores no projeto atual.
Clique em Copiar.
Para saber como obter informações detalhadas sobre erros relativos a operações do Cloud Storage falhadas na Google Cloud consola, consulte a secção Resolução de problemas.
Linha de comandos
Use o comando gcloud storage cp
:
gcloud storage cp gs://SOURCE_BUCKET_NAME/SOURCE_OBJECT_NAME gs://DESTINATION_BUCKET_NAME/NAME_OF_COPY
Onde:
SOURCE_BUCKET_NAME
é o nome do contentor que contém o objeto que quer copiar. Por exemplo,my-bucket
.SOURCE_OBJECT_NAME
é o nome do objeto que quer copiar. Por exemplo,pets/dog.png
.DESTINATION_BUCKET_NAME
é o nome do contentor onde quer copiar o objeto. Por exemplo,another-bucket
.NAME_OF_COPY
é o nome que quer dar à cópia do objeto. Por exemplo,shiba.png
.
Se for bem-sucedido, a resposta é semelhante ao seguinte exemplo:
Copying gs://example-bucket/file.txt to gs://other-bucket/file-copy.txt Completed files 1/1 | 164.3kiB/164.3kiB
Bibliotecas cliente
C++
Para mais informações, consulte a documentação de referência da API C++ do Cloud Storage.
Para se autenticar no Cloud Storage, configure as Credenciais padrão da aplicação. Para mais informações, consulte o artigo Configure a autenticação para bibliotecas de cliente.
C#
Para mais informações, consulte a documentação de referência da API C# do Cloud Storage.
Para se autenticar no Cloud Storage, configure as Credenciais padrão da aplicação. Para mais informações, consulte o artigo Configure a autenticação para bibliotecas de cliente.
Go
Para mais informações, consulte a documentação de referência da API Go do Cloud Storage.
Para se autenticar no Cloud Storage, configure as Credenciais padrão da aplicação. Para mais informações, consulte o artigo Configure a autenticação para bibliotecas de cliente.
Java
Para mais informações, consulte a documentação de referência da API Java do Cloud Storage.
Para se autenticar no Cloud Storage, configure as Credenciais padrão da aplicação. Para mais informações, consulte o artigo Configure a autenticação para bibliotecas de cliente.
Node.js
Para mais informações, consulte a documentação de referência da API Node.js do Cloud Storage.
Para se autenticar no Cloud Storage, configure as Credenciais padrão da aplicação. Para mais informações, consulte o artigo Configure a autenticação para bibliotecas de cliente.
PHP
Para mais informações, consulte a documentação de referência da API PHP do Cloud Storage.
Para se autenticar no Cloud Storage, configure as Credenciais padrão da aplicação. Para mais informações, consulte o artigo Configure a autenticação para bibliotecas de cliente.
Python
Para mais informações, consulte a documentação de referência da API Python do Cloud Storage.
Para se autenticar no Cloud Storage, configure as Credenciais padrão da aplicação. Para mais informações, consulte o artigo Configure a autenticação para bibliotecas de cliente.
Ruby
Para mais informações, consulte a documentação de referência da API Ruby do Cloud Storage.
Para se autenticar no Cloud Storage, configure as Credenciais padrão da aplicação. Para mais informações, consulte o artigo Configure a autenticação para bibliotecas de cliente.
APIs REST
API JSON
Ter a CLI gcloud instalada e inicializada, o que lhe permite gerar um token de acesso para o cabeçalho
Authorization
.Use
cURL
para chamar a API JSON com um pedido dePOST
objeto: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"
Onde:
SOURCE_BUCKET_NAME
é o nome do contentor que contém o objeto que quer copiar. Por exemplo,my-bucket
.SOURCE_OBJECT_NAME
é o nome com codificação URL do objeto que quer copiar. Por exemplo,pets/dog.png
, URL codificado comopets%2Fdog.png
.DESTINATION_BUCKET_NAME
é o nome do contentor onde quer copiar o objeto. Por exemplo,another-bucket
.NAME_OF_COPY
é o nome codificado em URL que quer dar à cópia do seu objeto. Por exemplo,shiba.png
.
Uma vez que o método
rewrite
copia os dados em blocos de tamanho limitado, a sua cópia pode exigir vários pedidos, especialmente para objetos grandes.Por exemplo, a seguinte resposta a um pedido
rewrite
indica que tem de fazer pedidosrewrite
adicionais:{ "kind": "storage#rewriteResponse", "totalBytesRewritten": 1048576, "objectSize": 10000000000, "done": false, "rewriteToken": TOKEN_VALUE }
Use o
rewriteToken
num pedido subsequente para continuar a copiar 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"
Onde:
TOKEN_VALUE
é o valorrewriteToken
devolvido no pedido anterior.- Todos os outros valores correspondem aos usados no pedido anterior.
Quando o objeto é totalmente copiado, a última resposta tem uma propriedade
done
definida comotrue
, não existe uma propriedaderewriteToken
e os metadados da cópia estão incluídos na propriedaderesource
.{ "kind": "storage#rewriteResponse", "totalBytesRewritten": 10000000000, "objectSize": 10000000000, "done": true, "resource": objects Resource }
API XML
Ter a CLI gcloud instalada e inicializada, o que lhe permite gerar um token de acesso para o cabeçalho
Authorization
.Use
cURL
para chamar a API XML com um pedido dePUT
objeto: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"
Onde:
SOURCE_BUCKET_NAME
é o nome do contentor que contém o objeto que quer copiar. Por exemplo,my-bucket
.SOURCE_OBJECT_NAME
é o nome do objeto que quer copiar. Por exemplo,pets/dog.png
.DESTINATION_BUCKET_NAME
é o nome do contentor onde quer copiar o objeto. Por exemplo,another-bucket
.NAME_OF_COPY
é o nome codificado em URL que quer dar à cópia do seu objeto. Por exemplo,shiba.png
.
Mova ou mude o nome de objetos copiando-os
Esta secção descreve como mover ou mudar o nome de objetos através de operações de cópia de objetos subjacentes. As ferramentas descritas nesta secção movem e mudam o nome de objetos copiando o objeto original para outro espaço de nomes e, em seguida, eliminando o objeto original.
Consola
- Na Google Cloud consola, aceda à página Recipientes do Cloud Storage.
Na lista de contentores, clique no nome do contentor que contém o objeto que quer mover.
É aberta a página Detalhes do contentor, com o separador Objetos selecionado.
Navegue para o objeto, que pode estar localizado numa pasta.
Clique no menu Adicional de objetos (more_vert) associado ao objeto.
Se quiser atribuir um novo nome ao objeto no mesmo contentor, clique em Mudar o nome.
Na janela de sobreposição apresentada, introduza um novo nome para o objeto.
Clique em Mudar o nome.
Se quiser mover o objeto para um contentor diferente, clique em Mover.
Na janela de sobreposição apresentada, clique em Procurar.
Selecione o destino do objeto que está a mover.
Clique em Selecionar.
Clique em Mover.
Para saber como obter informações detalhadas sobre erros relativos a operações do Cloud Storage falhadas na Google Cloud consola, consulte a secção Resolução de problemas.
Linha de comandos
Use o comando gcloud storage mv
:
gcloud storage mv gs://SOURCE_BUCKET_NAME/SOURCE_OBJECT_NAME gs://DESTINATION_BUCKET_NAME/DESTINATION_OBJECT_NAME
Onde:
SOURCE_BUCKET_NAME
é o nome do contentor que contém o objeto que quer mover ou mudar o nome. Por exemplo,my-bucket
.SOURCE_OBJECT_NAME
é o nome do objeto que quer mover ou mudar o nome. Por exemplo,pets/dog.png
.DESTINATION_BUCKET_NAME
é o nome do contentor para o qual quer mover o objeto. Por exemplo,another-bucket
.DESTINATION_OBJECT_NAME
é o nome que quer que o objeto tenha após a movimentação ou a mudança de nome. Por exemplo,shiba.png
.
Se for bem-sucedido, a resposta é semelhante ao seguinte exemplo:
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 cliente
C++
Para mais informações, consulte a documentação de referência da API C++ do Cloud Storage.
Para se autenticar no Cloud Storage, configure as Credenciais padrão da aplicação. Para mais informações, consulte o artigo Configure a autenticação para bibliotecas de cliente.
C#
Para mais informações, consulte a documentação de referência da API C# do Cloud Storage.
Para se autenticar no Cloud Storage, configure as Credenciais padrão da aplicação. Para mais informações, consulte o artigo Configure a autenticação para bibliotecas de cliente.
Go
Para mais informações, consulte a documentação de referência da API Go do Cloud Storage.
Para se autenticar no Cloud Storage, configure as Credenciais padrão da aplicação. Para mais informações, consulte o artigo Configure a autenticação para bibliotecas de cliente.
Java
Para mais informações, consulte a documentação de referência da API Java do Cloud Storage.
Para se autenticar no Cloud Storage, configure as Credenciais padrão da aplicação. Para mais informações, consulte o artigo Configure a autenticação para bibliotecas de cliente.
Node.js
Para mais informações, consulte a documentação de referência da API Node.js do Cloud Storage.
Para se autenticar no Cloud Storage, configure as Credenciais padrão da aplicação. Para mais informações, consulte o artigo Configure a autenticação para bibliotecas de cliente.
PHP
Para mais informações, consulte a documentação de referência da API PHP do Cloud Storage.
Para se autenticar no Cloud Storage, configure as Credenciais padrão da aplicação. Para mais informações, consulte o artigo Configure a autenticação para bibliotecas de cliente.
Python
Para mais informações, consulte a documentação de referência da API Python do Cloud Storage.
Para se autenticar no Cloud Storage, configure as Credenciais padrão da aplicação. Para mais informações, consulte o artigo Configure a autenticação para bibliotecas de cliente.
Ruby
Para mais informações, consulte a documentação de referência da API Ruby do Cloud Storage.
Para se autenticar no Cloud Storage, configure as Credenciais padrão da aplicação. Para mais informações, consulte o artigo Configure a autenticação para bibliotecas de cliente.
APIs REST
API JSON
Para obter instruções da API JSON sobre como mover ou mudar o nome de objetos copiando-os, consulte o artigo Copiar objetos.
API XML
Para ver instruções da API XML sobre como mover ou mudar o nome de objetos copiando-os, consulte o artigo Copiar objetos.
Mude o nome dos objetos de forma atómica
Esta secção descreve como mudar o nome de objetos de forma atómica num contentor.
Para mudar o nome de um objeto, pode usar o método Objects: move
na API JSON do Cloud Storage.
APIs REST
API JSON
Para mudar o nome de um objeto de forma atómica, faça o seguinte:
Ter a CLI gcloud instalada e inicializada, o que lhe permite gerar um token de acesso para o cabeçalho
Authorization
.Use
cURL
para chamar a API JSON com um pedidoObjects: 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"Onde:
BUCKET_NAME
é o nome do contentor que contém o objeto cujo nome quer mudar. Por exemplo,my-bucket
.SOURCE_OBJECT_NAME
é o nome codificado por URL do objeto cujo nome quer mudar. Por exemplo,pets/dog.png
, URL codificado comopets%2Fdog.png
.DESTINATION_OBJECT_NAME
é o nome codificado em URL que quer usar. Por exemplo,pets/cat.png
, URL codificado comopets%2Fcat.png
.
O que se segue?
- Altere a classe de armazenamento de um objeto.
- Edite os metadados de um objeto.
- Torne os objetos e os contentores acessíveis publicamente.
- Saiba mais acerca dos requisitos de nomenclatura de objetos.
- Saiba como usar pré-condições de pedidos para evitar condições de concorrência.