Descripción general Configuración
En esta página, se describe cómo enumerar, acceder y restablecer objetos borrados de forma no definitiva.
Antes de comenzar
Para completar las tareas de esta página, asegúrate de tener el rol de administrador de almacenamiento (roles/storage.admin
) de IAM en el bucket o el proyecto que contiene el bucket. Este rol predefinido incluye los permisos necesarios para administrar y restablecer la eliminación no definitiva en un bucket.
Para ver los permisos exactos que son necesarios, expande la sección Permisos necesarios:
Permisos necesarios
storage.buckets.get
storage.buckets.update
storage.buckets.list
- Este permiso es necesario si planeas usar la consola de Google Cloud para ejecutar las instrucciones en esta página.
storage.objects.restore
storage.objects.create
storage.objects.delete
- Este permiso es necesario si restablecer un objeto hace que se reemplace un objeto existente.
storage.buckets.restore
- Este permiso es necesario si deseas restablecer de forma masiva los objetos borrados de forma no definitiva en un bucket.
storage.bucketOperations.*
- Este permiso es necesario para operaciones de larga duración.
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.
Enumera todos los objetos borrados de forma no definitiva en un bucket
Puedes enumerar todos los objetos borrados de forma no definitiva en un bucket.
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 del que deseas ver los objetos borrados de forma no definitiva. Se abrirá la página Detalles del bucket con la pestaña Objetos elegidos.
En la lista Mostrar, selecciona Solo objetos borrados de forma no definitiva. Se muestra una lista de objetos borrados de forma no definitiva.
Línea de comandos
Para mostrar una lista de todos los objetos borrados de forma no definitiva en un bucket, usa el
comando gcloud storage ls
con las marcas --soft-deleted
y
--recursive
:
gcloud storage ls gs://BUCKET_NAME --soft-deleted --recursive
Reemplaza lo siguiente:
BUCKET_NAME
: el nombre del bucket. Por ejemplo,my-bucket
.
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 para enumerar objetos que use la consulta?softDeleted
parámetro:curl -X GET \ -H "Authorization: Bearer $(gcloud auth print-access-token)" \ -H "Content-Type: application/json" \ "https://storage.googleapis.com/storage/v1/b/BUCKET_NAME/o?softDeleted=true"
En el que
BUCKET_NAME
es el nombre del bucket correspondiente. Por ejemplo,my-bucket
.
Visualiza todas las versiones borradas de forma no definitiva de un objeto
Puedes ver todas las versiones borradas de forma no definitiva de un objeto específico en tu bucket.
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 del que deseas ver las versiones borradas de forma no definitiva. Se abrirá la página Detalles del bucket con la pestaña Objetos elegidos.
Haz clic en el objeto del que deseas ver todas las versiones borradas de forma no definitiva. Aparecerá la página Detalles del objeto.
Haz clic en la pestaña Historial de versiones.
En la lista Mostrar, selecciona Solo objetos borrados de forma no definitiva. Se muestra una lista de todas las versiones borradas de forma no definitiva de ese objeto.
Línea de comandos
Para mostrar una lista de todas las versiones borradas de forma no definitiva de un objeto en un
bucket, usa el comando gcloud storage ls
:
gcloud storage ls gs://BUCKET_NAME/OBJECT_NAME --soft-deleted
Reemplaza lo siguiente:
BUCKET_NAME
: el nombre del bucket. Por ejemplo,my-bucket
.OBJECT_NAME
: el nombre del objeto del que deseas ver todas las versiones.
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 para enumerar objetos que use la consulta?softDeleted
parámetro:curl -X GET \ -H "Authorization: Bearer OAUTH2_TOKEN" \ -H "Content-Type: application/json" \ "https://storage.googleapis.com/storage/v1/b/BUCKET_NAME/o?softDeleted=true"
En el que
BUCKET_NAME
es el nombre del bucket correspondiente. Por ejemplo,my-bucket
.
Restablece un objeto borrado de forma no definitiva
Puedes restablecer una versión específica de un objeto borrado de forma no definitiva en tu bucket.
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 los objetos borrados de forma no definitiva que deseas restablecer. Se abrirá la página Detalles del bucket con la pestaña Objetos elegidos.
En la lista Mostrar, selecciona Solo objetos borrados de forma no definitiva.
Navega hasta el objeto, que puede estar en una carpeta.
Haz clic en el objeto borrado de forma no definitiva. Aparecerá la página Detalles del objeto.
En la lista Mostrar, selecciona Solo objetos borrados de forma no definitiva. Se muestra una lista de todas las versiones borradas de forma no definitiva de ese objeto.
Para restablecer una versión específica de un objeto borrada de forma no definitiva, haz clic en Restablecer junto a esa versión. Se abrirá el panel para restablecer versiones de objetos.
Haz clic en Confirmar.
Línea de comandos
Para restablecer una versión de un objeto borrada de forma no definitiva, usa
el comando gcloud storage restore
:
gcloud storage restore gs://BUCKET_NAME/OBJECT_NAME#GENERATION_NUMBER
Reemplaza lo siguiente:
BUCKET_NAME
: el nombre del bucket. Por ejemplo,my-bucket
.OBJECT_NAME
: el nombre del objeto del que deseas ver todas las versiones.GENERATION_NUMBER
: el número de generación del objeto borrado de forma no definitiva que deseas restablecer. Si no especificas el número de generación, se restablece la versión más reciente. Por ejemplo,1560468815691234
Para obtener más opciones para restablecer varios objetos de forma masiva, incluido
el restablecimiento de todas las versiones de un objeto con la marca all-versions
, consulta la
referencia de gcloud storage restore
.
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-Type: application/json" \ "https://storage.googleapis.com/storage/v1/b/BUCKET_NAME/o/OBJECT_NAME/restore?generation=GENERATION_NUMBER"
Donde:
BUCKET_NAME
es el nombre del bucket correspondiente. Por ejemplo,my-bucket
.OBJECT_NAME
es el nombre del objeto borrado de forma no definitiva que deseas restablecer. Por ejemplo,cat.jpeg
GENERATION_NUMBER
es el número de generación del objeto borrado de forma no definitiva que deseas restablecer. Si no especificas el número de generación, se restablece la versión más reciente. Por ejemplo,1560468815691234
.
Restablece de forma masiva objetos borrados de forma no definitiva en un bucket
Si deseas restablecer una gran cantidad de objetos o no conoces los objetos específicos que deseas restablecer, usa una operación de restablecimiento masivo. Ten en cuenta que las operaciones de restablecimiento masivo se realizan de forma asíncrona y, en algunos casos, pueden tardar una hora o más en comenzar.
La operación de restablecimiento masivo inicia una operación de larga duración en un bucket. Puedes usar Google Cloud CLI para obtener y enumerar operaciones de larga duración para ver los detalles y el estado de la operación de restablecimiento masivo mientras está en curso.
Console
- En la consola de Google Cloud, ve a la página Buckets de Cloud Storage.
En la lista de buckets, busca el que contiene los objetos que deseas restablecer.
Haz clic en el menú Ampliado del bucket (more_vert) asociado al bucket y selecciona Create restore job.
Se abrirá el panel Create a restore job.
En la sección Choose which soft-deleted objects to restore, selecciona el período de eliminación desde el que deseas restablecer los objetos.
Selecciona Filter by glob pattern y, luego, ingresa un patrón glob para restablecer únicamente los objetos que cumplan con los criterios del patrón glob (opcional).
Activa o desactiva comportamientos de restablecimiento adicionales en la sección Restore options (opcional).
Haz clic en Crear.
Para realizar un seguimiento del progreso de la operación de restablecimiento masivo, haz clic en el botón Notificaciones (notifications) que se encuentra en el encabezado de la consola de Google Cloud.
Línea de comandos
Para usar la operación de restablecimiento masivo para restablecer todos los objetos en un bucket, usa el
comando gcloud storage restore
.
Con el siguiente comando, se realiza una operación de restablecimiento masivo para restablecer de forma asíncrona todos los objetos del bucket que se borraron durante un período específico:
gcloud storage restore gs://BUCKET_NAME/** \ --async --deleted-after-time=DELETED_AFTER_TIME \ --deleted-before-time=DELETED_BEFORE_TIME
Reemplaza lo siguiente:
BUCKET_NAME
: el nombre del bucket. Por ejemplo,my-bucket
.DELETED_AFTER_TIME
: es un argumento opcional para especificar la fecha después de la cual se restablecen los objetos. Por ejemplo,2022-12-01
DELETED_BEFORE_TIME
: es un argumento opcional para especificar la fecha antes de la que se restablecen los objetos. Por ejemplo,2022-12-21
.Si se ejecuta de forma correcta, el comando muestra el ID de la operación de larga duración asociada con la operación de restablecimiento masivo. Puedes obtener detalles sobre la operación de larga duración o cancelar la operación de larga duración para detener la operación de restablecimiento masivo antes de que se complete.
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-Type: application/json" \ "https://storage.googleapis.com/storage/v1/b/BUCKET_NAME/o/bulkRestore"
En el que
BUCKET_NAME
es el nombre del bucket correspondiente. Por ejemplo,my-bucket
.
Si se ejecuta de forma correcta, el comando muestra el ID de la operación de larga duración asociada con la operación de restablecimiento masivo. Puedes obtener detalles sobre la operación de larga duración o cancelar la operación de larga duración para detener la operación de restablecimiento masivo antes de que se complete.
Administra operaciones de larga duración para el restablecimiento masivo
Las operaciones de larga duración en Google Cloud CLI se identifican con un nombre de operación, que es una combinación del nombre del bucket y el ID de la operación.
En el siguiente ejemplo, se muestra una operación de larga duración que se obtiene de una operación de restablecimiento masivo:
done: false { "kind": "storage@operation", "name": "projects/_/buckets/my-bucket/operations/CiQyODRlMTY0My0wNGExLTQ3MWItOTE2Zi1hZmQ0ZmM4ZDc4MjQQAg", "metadata": { "@type": "type.googleapis.com/google.storage.v2.BulkRestoreObjectsMetadata", "commonMetadata": { "type": "bulk-restore-objects", "createTime": "2023-10-20T21:08:11.289Z", "updateTime": "2023-10-20T21:18:37.583Z", "endTime": "2023-10-20T21:18:37.583Z", "requestedCancellation": false, "progressPercent": -1, }, "allow_overwrite": false, "matchGlobs": ["*"], "succeededCount": "0", "failedCount": "0", "skippedCount": "0", }, "done": true, "response": { "@type": "type.googleapis.com/google.storage.v2.BulkRestoreObjectsResponse" } }
Para obtener información general sobre cómo administrar operaciones de larga duración, consulta la
documentación de gcloud storage operations
.
Obtén los detalles de una operación de larga duración
Usa el comando gcloud storage operations describe
:
gcloud storage operations describe projects/_/buckets/BUCKET_NAME/operations/OPERATION_ID
Reemplaza lo siguiente:
BUCKET_NAME
: el nombre del bucket que contiene la operación de larga duración. Por ejemplo,my-bucket
.OPERATION_ID
: el ID de la operación de larga duración que se muestra en la respuesta de la operación de restablecimiento masivo.
Enumera las operaciones de larga duración de un bucket
Usa el comando gcloud storage operations list
:
gcloud storage operations list gs://BUCKET_NAME
Reemplaza lo siguiente:
BUCKET_NAME
: el nombre del bucket que contiene las operaciones de larga duración. Por ejemplo,my-bucket
.
Cancelar una operación de larga duración
Usa el comando gcloud storage operations cancel
:
gcloud storage operations cancel projects/_/buckets/BUCKET_NAME/operations/OPERATION_ID
Reemplaza lo siguiente:
BUCKET_NAME
: el nombre del bucket que contiene la operación de larga duración. Por ejemplo,my-bucket
.OPERATION_ID
: el ID de la operación de larga duración que se muestra en la respuesta de la operación de restablecimiento masivo.
Manejo de errores
Las operaciones de larga duración se muestran desde las API asíncronas, que requieren diferentes prácticas de manejo de errores que las de las APIs síncronas. A diferencia de las APIs síncronas, las APIs que muestran operaciones de larga duración tienen éxito incluso si falla la operación subyacente. Cuando usas APIs que muestran operaciones de larga duración, respondes a los códigos de error que se muestran en las respuestas correctas, en lugar de responder a los códigos de error que se muestran en las respuestas con errores.
Por ejemplo, si realizas una solicitud de restablecimiento masivo de la eliminación no definitiva,
muestra un código de estado HTTP correcto (200 OK
), incluso si se produce un error en
el transcurso de la operación. Para verificar si la operación de restablecimiento
masivo se realizó de forma correcta, consulta el estado de la operación de larga duración.
Ten en cuenta que las APIs de operación de larga duración (Get, Create, Cancel) son síncronas y muestran errores normales.
Reintentos
Las APIs de eliminación no definitiva asíncrona son idempotentes de forma predeterminada. Por lo tanto, puedes reintentar de manera segura las llamadas a la API de eliminación no definitiva sin preocuparte por modificar los recursos de forma involuntaria.
¿Qué sigue?
- Obtén más información sobre borrar de forma no definitiva.
- Aprende a usar borrar de forma no definitiva.