Control de versiones de los objetos

Configuración Uso

Para admitir la recuperación de objetos que se borran o reemplazan, Cloud Storage ofrece la función de control de versiones de objetos. En esta página, se describe la función y las opciones disponibles cuando se usa.

Introducción

Habilita el control de versiones de objetos para un bucket. Una vez que se habilita, sucede lo siguiente:

  • Cloud Storage retiene una versión de objeto no actual cada vez que realizas un reemplazo o borras una versión publicada de un objeto, siempre que no especifiques el número de generación de la versión publicada.

    • Las versiones no actuales conservan el nombre del objeto, pero se identifican de forma exclusiva por su número de generación.

    • Las versiones no actuales solo aparecen en las solicitudes que piden de forma explícita que se incluyan.

  • Puedes borrar versiones de objetos de forma permanente si incluyes el número de generación en la solicitud de eliminación o usas la Administración del ciclo de vida de los objetos.

  • Las versiones no actuales de objetos no dependen de las versiones publicadas.

Si inhabilitas el control de versiones de objetos, sucede lo siguiente:

  • El bucket ya no acumula nuevas versiones no actuales de objetos.

  • Las versiones de objetos que ya existen en el bucket no se ven afectadas.

Consideraciones

  • El control de versiones de los objetos no se puede habilitar en un depósito que actualmente tenga una política de retención.
  • No hay un límite predeterminado para la cantidad de versiones de objetos que puedes tener. Cada versión no actual de un objeto se cobra a la misma tarifa que estaba cuando estaba publicada.

  • La duración del almacenamiento de una versión de objeto que se quita de un bucket se basa en el momento en que se agregó al bucket, no en el momento en que se convirtió en no actual.

  • Si habilitas el control de versiones, considera usar la Administración del ciclo de vida de los objetos, que puede quitar versiones anteriores de un objeto después de un período específico o cuando las versiones más recientes se convierten en no actuales. Para una configuración posible, consulta el ejemplo de configuración del ciclo de vida a fin de borrar objetos.

Metadatos de objetos no actuales

Las versiones no actuales de objetos tienen sus propios metadatos, que pueden diferir de los metadatos de la versión publicada. Lo más importante es que una versión no actual conserva sus LCA y no siempre tiene los mismos permisos que la versión publicada.

Cada versión, ya sea publicada o no actual, tiene un conjunto de metadatos. Solo el número de metageneración más reciente hace referencia a los metadatos. Los números de metageneración anteriores no se pueden usar para acceder a los metadatos que cambiaron desde entonces.

Puedes actualizar los metadatos para una versión no actual de un objeto si especificas su generation en tu solicitud. Para garantizar una semántica de lectura, modificación y escritura segura, puedes usar una condición previa de coincidencia de metageneración. El uso de esta condición previa hace que la actualización falle si los metadatos que quieres actualizar se cambiaron entre el momento en que los leíste y que enviaste la actualización.

Ejemplo de control de versiones de los objetos

En este ejemplo, se muestra lo que sucede con el archivo cat.jpg en un depósito con el control de versiones de objetos habilitado a medida que reemplazas, actualizas y borras el archivo.

Sube una imagen nueva

La primera vez que subes cat.jpg a Cloud Storage, recibe un número generation y un número metageneration. En este ejemplo, el número de generación es 1360887697105000. Como el objeto es nuevo, el número metageneration es 1.

cat.jpg recibe los números generation y metageneration aunque el control de versiones de objetos no esté habilitado. Puedes obtener estos números si visualizas los metadatos del objeto.

Habilitas el control de versiones de objetos

En este punto, decides habilitar el control de versiones de objetos para tu depósito. Esto no afecta los números de generation o metageneration de cat.jpg.

Cambia los metadatos de la imagen

Actualizas los metadatos para cat.jpg mediante el agregado de metadatos personalizados: color:black. La actualización de metadatos hace que aumente el valor metageneration de cat.jpg, en este caso de 1 a 2. Sin embargo, el objeto en sí permanece sin cambios, por lo que Cloud Storage continúa almacenando solo una versión de cat.jpg, y la versión sigue teniendo un número de generation de 1360887697105000.

Sube una versión nueva de la imagen

Subes una versión nueva de cat.jpg a tu depósito de Cloud Storage. Cuando lo haces, el control de versiones del objeto pasa el objeto cat.jpg existente a un estado no actual. La versión no actual conserva la misma clase de almacenamiento y metadatos que tenía antes. La versión no actual aparece solo si realizas una lista con versión: no aparece en los comandos de lista normales. Ahora se hace referencia a la versión no actual como: cat.jpg#1360887697105000.

Mientras tanto, el cat.jpg que se acaba de subir se convierte en la versión publicada del objeto. Este cat.jpg nuevo obtiene su propio número de generation, en este ejemplo: 1360887759327000. También obtiene sus propios metadatos y un número metageneration de 1, lo que significa que no contiene los metadatos color:black, a menos que lo especifiques. Cuando accedes a cat.jpg, o lo modificas, esta es la versión que se usa. Como alternativa, puedes consultar esta versión de cat.jpg con su número de generation. Por ejemplo, cuando usas la CLI de Google Cloud, debes referirte a ella como cat.jpg#1360887759327000.

Borra la versión publicada de la imagen

Borra cat.jpg. Cuando lo haces, la versión que tenía el número de generación 1360887759327000 se convierte en no actual. Tu depósito contiene dos versiones no actuales de cat.jpg y ninguna versión publicada. Aún puedes hacer referencia a cualquiera de las versiones no actuales con su número generation, pero falla si intentas acceder a cat.jpg sin un número generation.

Del mismo modo, una lista de objetos normal del depósito no mostrará cat.jpg como uno de los objetos en el depósito. Para obtener información sobre cómo enumerar las versiones no actuales de objetos, consulta Enumera las versiones no actuales de objetos.

Inhabilita el control de versiones

Inhabilitas el control de versiones de objetos, que evita que los objetos se conviertan en no actuales. Las versiones no actuales de objetos existentes permanecen en Cloud Storage. Aunque el control de versiones de objetos está inhabilitado, cat.jpg#1360887697105000 y cat.jpg#1360887759327000 permanecen almacenados en tu depósito hasta que los borres, ya sea manualmente o mediante laAdministración del ciclo de vida de los objetos.

Restablece una de las versiones no actuales

Incluso con el control de versiones de objetos inhabilitado, puedes hacer una copia de una de las versiones no actuales existentes, que restablece la versión de forma efectiva. Una vez que haces esto, tu bucket tiene tres versiones de cat.jpg: las dos versiones no actuales y la versión publicada que se generó cuando se hizo el restablecimiento.

Referencia del control de versiones de objetos

En esta tabla de referencia, se muestra lo que sucede cuando realizas ciertas acciones con el control de versiones de objetos.

Estado del control de versiones de objetos Acción Resultado
Inhabilitado
Reemplaza dog.png por una versión nueva. La versión nueva reemplaza a la publicada y recibe un número de generación nuevo. La versión publicada antigua se borra de forma permanente.
Copiar una versión no actual de dog.png que reemplace a la versión publicada.1 Una copia de la versión no actual reemplaza a la publicada y recibe un número de generación nuevo. La versión publicada antigua se borra de forma permanente.
Borrar dog.png. dog.png se borra de forma permanente.
Borrar una versión no actual de dog.png mediante la especificación de su número de generación.1 La versión no actual se borra de forma permanente.
Habilitado
Reemplaza dog.png por una versión nueva. La versión nueva reemplaza a la publicada y recibe un número de generación nuevo. La versión publicada antigua se convierte en una no actual y conserva el mismo número de generación.
Copiar una versión no actual de dog.png que reemplace a la publicada. Una copia de la versión no actual reemplaza a la publicada y recibe un número de generación nuevo. La versión publicada antigua se convierte en una no actual y conserva el mismo número de generación.
Borrar la versión publicada de dog.png sin especificar su número de generación. La versión publicada se convierte en una no actual y conserva el mismo número de generación.
Borrar la versión publicada de dog.png mediante la especificación de su número de generación. La versión publicada se borra de forma permanente.
Borrar una versión no actual de dog.png mediante la especificación de su número de generación. La versión no actual se borra de forma permanente.

1 Es posible que exista una versión no actual si el depósito tenía habilitado el control de versiones de objetos.

Comportamiento de restablecimiento de archivos

Puedes restablecer de manera eficaz una versión no actual de objeto a la versión publicada actual. Consulta Restablece las versiones de objetos no actuales para obtener una guía paso a paso al respecto.

Cuando haces esto con el control de versiones de objetos habilitado, si ya existe una versión publicada del objeto en el bucket, Cloud Storage reemplaza la versión publicada existente, pero también la conserva como una nueva versión no actual. En ese caso, el bucket contendrá el objeto reemplazado (ahora no actual) y dos copias del objeto que antes era no actual (una copia publicada y otra aún no actual) y todos incurren en cargos de almacenamiento. Para evitar cargos innecesarios, borra la versión no actual que usaste para crear la copia publicada actual o configura la Administración del ciclo de vida de los objetos para quitar los objetos no actuales cuando cumplan con las condiciones que especifiques.

¿Qué sigue?