En esta página se explica cómo copiar, cambiar de nombre y mover objetos. Aunque algunas herramientas realizan operaciones de movimiento de objetos atómicas, otras simulan una operación de movimiento de objetos copiando el objeto en una nueva ubicación especificada y, a continuación, eliminando el objeto original.
- Para obtener instrucciones sobre cómo copiar objetos, consulta Copiar objetos.
- Para obtener instrucciones sobre cómo mover o cambiar el nombre de objetos copiándolos, consulta Mover o cambiar el nombre de objetos copiándolos.
- Para obtener instrucciones sobre cómo cambiar el nombre de los objetos de forma atómica, consulta Cambiar el nombre de los objetos de forma atómica.
Te recomendamos que uses el Servicio de transferencia de Storage para mover más de 1 TB de datos entre segmentos.
Antes de empezar
Para copiar, cambiar el nombre o mover objetos, debes obtener los roles de gestión de identidades y accesos necesarios. En las siguientes secciones se describen los requisitos de gestión de identidades y accesos para diferentes casos prácticos.
Copiar objetos (incluidos los que se mueven o se renombran al copiarlos)
Para obtener los permisos que necesitas para copiar objetos, pide a tu administrador que te conceda los siguientes roles de gestión de identidades y accesos en el segmento de origen que contiene los objetos que quieres mover o en el segmento de destino al que quieres mover los objetos:
-
Lector de objetos de Storage (
roles/storage.objectViewer
) en el segmento de origen -
Usuario de objetos de Storage (
roles/storage.objectUser
) en el segmento de destino -
Para copiar objetos mediante la consola de Google Cloud :
Rol básico de lector (
roles/viewer
) en los contenedores de origen y de destino, además deroles/storage.objectViewer
yroles/storage.objectUser
Estos roles predefinidos contienen los permisos necesarios para copiar objetos. Para ver los permisos exactos que se necesitan, despliega la sección Permisos necesarios:
Permisos obligatorios
Para copiar objetos, se necesitan los siguientes permisos:
-
storage.objects.get
en el segmento de origen -
storage.objects.create
en el segmento de destino -
storage.objects.delete
(obligatorio solo si vas a sustituir o sobrescribir un objeto en el segmento de destino como parte de una operación de copia o movimiento de objetos) en el segmento de destino -
storage.objects.delete
(obligatorio solo si vas a mover un objeto mediante una operación de copia y eliminación subyacente) en el segmento de origen -
storage.folders.create
(solo es obligatorio si el objeto que vas a mover se encuentra en una carpeta que quieres crear en el segmento de destino) en el segmento de destino -
storage.objects.list
(solo es necesario si vas a copiar, mover o cambiar el nombre de un objeto mediante la Google Cloud consola) en los segmentos de origen y de destino -
storage.buckets.list
(solo es obligatorio si vas a copiar, mover o cambiar el nombre de un objeto mediante la consola de Google Cloud ) en el proyecto que contiene los segmentos de origen y de destino
También puedes obtener estos permisos con roles personalizados.
Para obtener información sobre cómo conceder roles en los contenedores, consulta Usar IAM con contenedores. Para obtener información sobre cómo conceder roles en proyectos, consulta el artículo Gestionar el acceso a proyectos.
Si el objeto que quieres copiar tiene determinadas funciones habilitadas, es posible que necesites roles adicionales o alternativos. Por ejemplo, si el objeto que quieres copiar tiene una configuración de conservación de objetos que quieres conservar, necesitarás un rol en el segmento de destino que incluya el permiso storage.objects.setRetention
, como el rol Administrador de objetos de Storage (roles/storage.objectAdmin
).
Para obtener más información, consulta Permisos de gestión de identidades y accesos para Cloud Storage.
Cambiar el nombre de los objetos de forma atómica
Para obtener los permisos que necesitas para cambiar el nombre de los objetos de forma atómica,
pide a tu administrador que te conceda el
rol de gestión de identidades y accesos Usuario de objetos de Storage (roles/storage.objectUser
)
en el segmento que contiene el objeto cuyo nombre quieres cambiar.
Este rol predefinido contiene los permisos necesarios para cambiar el nombre de los objetos de forma atómica. Para ver los permisos exactos que se necesitan, despliega la sección Permisos necesarios:
Permisos obligatorios
Se necesitan los siguientes permisos para cambiar el nombre de los objetos de forma atómica:
-
storage.objects.move
-
storage.objects.create
-
storage.objects.delete
(obligatorio solo si vas a sobrescribir o sustituir un objeto)
También puedes obtener estos permisos con roles personalizados.
Para obtener información sobre cómo conceder roles en los contenedores, consulta Usar IAM con contenedores.
Copiar objetos
En esta sección se describe cómo copiar objetos. Puedes copiar objetos de un segmento a otro.
Consola
- En la Google Cloud consola, ve a la página Segmentos de Cloud Storage.
En la lista de segmentos, haga clic en el nombre del segmento que contiene el objeto que quiere copiar.
Se abrirá la página Detalles del segmento, con la pestaña Objetos seleccionada.
Desplázate hasta el objeto, que puede estar en una carpeta.
Haz clic en el menú Menú adicional 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.
También puedes hacer clic en Explorar para seleccionar el destino, pero las opciones de exploración se limitan a los segmentos del proyecto actual.
Haz clic en Copiar.
Para saber cómo obtener información detallada sobre los errores de las operaciones de Cloud Storage en la consola, consulta la sección Solución de problemas. Google Cloud
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 segmento que contiene el objeto que quieres copiar. Por ejemplo,my-bucket
.SOURCE_OBJECT_NAME
es el nombre del objeto que quieres copiar. Por ejemplo,pets/dog.png
.DESTINATION_BUCKET_NAME
es el nombre del contenedor en el que quieres copiar el objeto. Por ejemplo,another-bucket
.NAME_OF_COPY
es el nombre que quieres dar a la copia del objeto. Por ejemplo,shiba.png
.
Si la solicitud se realiza correctamente, la respuesta será similar a la del siguiente ejemplo:
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 obtener más información, consulta la documentación de referencia de la API C++ de Cloud Storage.
Para autenticarte en Cloud Storage, configura las credenciales predeterminadas de la aplicación. Para obtener más información, consulta el artículo Configurar la autenticación para bibliotecas de cliente.
C#
Para obtener más información, consulta la documentación de referencia de la API C# de Cloud Storage.
Para autenticarte en Cloud Storage, configura las credenciales predeterminadas de la aplicación. Para obtener más información, consulta el artículo Configurar la autenticación para bibliotecas de cliente.
Go
Para obtener más información, consulta la documentación de referencia de la API Go de Cloud Storage.
Para autenticarte en Cloud Storage, configura las credenciales predeterminadas de la aplicación. Para obtener más información, consulta el artículo Configurar la autenticación para bibliotecas de cliente.
Java
Para obtener más información, consulta la documentación de referencia de la API Java de Cloud Storage.
Para autenticarte en Cloud Storage, configura las credenciales predeterminadas de la aplicación. Para obtener más información, consulta el artículo Configurar la autenticación para bibliotecas de cliente.
Node.js
Para obtener más información, consulta la documentación de referencia de la API Node.js de Cloud Storage.
Para autenticarte en Cloud Storage, configura las credenciales predeterminadas de la aplicación. Para obtener más información, consulta el artículo Configurar la autenticación para bibliotecas de cliente.
PHP
Para obtener más información, consulta la documentación de referencia de la API PHP de Cloud Storage.
Para autenticarte en Cloud Storage, configura las credenciales predeterminadas de la aplicación. Para obtener más información, consulta el artículo Configurar la autenticación para bibliotecas de cliente.
Python
Para obtener más información, consulta la documentación de referencia de la API Python de Cloud Storage.
Para autenticarte en Cloud Storage, configura las credenciales predeterminadas de la aplicación. Para obtener más información, consulta el artículo Configurar la autenticación para bibliotecas de cliente.
Ruby
Para obtener más información, consulta la documentación de referencia de la API Ruby de Cloud Storage.
Para autenticarte en Cloud Storage, configura las credenciales predeterminadas de la aplicación. Para obtener más información, consulta el artículo Configurar la autenticación para bibliotecas de cliente.
APIs REST
API JSON
Tener instalada e inicializadala CLI de gcloud, que te permite generar un token de acceso para el encabezado
Authorization
.Usa
cURL
para llamar a la API JSON con una solicitud 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"
Donde:
SOURCE_BUCKET_NAME
es el nombre del segmento que contiene el objeto que quieres copiar. Por ejemplo,my-bucket
.SOURCE_OBJECT_NAME
es el nombre codificado como URL del objeto que quieres copiar. Por ejemplo,pets/dog.png
, codificado como URLpets%2Fdog.png
.DESTINATION_BUCKET_NAME
es el nombre del segmento en el que quieres copiar el objeto. Por ejemplo,another-bucket
.NAME_OF_COPY
es el nombre codificado en URL que quieres dar a la copia de tu objeto. Por ejemplo,shiba.png
.
Como el método
rewrite
copia los datos en fragmentos de tamaño limitado, es posible que tu copia requiera varias solicitudes, sobre todo si se trata de objetos grandes.Por ejemplo, la siguiente respuesta a una solicitud
rewrite
indica que debes enviar más solicitudesrewrite
:{ "kind": "storage#rewriteResponse", "totalBytesRewritten": 1048576, "objectSize": 10000000000, "done": false, "rewriteToken": TOKEN_VALUE }
Usa el
rewriteToken
en una solicitud posterior para seguir copiando 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 valor derewriteToken
devuelto en la solicitud anterior.- Todos los demás valores coinciden con los usados en la solicitud anterior.
Cuando el objeto se copia por completo, la última respuesta tiene la propiedad
done
con el valortrue
, no tiene la propiedadrewriteToken
y los metadatos de la copia se incluyen en la propiedadresource
.{ "kind": "storage#rewriteResponse", "totalBytesRewritten": 10000000000, "objectSize": 10000000000, "done": true, "resource": objects Resource }
API XML
Tener instalada e inicializadala CLI de gcloud, que te permite generar un token de acceso para el encabezado
Authorization
.Usa
cURL
para llamar a la API XML con una solicitud dePUT
Object: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 segmento que contiene el objeto que quieres copiar. Por ejemplo,my-bucket
.SOURCE_OBJECT_NAME
es el nombre del objeto que quieres copiar. Por ejemplo,pets/dog.png
.DESTINATION_BUCKET_NAME
es el nombre del segmento en el que quieres copiar el objeto. Por ejemplo,another-bucket
.NAME_OF_COPY
es el nombre codificado en URL que quieres dar a la copia de tu objeto. Por ejemplo,shiba.png
.
Mover o cambiar el nombre de objetos copiándolos
En esta sección se describe cómo mover o cambiar el nombre de objetos mediante operaciones de copia de objetos subyacentes. Las herramientas descritas en esta sección mueven y cambian el nombre de los objetos copiando el objeto original en otro espacio de nombres y, a continuación, eliminando el objeto original.
Consola
- En la Google Cloud consola, ve a la página Segmentos de Cloud Storage.
En la lista de segmentos, haga clic en el nombre del segmento que contiene el objeto que quiere mover.
Se abrirá la página Detalles del segmento, con la pestaña Objetos seleccionada.
Desplázate hasta el objeto, que puede estar en una carpeta.
Haz clic en el menú Menú adicional del objeto (more_vert) asociado al objeto.
Si quiere cambiar el nombre del objeto en el mismo contenedor, haga clic en Cambiar nombre.
En la ventana superpuesta que aparece, introduce un nuevo nombre para el objeto.
Haz clic en Cambiar nombre.
Si quieres mover el objeto a otro contenedor, haz clic en Mover.
En la ventana superpuesta que aparece, haz clic en Buscar.
Selecciona el destino del objeto que vas a mover.
Haz clic en Seleccionar.
Haz clic en Mover.
Para saber cómo obtener información detallada sobre los errores de las operaciones de Cloud Storage en la consola, consulta la sección Solución de problemas. Google Cloud
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 contenedor que contiene el objeto que quieres mover o cambiar de nombre. Por ejemplo,my-bucket
.SOURCE_OBJECT_NAME
es el nombre del objeto que quieres mover o cambiar de nombre. Por ejemplo,pets/dog.png
.DESTINATION_BUCKET_NAME
es el nombre del cubo al que quieres mover el objeto. Por ejemplo,another-bucket
.DESTINATION_OBJECT_NAME
es el nombre que quieres que tenga el objeto después de moverlo o cambiarle el nombre. Por ejemplo,shiba.png
.
Si la solicitud se realiza correctamente, la respuesta será similar a la del siguiente ejemplo:
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 obtener más información, consulta la documentación de referencia de la API C++ de Cloud Storage.
Para autenticarte en Cloud Storage, configura las credenciales predeterminadas de la aplicación. Para obtener más información, consulta el artículo Configurar la autenticación para bibliotecas de cliente.
C#
Para obtener más información, consulta la documentación de referencia de la API C# de Cloud Storage.
Para autenticarte en Cloud Storage, configura las credenciales predeterminadas de la aplicación. Para obtener más información, consulta el artículo Configurar la autenticación para bibliotecas de cliente.
Go
Para obtener más información, consulta la documentación de referencia de la API Go de Cloud Storage.
Para autenticarte en Cloud Storage, configura las credenciales predeterminadas de la aplicación. Para obtener más información, consulta el artículo Configurar la autenticación para bibliotecas de cliente.
Java
Para obtener más información, consulta la documentación de referencia de la API Java de Cloud Storage.
Para autenticarte en Cloud Storage, configura las credenciales predeterminadas de la aplicación. Para obtener más información, consulta el artículo Configurar la autenticación para bibliotecas de cliente.
Node.js
Para obtener más información, consulta la documentación de referencia de la API Node.js de Cloud Storage.
Para autenticarte en Cloud Storage, configura las credenciales predeterminadas de la aplicación. Para obtener más información, consulta el artículo Configurar la autenticación para bibliotecas de cliente.
PHP
Para obtener más información, consulta la documentación de referencia de la API PHP de Cloud Storage.
Para autenticarte en Cloud Storage, configura las credenciales predeterminadas de la aplicación. Para obtener más información, consulta el artículo Configurar la autenticación para bibliotecas de cliente.
Python
Para obtener más información, consulta la documentación de referencia de la API Python de Cloud Storage.
Para autenticarte en Cloud Storage, configura las credenciales predeterminadas de la aplicación. Para obtener más información, consulta el artículo Configurar la autenticación para bibliotecas de cliente.
Ruby
Para obtener más información, consulta la documentación de referencia de la API Ruby de Cloud Storage.
Para autenticarte en Cloud Storage, configura las credenciales predeterminadas de la aplicación. Para obtener más información, consulta el artículo Configurar la autenticación para bibliotecas de cliente.
APIs REST
API JSON
Para obtener instrucciones sobre cómo mover o cambiar el nombre de objetos mediante la copia en la API JSON, consulta Copiar objetos.
API XML
Para obtener instrucciones sobre cómo mover o cambiar el nombre de objetos mediante la API XML, consulta Copiar objetos.
Cambiar el nombre de los objetos de forma atómica
En esta sección se describe cómo cambiar el nombre de los objetos de un mismo contenedor de forma atómica.
Para cambiar el nombre de un objeto, puedes usar el método Objects: move
en la API JSON de Cloud Storage.
APIs REST
API JSON
Para cambiar el nombre de un objeto de forma atómica, haz lo siguiente:
Tener instalada e inicializadala CLI de gcloud, que te permite generar un token de acceso para el encabezado
Authorization
.Usa
cURL
para llamar a la API JSON con una solicitudObjects: 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"Donde:
BUCKET_NAME
es el nombre del segmento que contiene el objeto cuyo nombre quieres cambiar. Por ejemplo,my-bucket
.SOURCE_OBJECT_NAME
es el nombre codificado en URL del objeto cuyo nombre quieres cambiar. Por ejemplo,pets/dog.png
, codificado como URLpets%2Fdog.png
.DESTINATION_OBJECT_NAME
es el nombre codificado en URL que quieres usar. Por ejemplo,pets/cat.png
, codificado como URLpets%2Fcat.png
.
Siguientes pasos
- Cambia la clase de almacenamiento de un objeto.
- Edita los metadatos de un objeto.
- Hacer que los objetos y los segmentos sean accesibles públicamente.
- Más información sobre los requisitos de nomenclatura de objetos
- Consulta información sobre cómo usar precondiciones de solicitud para evitar las condiciones de carrera.