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.
Los cargos de eliminación temprana se aplican solo cuando se quita una versión del objeto del bucket, no cuando esta se vuelve no actual. La duración del almacenamiento de una versión que se quita de un bucket se basa en el tiempo 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úmerogeneration
y un númerometageneration
. En este ejemplo, el número de generación es1360887697105000
. Como el objeto es nuevo, el númerometageneration
es1
.cat.jpg
recibe los númerosgeneration
ymetageneration
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
ometageneration
decat.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 valormetageneration
decat.jpg
, en este caso de1
a2
. Sin embargo, el objeto en sí permanece sin cambios, por lo que Cloud Storage continúa almacenando solo una versión decat.jpg
, y la versión sigue teniendo un número degeneration
de1360887697105000
.- 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 objetocat.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. Estecat.jpg
nuevo obtiene su propio número degeneration
, en este ejemplo:1360887759327000
. También obtiene sus propios metadatos y un númerometageneration
de1
, lo que significa que no contiene los metadatoscolor:black
, a menos que lo especifiques. Cuando accedes acat.jpg,
o lo modificas, esta es la versión que se usa. Como alternativa, puedes consultar esta versión decat.jpg
con su número degeneration
. Por ejemplo, cuando usas la CLI de Google Cloud, debes referirte a ella comocat.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ón1360887759327000
se convierte en no actual. Tu depósito contiene dos versiones no actuales decat.jpg
y ninguna versión publicada. Aún puedes hacer referencia a cualquiera de las versiones no actuales con su númerogeneration
, pero falla si intentas acceder acat.jpg
sin un númerogeneration
.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
ycat.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. Con el fin de evitar cargos innecesarios, borra la versión no actual que usaste para crear la copia publicada actual o configura Object Lifecycyle Management a fin de quitar los objetos no actuales cuando cumplan con las condiciones que especifique.
¿Qué sigue?
- Obtén más información sobre cómo habilitar el control de versiones de objetos.
- Trabaja con objetos no actuales.
- Obtén información sobre las propiedades del objeto generation y metageneration.
- Obtén información sobre la Administración del ciclo de vida de los objetos, que te permite administrar automáticamente las versiones de los objetos.
- Consulta un ejemplo de Administración del ciclo de vida de los objetos que funciona con el control de versiones de objetos.