La función borrar de forma no definitiva ayuda a proteger tus datos de Cloud Storage en caso de que se borre un objeto o bucket de forma accidental o maliciosa. La función borrar de forma no definitiva conserva los objetos y buckets que se borran o reemplazan, ya que los retiene en un estado borrado de forma no definitiva durante un período específico. Durante este tiempo, el objeto o bucket no se puede borrar de forma permanente y se puede restablecer.
La función borrar de forma no definitiva está habilitada de forma predeterminada para todos los buckets que la admiten, con un período de retención predeterminado de 7 días. Puedes establecer un período de retención predeterminado diferente con etiquetas.
En esta página, se describe cómo funciona la función borrar de forma no definitiva.
Políticas de eliminación no definitiva
Cuando la función borrar de forma no definitiva está habilitada en un bucket, borrar el bucket o los objetos que contiene hace que el recurso pase a un estado borrado de forma no definitiva en lugar de borrarse de forma permanente. Para habilitar la función borrar de forma no definitiva en un bucket, debes establecer una política de eliminación no definitiva que defina cuánto tiempo se retienen los recursos borrados de forma no definitiva.
Las políticas de eliminación no definitiva funcionan de las siguientes maneras:
La política de eliminación no definitiva incluye un período de retención que define cuánto tiempo se retienen los recursos borrados de forma no definitiva antes de que se borren de forma permanente. El período de retención predeterminado es de 7 días, y puedes personalizarlo entre 7 y 90 días. Para inhabilitar la función borrar de forma no definitiva, establece el período de retención en 0.
Se establece automáticamente una política de eliminación no definitiva predeterminada en todos los buckets recién creados, excepto en los buckets que usan productos o capacidades que no son compatibles con la función borrar de forma no definitiva (como los buckets zonales que usan Rapid Bucket).
Puedes establecer, editar o inhabilitar una política de eliminación no definitiva cuando creas o actualizas un bucket.
Cuando editas una política de eliminación no definitiva, los cambios que realizas solo se aplican a los recursos que se borran después de que la política nueva entra en vigor. Los recursos que se borraron antes de que la política nueva entrara en vigor se conservan durante el período de retención original que estaba vigente cuando se borró el recurso. En otras palabras, los recursos borrados de forma no definitiva existentes siguen respetando el período de retención que estaba activo en el momento de su eliminación.
Por ejemplo, supongamos que estableces una política de eliminación no definitiva en un bucket que tiene un período de retención de siete días. Borras el objeto
object-A.png, que se borra de forma no definitiva. Luego, cambias el período de retención de la política a 10 días y, luego, borras el objetoobject-B.png, que también se borra de forma no definitiva.object-A.pngse retendrá durante siete días en el estado borrado de forma no definitiva, mientras queobject-B.pngse retendrá durante 10 días.Los cambios en el período de retención de una política de eliminación no definitiva tardan hasta 30 segundos en propagarse.
Para obtener información sobre cómo establecer y administrar políticas de eliminación no definitiva en buckets, consulta Establece y administra políticas de eliminación no definitiva.
Propiedades de los recursos borrados de forma no definitiva
Cuando se borra un bucket o un objeto con una política de eliminación no definitiva activa, el recurso pasa a un estado borrado de forma no definitiva. Puedes restablecer los recursos borrados de forma no definitiva durante su período de retención.
Los recursos borrados de forma no definitiva tienen las siguientes características:
Los objetos y buckets borrados de forma no definitiva no se pueden leer, modificar ni reemplazar. Las únicas operaciones admitidas son enumerarlas o restablecerlas.
Los recursos borrados de forma no definitiva se ocultan de las operaciones de lista de forma predeterminada. Para ver los recursos borrados de forma no definitiva, debes especificar de forma explícita una marca o un filtro para ver los recursos.
No puedes modificar un bucket borrado de forma no definitiva ni enumerar su contenido hasta que se restablezca el bucket. El método que usas para restablecer un bucket borrado de forma no definitiva afecta si también se restablecen los objetos del bucket:
Puedes restablecer un bucket borrado de forma no definitiva y sus objetos al mismo tiempo con la consola Google Cloud .
Si restableces un bucket con Google Cloud CLI o la API de JSON, solo se restablece el bucket vacío. Luego, debes restablecer los objetos en una operación separada para recuperar su contenido.
Si un bucket activo nuevo toma el nombre de un bucket, no puedes restablecer el bucket borrado de forma no definitiva hasta que se quite el bucket activo en conflicto.
Si se borra tu Google Cloud proyecto, no puedes usar la función borrar de forma no definitiva para restablecer los buckets o los objetos que contiene, incluso si tenían habilitada la función borrar de forma no definitiva.
Algunas capacidades de Cloud Storage son compatibles con las políticas de eliminación no definitiva, pero no afectan a los objetos borrados de forma no definitiva. Algunos ejemplos de estas capacidades son Autoclass, la Administración del ciclo de vida de los objetos, el bloqueo del bucket y el bloqueo de retención de objetos.
Si quieres obtener instrucciones para restablecer objetos o buckets borrados de forma no definitiva, consulta Restablece objetos borrados de forma no definitiva o Restablece buckets borrados de forma no definitiva.
Restablecimientos de objetos
Cuando restableces un objeto borrado de forma no definitiva, Cloud Storage crea una copia nueva y activa de ese objeto en el mismo bucket. La versión original borrada de forma no definitiva permanece en segundo plano hasta que vence oficialmente su período de retención. En la siguiente lista, se describen los comportamientos principales de restablecimiento:
Cuando restableces un objeto, Cloud Storage genera una versión nueva del objeto. Para obtener más información sobre las versiones de objetos, consulta Inmutabilidad de objetos.
Si ya existe un objeto activo con el mismo nombre que un objeto borrado de forma no definitiva cuando restableces el objeto borrado de forma no definitiva, el objeto restablecido reemplazará la versión activa existente. Luego, el objeto reemplazado que antes estaba activo se borra de forma no definitiva automáticamente.
En esta situación específica, tu bucket contendrá dos copias del objeto restablecido (una copia activa nueva y la copia anterior borrada de forma no definitiva) junto con la versión borrada de forma no definitiva recientemente del objeto que se reemplazó.
Independientemente del nivel de almacenamiento original del objeto o de cualquier configuración de Autoclass activa, todos los objetos restablecidos se escriben en la clase de almacenamiento Standard Storage.
Métodos de restablecimiento de objetos
Puedes restablecer objetos borrados de forma no definitiva con una de las dos rutas de ejecución, según tus requisitos de escala:
Restablecer objetos de a uno: Se usa para restablecer objetos individuales de forma síncrona.
Restablecer objetos de forma masiva: Se usa para la recuperación de datos a gran escala. Puedes iniciar operaciones asíncronas de larga duración para recuperar grandes grupos de objetos que coincidan con criterios de filtro específicos.
Restablece objetos con rutas duplicadas
Aunque es poco frecuente, pueden ocurrir objetos duplicados borrados de forma no definitiva con nombres y valores de generación idénticos en buckets con el espacio de nombres jerárquico habilitado. Este conflicto puede ocurrir si cambias el nombre de las carpetas que contienen objetos con nombres duplicados en buckets con el espacio de nombres jerárquico habilitado. En esta situación, es poco frecuente, pero es posible que dos objetos borrados de forma no definitiva compartan el mismo número de generación por casualidad.
Para comprender esta situación, consulta el siguiente ejemplo:
Tienes un objeto llamado
cat.pngdentro de una carpeta llamadamy-folder-A. Acat.pngse le asigna un número de generación de999. Borrascat.png, que se borra de forma no definitiva.Borras la carpeta superior vacía
my-folder-A.En otro lugar de tu almacenamiento, tienes una carpeta llamada
my-folder-B. Dentro de esta carpeta, hay un objeto diferente llamadocat.png. Por pura casualidad, a este objetocat.pngtambién se le asigna un número de generación de999. Cambias el nombre demy-folder-Bamy-folder-A. Debido al espacio de nombres jerárquico, la ruta del objeto cambia amy-folder-A/cat.png.Borras este segundo
cat.png, que se borra de forma no definitiva.
Ahora, hay dos objetos borrados de forma no definitiva llamados cat.png con el número de generación 999.
Para restablecer, enumerar o acceder a una versión específica de un objeto borrado de forma no definitiva entre duplicados, debes proporcionar un parámetro restoreToken único en tu solicitud.
Se requiere incluir el parámetro restoreToken cuando se restablecen, enumeran o acceden a versiones de objetos borrados de forma no definitiva en buckets con el espacio de nombres jerárquico habilitado. Si no incluyes el parámetro restoreToken cuando existen objetos duplicados, se produce un error que te solicita el token. Si envías el token, el nombre o el número de generación incorrectos, se mostrará un error que indica que no se pudo encontrar el objeto. Para obtener más información sobre el parámetro restoreToken,
consulta el método objects.restore.
Precios
Los objetos borrados de forma no definitiva siguen acumulando cargos de almacenamiento hasta que vence su período de retención y se borran de forma permanente. Los objetos que se borran de forma no definitiva antes de que finalice su duración mínima de almacenamiento generan cargos por eliminación temprana, a menos que ese objeto se haya almacenado en Standard Storage.
Para obtener información detallada sobre los costos asociados con la función borrar de forma no definitiva, consulta Precios de Cloud Storage.
Reduce los costos de los objetos temporales cuando usas la función borrar de forma no definitiva
Si un bucket contiene principalmente objetos temporales de corta duración, habilitar la función borrar de forma no definitiva en el bucket puede generar un aumento significativo en los costos de almacenamiento. Para ayudar a reducir los costos de los objetos temporales, te recomendamos lo siguiente:
Si necesitas cambiar el nombre de un objeto, usa el método
objects.movede la API de JSON para cambiar el nombre del objeto automáticamente. No cambies el nombre del objeto copiándolo.Almacena objetos temporales en buckets que no tengan habilitada la función borrar de forma no definitiva.
Por lo general, los objetos temporales tienen un ciclo de vida corto antes de que se borren. Los objetos temporales pueden ser los siguientes:
Datos que se usan como fuente para crear objetos compuestos
Datos que se regeneran para un propósito de corta duración, como resultados de consultas o archivos de etapa de pruebas
Datos de cargas de trabajo que tienen una alta frecuencia de escritura y eliminación (por ejemplo, millones de eliminaciones diarias)
Datos que se pueden borrar de forma permanente por accidente sin afectar la continuidad de la producción
Interacciones con otros productos y funciones
Cuando la función borrar de forma no definitiva está habilitada, se comporta con otros productos y funciones de las siguientes maneras:
Rapid Bucket: Los buckets zonales que usan Rapid Bucket no admiten la función borrar de forma no definitiva.
Administración del ciclo de vida de los objetos:
Las reglas de Administración del ciclo de vida de los objetos no afectan a los objetos borrados de forma no definitiva. No es posible usar la Administración del ciclo de vida de los objetos para cambiar la clase de almacenamiento de los objetos borrados de forma no definitiva ni para borrarlos de forma permanente.
Los objetos borrados por la Administración del ciclo de vida de los objetos se borran de forma no definitiva. Si también tienes habilitado el Control de versiones de objetos en tu bucket, los objetos activos borrados se convierten en no actuales y los objetos no actuales borrados se borran de forma no definitiva.
Control de versiones de objetos: Cuando borras un objeto no actual, se borra de forma no definitiva.
Cargas multiparte de la API de XML: Las partes de carga multiparte de la API de XML no están protegidas por la función borrar de forma no definitiva.
-
Las tarifas de administración de Autoclass no se evalúan para los objetos borrados de forma no definitiva.
Autoclass no cambia la clase de almacenamiento de los objetos borrados de forma no definitiva.
Cuando restableces un objeto borrado de forma no definitiva, el objeto resultante se establece en la clase Standard Storage.
Funciones de bloqueo del bucket y bloqueo de retención de objetos: Estas funciones evitarán que borres objetos hasta que cumplan con sus políticas de retención. Luego, la función borrar de forma no definitiva proporciona una capa adicional de protección, ya que retiene los objetos borrados durante un período de retención de eliminación no definitiva independiente.
Notificaciones de Pub/Sub: Restablecer una versión de un objeto borrada de forma no definitiva de un objeto activa un evento OBJECT_FINALIZE.
Carpetas administradas: La función borrar de forma no definitiva no puede restablecer las políticas de IAM en las carpetas administradas. Si borras de forma no definitiva un objeto y borras una carpeta administrada que otorga políticas de IAM para el objeto, es posible que debas volver a crear esas políticas de IAM antes de tener los permisos necesarios para restablecer el objeto borrado de forma no definitiva.
Etiquetas: Si creas un bucket sin incluir una configuración para borrar de forma no definitiva, la configuración predeterminada de Cloud Storage es crear el bucket con un período de retención de eliminación no definitiva de siete días. Puedes cambiar este valor predeterminado con una etiqueta. La etiqueta puede cambiar la duración de retención predeterminada de los buckets nuevos para que sea cualquier valor entre 7 y 90 días, o puede cambiar el valor predeterminado para inhabilitar la función borrar de forma no definitiva en buckets nuevos. También puedes usar etiquetas para inhabilitar la función borrar de forma no definitiva de forma predeterminada.
¿Qué sigue?
- Aprende a usar borrar de forma no definitiva.
- Obtén más información sobre cómo usar objetos borrados de forma no definitiva.
- Obtén información sobre la restricción de política
storage.softDeletePolicySeconds.