En esta página, se muestra cómo copiar, cambiar el nombre y mover objetos. Si bien algunas herramientas realizan operaciones de movimiento de objetos atómicas, otras simulan una operación de movimiento de objetos copiando el objeto a una nueva ubicación especificada y, luego, borrando el objeto original.
- Para obtener instrucciones sobre cómo copiar objetos, consulta Copia objetos.
- Si deseas obtener instrucciones para mover o cambiar el nombre de objetos copiándolos, consulta Cómo 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 Cómo cambiar el nombre de los objetos de forma atómica.
Recomendamos usar el Servicio de transferencia de almacenamiento para mover más de 1 TB de datos entre buckets.
Antes de comenzar
Para copiar, cambiar el nombre o mover objetos, debes obtener los roles de IAM necesarios. En las siguientes secciones, se describen los requisitos de IAM para diferentes casos de uso.
Copiar objetos (incluido moverlos o cambiarles el nombre copiándolos)
Para obtener los permisos que necesitas para copiar objetos, pídele a tu administrador que te otorgue los siguientes roles de IAM en el bucket de origen que contiene los objetos que deseas mover o en el bucket de destino al que deseas mover los objetos:
-
Visualizador de objetos de Storage (
roles/storage.objectViewer
) en el bucket de origen -
Usuario de objetos de almacenamiento (
roles/storage.objectUser
) en el bucket de destino -
Para copiar objetos con la consola de Google Cloud , debes tener el rol básico de Visualizador (
roles/viewer
) en el bucket de origen y en el 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 son necesarios, expande la sección Permisos requeridos:
Permisos necesarios
Se requieren los siguientes permisos para copiar objetos:
-
storage.objects.get
en el bucket de origen -
storage.objects.create
en el bucket de destino -
storage.objects.delete
(solo es necesario si reemplazas o sobrescribes un objeto en el bucket de destino como parte de una operación de copia o movimiento de objetos) en el bucket de destino -
storage.objects.delete
(solo es obligatorio si mueves un objeto con una operación de copia y eliminación subyacente) en el bucket de origen -
storage.folders.create
(solo es necesario si el objeto que mueves se encuentra en una carpeta que deseas crear en el bucket de destino) en el bucket de destino -
storage.objects.list
(solo es obligatorio si copias, mueves o cambias el nombre de un objeto con la consola de Google Cloud ) en los buckets de origen y destino -
storage.buckets.list
(solo se requiere si copias, mueves o cambias el nombre de un objeto con la consola de Google Cloud ) en el proyecto que contiene los buckets de origen y destino
También puedes obtener estos permisos con roles personalizados.
Para obtener más información sobre cómo otorgar roles en los buckets, consulta Usa IAM con buckets. Para obtener información sobre cómo otorgar roles en proyectos, consulta Administra el acceso a los proyectos.
Si el objeto que deseas copiar tiene ciertas funciones habilitadas, es posible que necesites roles adicionales o alternativos. Por ejemplo, si el objeto que deseas copiar tiene una configuración de retención de objetos que deseas conservar, necesitarás un rol en el bucket de destino que incluya el permiso storage.objects.setRetention
, como el rol de administrador de objetos de almacenamiento (roles/storage.objectAdmin
).
Si deseas obtener más información, consulta Permisos de IAM para Cloud Storage.
Cambia 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, pídele a tu administrador que te otorgue el rol de IAM de usuario de objetos de almacenamiento (roles/storage.objectUser
) en el bucket que contiene el objeto cuyo nombre deseas 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 son necesarios, expande la sección Permisos requeridos:
Permisos necesarios
Se requieren los siguientes permisos para cambiar el nombre de los objetos de forma atómica:
-
storage.objects.move
-
storage.objects.create
-
storage.objects.delete
(solo es necesario si reemplazas un objeto)
También puedes obtener estos permisos con roles personalizados.
Para obtener más información sobre cómo otorgar roles en los buckets, consulta Usa IAM con buckets.
Cómo copiar objetos
En esta sección, se describe cómo copiar objetos. Puedes copiar objetos de un bucket a otro.
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 Google Cloud consola, 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 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 bibliotecas cliente.
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 bibliotecas cliente.
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 bibliotecas cliente.
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 bibliotecas cliente.
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 bibliotecas cliente.
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 bibliotecas cliente.
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 bibliotecas cliente.
API de REST
API de JSON
Tener la gcloud CLI instalada e inicializada, lo que te permite generar un token de acceso para 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 inicializada, lo que te permite generar un token de acceso para 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
Cómo mover o cambiar el nombre de objetos copiándolos
En esta sección, se describe cómo mover o cambiar el nombre de objetos con operaciones de copia de objetos subyacentes. Las herramientas que se describen en esta sección realizan movimientos y cambios de nombre de objetos copiando el objeto original a otro espacio de nombres y, luego, borrando el objeto original.
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 deseas 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 Google Cloud consola, 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 al que deseas mover el objeto. 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 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 bibliotecas cliente.
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 bibliotecas cliente.
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 bibliotecas cliente.
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 bibliotecas cliente.
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 bibliotecas cliente.
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 bibliotecas cliente.
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 bibliotecas cliente.
API de REST
API de JSON
Si deseas obtener instrucciones sobre cómo mover o cambiar el nombre de objetos copiándolos con la API de JSON, consulta Copia objetos.
API de XML
Si deseas obtener instrucciones de la API de XML para mover o renombrar objetos copiándolos, consulta Copia objetos.
Cambia el nombre de los objetos de forma atómica
En esta sección, se describe cómo cambiar el nombre de los objetos de forma atómica dentro de un bucket.
Para cambiar el nombre de un objeto, puedes usar el método Objects: move
en la API de Cloud Storage JSON.
API de REST
API de JSON
Para cambiar el nombre de un objeto de forma atómica, haz lo siguiente:
Tener la gcloud CLI instalada e inicializada, lo que te permite generar un token de acceso para el encabezado
Authorization
.Usa
cURL
para llamar a la API de JSON con una solicitud deObjects: 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"Aquí:
BUCKET_NAME
es el nombre del bucket que contiene el objeto al que deseas cambiarle el nombre. Por ejemplo,my-bucket
SOURCE_OBJECT_NAME
es el nombre codificado en URL del objeto al que deseas cambiarle el nombre. Por ejemplo,pets/dog.png
, codificado en URL comopets%2Fdog.png
.DESTINATION_OBJECT_NAME
es el nombre codificado en URL que deseas usar. Por ejemplo,pets/cat.png
, codificado en URL comopets%2Fcat.png
.
¿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.