En esta página, se muestra cómo copiar, cambiar el nombre y mover objetos dentro y entre buckets en Cloud Storage.
Ten en cuenta que, aunque algunas herramientas de Cloud Storage hacen que mover un objeto o cambiar su nombre parezcan operaciones únicas, siempre se trata de una operación de copia seguida de una operación de eliminación del objeto original, ya que los objetos son immutable.
Permisos necesarios
Console
Para completar esta guía con la consola de Google Cloud, debes tener los permisos de IAM adecuados. Si los buckets a los que deseas acceder existen en un proyecto que no creaste, tal vez necesites que el propietario del proyecto te otorgue un rol con los permisos necesarios.
Para obtener una lista de los permisos necesarios para acciones específicas, consulta Permisos de IAM para la consola de Google Cloud.
Para obtener una lista de los roles relevantes, consulta Funciones de Cloud Storage. Como alternativa, puedes crear un rol personalizado que tenga permisos más limitados.
Línea de comandos
Para completar esta guía con una utilidad de línea de comandos, debes tener los permisos de IAM adecuados. Si los buckets a los que deseas acceder existen en un proyecto que no creaste, tal vez necesites que el propietario del proyecto te otorgue un rol con los permisos necesarios.
Si deseas obtener una lista de los permisos necesarios para acciones específicas, consulta Permisos de IAM para los comandos de gcloud storage
.
Para obtener una lista de los roles relevantes, consulta Funciones de Cloud Storage. Como alternativa, puedes crear un rol personalizado que tenga permisos más limitados.
Bibliotecas cliente
Para completar esta guía con las bibliotecas cliente de Cloud Storage, debes tener los permisos de IAM adecuados. Si los buckets a los que deseas acceder existen en un proyecto que no creaste, tal vez necesites que el propietario del proyecto te otorgue un rol con los permisos necesarios.
A menos que se indique lo contrario, las solicitudes de la biblioteca cliente se realizan mediante la API de JSON y requieren permisos, como se indica en Permisos de IAM para métodos de JSON. Para ver qué métodos de la API de JSON se invocan cuando realizas solicitudes a través de una biblioteca cliente, registra las solicitudes sin procesar.
Para obtener una lista de los roles de IAM relevantes, consulta Roles de Cloud Storage. Como alternativa, puedes crear un rol personalizado que tenga permisos más limitados.
API de REST
API de JSON
Para completar esta guía con la API de JSON, debes tener los permisos de IAM adecuados. Si los buckets a los que deseas acceder existen en un proyecto que no creaste, tal vez necesites que el propietario del proyecto te otorgue un rol con los permisos necesarios.
Si deseas obtener una lista de los permisos necesarios para acciones específicas, consulta Permisos de IAM para métodos JSON.
Para obtener una lista de los roles relevantes, consulta Funciones de Cloud Storage. Como alternativa, puedes crear un rol personalizado que tenga permisos más limitados.
Copiar un objeto
Para copiar un objeto en uno de tus depósitos de Cloud Storage, sigue estos pasos:
Console
- En la consola de Google Cloud, ve a la página Buckets de Cloud Storage.
En la lista de buckets, haz clic en el nombre del bucket que contiene el objeto que quieras copiar.
Se abrirá la página Detalles del bucket y se seleccionará la pestaña Objetos.
Navega hasta el objeto, que puede estar en una carpeta.
Haz clic en el menú Ampliado del objeto (more_vert) asociado al objeto.
Haz clic en Copiar.
Aparecerá el panel Copiar objeto.
En el campo Destino, escribe el nombre del bucket de destino y el nombre del objeto copiado.
De manera alternativa, puedes hacer clic en Explorar para seleccionar tu destino, pero las opciones de exploración se limitan a buckets en el proyecto actual.
Haz clic en Copiar.
Para obtener información sobre cómo ver detalles de errores acerca de operaciones fallidas de Cloud Storage en la consola de Google Cloud, consulta Solución de problemas.
Línea de comandos
Usa el comando gcloud storage cp
:
gcloud storage cp gs://SOURCE_BUCKET_NAME/SOURCE_OBJECT_NAME gs://DESTINATION_BUCKET_NAME/NAME_OF_COPY
Donde:
SOURCE_BUCKET_NAME
es el nombre del depósito que contiene el objeto que deseas copiar. Por ejemplo,my-bucket
SOURCE_OBJECT_NAME
es el nombre del objeto que deseas copiar. Por ejemplo,pets/dog.png
DESTINATION_BUCKET_NAME
es el nombre del depósito en el que deseas copiar tu objeto. Por ejemplo,another-bucket
NAME_OF_COPY
es el nombre que deseas asignar a la copia de tu objeto. Por ejemplo,shiba.png
Si se realiza de forma correcta, la respuesta se verá como el ejemplo siguiente:
Copying gs://example-bucket/file.txt to gs://other-bucket/file-copy.txt Completed files 1/1 | 164.3kiB/164.3kiB
Bibliotecas cliente
C++
Si deseas obtener más información, consulta la documentación de referencia de la API de Cloud Storage C++.
Para autenticarte en Cloud Storage, configura las credenciales predeterminadas de la aplicación. Si deseas obtener más información, consulta Configura la autenticación para un entorno de desarrollo local.
C#
Si deseas obtener más información, consulta la documentación de referencia de la API de Cloud Storage C#.
Para autenticarte en Cloud Storage, configura las credenciales predeterminadas de la aplicación. Si deseas obtener más información, consulta Configura la autenticación para un entorno de desarrollo local.
Go
Si deseas obtener más información, consulta la documentación de referencia de la API de Cloud Storage Go.
Para autenticarte en Cloud Storage, configura las credenciales predeterminadas de la aplicación. Si deseas obtener más información, consulta Configura la autenticación para un entorno de desarrollo local.
Java
Si deseas obtener más información, consulta la documentación de referencia de la API de Cloud Storage Java.
Para autenticarte en Cloud Storage, configura las credenciales predeterminadas de la aplicación. Si deseas obtener más información, consulta Configura la autenticación para un entorno de desarrollo local.
Node.js
Si deseas obtener más información, consulta la documentación de referencia de la API de Cloud Storage Node.js.
Para autenticarte en Cloud Storage, configura las credenciales predeterminadas de la aplicación. Si deseas obtener más información, consulta Configura la autenticación para un entorno de desarrollo local.
PHP
Si deseas obtener más información, consulta la documentación de referencia de la API de Cloud Storage PHP.
Para autenticarte en Cloud Storage, configura las credenciales predeterminadas de la aplicación. Si deseas obtener más información, consulta Configura la autenticación para un entorno de desarrollo local.
Python
Si deseas obtener más información, consulta la documentación de referencia de la API de Cloud Storage Python.
Para autenticarte en Cloud Storage, configura las credenciales predeterminadas de la aplicación. Si deseas obtener más información, consulta Configura la autenticación para un entorno de desarrollo local.
Ruby
Si deseas obtener más información, consulta la documentación de referencia de la API de Cloud Storage Ruby.
Para autenticarte en Cloud Storage, configura las credenciales predeterminadas de la aplicación. Si deseas obtener más información, consulta Configura la autenticación para un entorno de desarrollo local.
API de REST
API de JSON
Tener la gcloud CLI instalada e inicializadaa fin de generar un token de acceso para el encabezado
Authorization
.Como alternativa, puedes crear un token de acceso con OAuth 2.0 Playground y, luego, incluirlo en el encabezado
Authorization
.Usa
cURL
para llamar a la API de JSON con una solicitud 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"
Donde:
SOURCE_BUCKET_NAME
es el nombre del depósito que contiene el objeto que deseas copiar. Por ejemplo,my-bucket
SOURCE_OBJECT_NAME
es el nombre codificado como URL del objeto que deseas copiar. Por ejemplo,pets/dog.png
, codificado en URL comopets%2Fdog.png
.DESTINATION_BUCKET_NAME
es el nombre del bucket en el que deseas copiar tu objeto. Por ejemplo,another-bucket
NAME_OF_COPY
es el nombre codificado en URL que deseas darle a la copia de tu objeto. Por ejemplo,shiba.png
Dado que el método
rewrite
copia datos en fragmentos de tamaño limitado, la copia puede requerir varias solicitudes, en especial para objetos grandes.Por ejemplo, la siguiente respuesta a una solicitud
rewrite
indica que necesitas realizar solicitudesrewrite
adicionales:{ "kind": "storage#rewriteResponse", "totalBytesRewritten": 1048576, "objectSize": 10000000000, "done": false, "rewriteToken": TOKEN_VALUE }
Usa
rewriteToken
en una solicitud posterior para continuar con la copia de datos: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"
Donde:
TOKEN_VALUE
es el valorrewriteToken
que se muestra en la solicitud anterior.- Todos los demás valores coinciden con los que se usaron en la solicitud anterior.
Cuando se copia el objeto por completo, la última respuesta tiene una propiedad
done
establecida entrue
, no hay ninguna propiedadrewriteToken
y los metadatos de la copia se incluyen en elresource
.{ "kind": "storage#rewriteResponse", "totalBytesRewritten": 10000000000, "objectSize": 10000000000, "done": true, "resource": objects Resource }
API de XML
Tener la gcloud CLI instalada e inicializadaa fin de generar un token de acceso para el encabezado
Authorization
.Como alternativa, puedes crear un token de acceso con OAuth 2.0 Playground y, luego, incluirlo en el encabezado
Authorization
.Usa
cURL
para llamar a la API de XML con una solicitud 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"
Donde:
SOURCE_BUCKET_NAME
es el nombre del depósito que contiene el objeto que deseas copiar. Por ejemplo,my-bucket
SOURCE_OBJECT_NAME
es el nombre del objeto que deseas copiar. Por ejemplo,pets/dog.png
DESTINATION_BUCKET_NAME
es el nombre del depósito en el que deseas copiar tu objeto. Por ejemplo,another-bucket
NAME_OF_COPY
es el nombre codificado en URL que deseas darle a la copia de tu objeto. Por ejemplo,shiba.png
Mueve o renombra un objeto
Para mover un objeto en Cloud Storage entre buckets o cambiar el nombre de un objeto dentro de un bucket, haz lo siguiente:
Console
- En la consola de Google Cloud, ve a la página Buckets de Cloud Storage.
En la lista de buckets, haz clic en el nombre del bucket que contiene el objeto que quieras mover.
Se abrirá la página Detalles del bucket y se seleccionará la pestaña Objetos.
Navega hasta el objeto, que puede estar en una carpeta.
Haz clic en el menú Ampliado del objeto (more_vert) asociado al objeto.
Si deseas asignar un nombre nuevo al objeto en el mismo bucket, haz clic en Cambiar nombre.
En la ventana de superposición que aparece, ingresa un nuevo nombre para el objeto.
Haga clic en Cambiar nombre.
Si deseas mover el objeto a un bucket diferente, haz clic en Mover.
En la ventana de superposición que aparece, haz clic en Explorar.
Selecciona el destino del objeto que moverás.
Haz clic en Seleccionar.
Haz clic en Mover.
Para obtener información sobre cómo ver detalles de errores acerca de operaciones fallidas de Cloud Storage en la consola de Google Cloud, consulta Solución de problemas.
Línea de comandos
Usa el comando gcloud storage mv
:
gcloud storage mv gs://SOURCE_BUCKET_NAME/SOURCE_OBJECT_NAME gs://DESTINATION_BUCKET_NAME/DESTINATION_OBJECT_NAME
Donde:
SOURCE_BUCKET_NAME
es el nombre del depósito que contiene el objeto que deseas mover o renombrar. Por ejemplo,my-bucket
SOURCE_OBJECT_NAME
es el nombre del objeto al que deseas mover o renombrar. Por ejemplo,pets/dog.png
DESTINATION_BUCKET_NAME
es el nombre del bucket que almacena tu objeto movido o renombrado. Por ejemplo,another-bucket
DESTINATION_OBJECT_NAME
es el nombre que deseas que tenga el objeto después del movimiento o el cambio de nombre. Por ejemplo,shiba.png
Si se realiza de forma correcta, la respuesta se verá como el ejemplo siguiente:
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++
Si deseas obtener más información, consulta la documentación de referencia de la API de Cloud Storage C++.
Para autenticarte en Cloud Storage, configura las credenciales predeterminadas de la aplicación. Si deseas obtener más información, consulta Configura la autenticación para un entorno de desarrollo local.
C#
Si deseas obtener más información, consulta la documentación de referencia de la API de Cloud Storage C#.
Para autenticarte en Cloud Storage, configura las credenciales predeterminadas de la aplicación. Si deseas obtener más información, consulta Configura la autenticación para un entorno de desarrollo local.
Go
Si deseas obtener más información, consulta la documentación de referencia de la API de Cloud Storage Go.
Para autenticarte en Cloud Storage, configura las credenciales predeterminadas de la aplicación. Si deseas obtener más información, consulta Configura la autenticación para un entorno de desarrollo local.
Java
Si deseas obtener más información, consulta la documentación de referencia de la API de Cloud Storage Java.
Para autenticarte en Cloud Storage, configura las credenciales predeterminadas de la aplicación. Si deseas obtener más información, consulta Configura la autenticación para un entorno de desarrollo local.
Node.js
Si deseas obtener más información, consulta la documentación de referencia de la API de Cloud Storage Node.js.
Para autenticarte en Cloud Storage, configura las credenciales predeterminadas de la aplicación. Si deseas obtener más información, consulta Configura la autenticación para un entorno de desarrollo local.
PHP
Si deseas obtener más información, consulta la documentación de referencia de la API de Cloud Storage PHP.
Para autenticarte en Cloud Storage, configura las credenciales predeterminadas de la aplicación. Si deseas obtener más información, consulta Configura la autenticación para un entorno de desarrollo local.
Python
Si deseas obtener más información, consulta la documentación de referencia de la API de Cloud Storage Python.
Para autenticarte en Cloud Storage, configura las credenciales predeterminadas de la aplicación. Si deseas obtener más información, consulta Configura la autenticación para un entorno de desarrollo local.
Ruby
Si deseas obtener más información, consulta la documentación de referencia de la API de Cloud Storage Ruby.
Para autenticarte en Cloud Storage, configura las credenciales predeterminadas de la aplicación. Si deseas obtener más información, consulta Configura la autenticación para un entorno de desarrollo local.
API de REST
API de JSON
Para mover un objeto o cambiarle el nombre directamente con la API de JSON, primero crea una copia del objeto que tiene las propiedades que deseas y, luego, borra el objeto original.
API de XML
Para mover un objeto o cambiarle el nombre directamente con la API de XML, primero crea una copia del objeto que tiene las propiedades que deseas y, luego, borra el objeto original.
Recomendamos usar el Servicio de transferencia de almacenamiento para mover más de 1 TB de datos entre buckets.
¿Qué sigue?
- Cambia la clase de almacenamiento de un objeto.
- Edita los metadatos de un objeto.
- Haz que los objetos y buckets sean de acceso público.
- Obtén más información sobre los requisitos para los nombres de objetos.
- Obtén información sobre el uso de condiciones previas de solicitud para evitar las condiciones de carrera.