Controle de versões dos objetos

Configuração Uso

O controle de versões de objetos preserva objetos excluídos como objetos não atuais e com controle de versão que permanecem acessíveis no bucket até serem removidos explicitamente. Esse recurso é usado para rastrear alterações em objetos e permitir a recuperação de versões específicas de um objeto. Nesta página, você verá esse recurso e as opções disponíveis ao usá-lo.

Recomendamos que você use a exclusão reversível em vez do controle de versões de objetos para se proteger contra a perda permanente de dados devido a exclusões acidentais ou maliciosas. Para saber mais sobre quando usar a exclusão reversível e o controle de versões de objetos, consulte Considerações.

Introdução

Ative o controle de versões de objetos para um bucket. Uma vez ativado,

  • O Cloud Storage mantém uma versão não atual do objeto sempre que você substituir ou excluir uma versão ativa do objeto, desde que não seja especificado o número de geração da versão ativa.

    • As versões não atuais mantêm o nome do objeto, mas são identificadas exclusivamente pelo número de geração.

    • As versões não atuais só aparecem nas solicitações que as chamam explicitamente para serem incluídas.

  • Para excluir uma versão não atual de um objeto, inclua o número de geração na solicitação de exclusão ou use o Gerenciamento do ciclo de vida de objetos.

  • Em um bucket com a exclusão reversível ativada, não é possível excluir permanentemente um objeto não atual até que a duração da retenção da exclusão reversível termine. Quando você exclui um objeto não atual, o Cloud Storage altera o estado para excluído de maneira reversível. Um objeto excluído de maneira reversível é permanentemente excluído após o período de armazenamento dessa exclusão expirar.

  • As versões não atuais de objetos existem independentemente de qualquer versão ativa.

Se você desativar o controle de versões de objetos, acontecerá o seguinte:

  • O bucket não acumula mais versões arquivadas de objetos.

  • As versões de objeto que já existem no bucket não são afetadas.

Considerações

  • Não há limite padrão para o número de versões de objetos que você pode ter. Cada versão arquivada de um objeto é cobrada pela mesma taxa de quando ele estava ativo.

  • As cobranças de exclusão antecipada se aplicam somente quando uma versão do objeto é removida do bucket, e não quando a versão se torna não atual. A duração do armazenamento de uma versão removida de um bucket é baseada no momento em que ele foi adicionado ao bucket, e não no tempo em que se tornou inativo.

  • Se você ativar o controle de versões, use o Gerenciamento do ciclo de vida de objetos, que pode remover as versões mais antigas de um objeto após um certo período ou à medida que versões mais recentes se tornam não atuais. Veja uma configuração possível no exemplo de exclusão de objetos da configuração do ciclo de vida.

  • Para determinar se o controle de versões de objetos ou a exclusão reversível será ativado no bucket, considere os seguintes pontos:

    • Para evitar a perda permanente de dados devido a exclusões acidentais ou maliciosas, use a exclusão reversível em vez do controle de versões de objetos. A exclusão reversível fornece proteção no nível do bucket, mantendo todos os objetos ativos ou não atuais recentemente excluídos. Ela também protege contra exclusões no nível do bucket.
    • Se você tiver requisitos de faturamento específicos e tiver configurado regras de gerenciamento do ciclo de vida de objetos usando prefixadas para reter um número especificado de versões não atuais, use o controle de versões de objetos.

      Nesse cenário, você só tem proteção parcial contra exclusões acidentais porque o controle de versões de objetos não protege contra eventos no nível do bucket ou exclusões indesejadas de objetos não atuais.

    • Os objetos não atuais são acessíveis e legíveis, enquanto os objetos excluídos de maneira reversível são mantidos off-line e não são legíveis. Para restaurar objetos excluídos de maneira reversível, é preciso ter permissões específicas do IAM que estejam disponíveis para o papel de IAM de Administrador do Storage (roles/storage.admin).

      Caso queira acessar os objetos excluídos mais recentemente e ter um alto nível de proteção contra a perda permanente de dados de eventos de exclusão acidental e maliciosa, ative o controle de versões de objetos e a exclusão reversível no mesmo bucket. É possível configurar a política de Gerenciamento do ciclo de vida de objetos para excluir automaticamente versões não atuais após um número específico de dias e usar a exclusão reversível para fornecer uma camada adicional de proteção.

Metadados de objeto não atual

As versões não atuais de objetos têm seus próprios metadados, que podem ser diferentes dos metadados da versão ativa. Ainda mais importante, uma versão não atual mantém as próprias ACLs e não tem necessariamente as mesmas permissões que a versão ativa.

Cada versão, ativa ou não atual, tem um conjunto de metadados. Somente o último número de metageração se refere aos metadados. Números de metageração mais antigos não podem ser usados para acessar metadados que foram alterados desde então.

É possível atualizar metadados para uma versão não atual de um objeto especificando a generation na solicitação. Para garantir uma semântica segura de leitura-modificação-gravação, é possível usar uma condição prévia de correspondência de metageração. Essa condição prévia faz com que a atualização falhe se os metadados que você está tentando atualizar foram alterados entre a hora em que você leu os metadados e a hora em que enviou a atualização.

Exemplo de controle de versão de objetos

Este exemplo mostra o que acontece com o arquivo cat.jpg em um bucket com controle de versões de objetos e exclusão reversível ativados quando o arquivo é substituído, atualizado e excluído.

Upload de uma nova imagem

Ao fazer o uploadcat.jpg para o Cloud Storage pela primeira vez, ele recebe um número de generation e um metagenerationnúmero de . Neste exemplo, o número de geração é 1360887697105000. Como o objeto é novo, o número metageneration é 1.

cat.jpg recebe números generation e metageneration, mesmo que o controle de versões de objetos não esteja ativado. É possível conseguir esses números visualizando os metadados do objeto.

Você ativa o controle de versão de objeto

Nesse momento, você decide ativar o controle de versões de objetos para o bucket. Isso não afeta os números generation ou metageneration de cat.jpg.

Mudança dos metadados da imagem

Para atualizar os metadados para cat.jpg adicione metadados personalizados : color:black. A atualização de metadados faz com que o valor metageneration de cat.jpg aumente, neste caso, de 1 a 2. No entanto, o objeto permanece inalterado, de modo que o Cloud Storage continua armazenando apenas uma versão de cat.jpg, e a versão continua a ter um número generation de 1360887697105000.

Upload de uma nova versão da imagem

Faça o upload de uma nova versão de cat.jpg para seu bucket do Cloud Storage. Ao fazer isso, o controle de versões de objetos move o objeto cat.jpg atual para um estado não atual. A versão não atual mantém a mesma classe de armazenamento e os mesmos metadados que tinha antes. Ela aparece apenas se você executar uma listagem com versão: ela não aparece nos comandos normais de listagem. A versão não atual agora é referenciada como: cat.jpg#1360887697105000.

Enquanto isso, a versão da imagem cat.jpg que acabou de ser enviada se torna a versão ativa do objeto. Essa nova imagem cat.jpg recebe seu próprio número de generation, que neste exemplo é 1360887759327000. Ela também recebe seus próprios metadados e um número metageneration de 1, o que significa que ele não contém os metadados color:black, a não ser que você especifique. Quando você for acessar ou modificar a imagem cat.jpg,, é esta versão que será usada. Outra opção é consultar essa versão da cat.jpg usando o número generation. Por exemplo, ao usar a Google Cloud CLI, você se referirá a ela como cat.jpg#1360887759327000.

Exclusão da versão ativa da imagem

Agora, é possível excluir cat.jpg. Quando fizer isso, a versão que teve o número de geração 1360887759327000 se tornará não atual. Agora, o bucket contém duas versões não atuais de cat.jpg e nenhuma versão ativa. Ainda é possível consultar qualquer versão não atual usando o número de generation. No entanto, se tentar acessar cat.jpg sem um número de generation, ocorrerá uma falha.

Da mesma forma, uma listagem normal de objetos do bucket não mostrará cat.jpg como um dos objetos no bucket. Para mais informações sobre a listagem de versões não atuais de objetos, consulte esta página.

Desativação do controle de versões de objetos

Desative o controle de versões de objetos. Isso impede que os objetos se tornem não atuais. As versões não atuais de objetos permanecem no Cloud Storage. Mesmo que o controle de versões de objetos esteja desativado, cat.jpg#1360887697105000 e cat.jpg#1360887759327000 permanecem armazenados no bucket até que você os exclua.

Restauração de uma das versões não atuais

Mesmo com o controle de versão de objetos desativado, é possível fazer uma cópia de uma das versões não atuais, que efetivamente restaura a versão. Depois disso, seu bucket terá três versões da cat.jpg: as duas versões não atuais e a versão ativa que foi restaurada.

Restauração de uma das versões não atuais

É possível excluir a versão não atual de um objeto manualmente ou usando o Gerenciamento do ciclo de vida de objetos.

Quando você exclui uma versão não atual, cat.jpg#1360887697105000, ela é excluída de forma reversível. Esse objeto excluído de maneira reversível é retido pelo período de retenção da exclusão reversível especificado na política de exclusão reversível do bucket. Depois que a duração da retenção expirar, o Cloud Storage exclui permanentemente a versão desse objeto excluída de forma reversível.

Restaure uma das versões de objetos excluídas de maneira reversível

Mesmo com o controle de versões de objetos desativado, é possível restaurar uma versão excluída de forma reversível de um objeto não atual. Uma cópia de uma versão excluída de forma reversível é restaurada como a versão ativa com novos metadados de objeto e uma nova data de criação. O objeto original excluído de maneira reversível também permanece no bucket e é excluído permanentemente depois que a duração da retenção da exclusão reversível expirar.

Referência de controle de versões de objetos

Esta tabela de referência mostra o que acontece quando você realiza determinadas ações com o controle de versões de objetos.

Status do controle de versões de objetos Status da exclusão reversível Ação Resultado
Desativada Desativada
Excluir dog.png. dog.png é excluído permanentemente.
Exclua uma versão não atual de dog.png especificando o número de geração.1 A versão não atual é excluída permanentemente.
Substitua dog.png por uma nova versão. A nova versão substitui a versão ativa e recebe um número da nova geração. A versão ativa antiga é excluída permanentemente.
Copiar uma versão não circulante de dog.png sobre a versão ao vivo.1 Uma cópia da versão não atual substitui a versão ativa e recebe um novo número de geração. A versão ativa antiga é excluída permanentemente.
Desativada Ativado
Excluir dog.png. dog.png é excluído de forma reversível.
Exclua uma versão não atual de dog.png especificando o número de geração.1 A versão não atual é excluída de forma reversível.
Substitua dog.png por uma nova versão. A nova versão substitui a versão ativa e recebe um número da nova geração. A versão ativa antiga é excluída permanentemente.
Copiar uma versão não circulante de dog.png sobre a versão ao vivo.1 Uma cópia da versão não atual substitui a versão ativa e recebe um novo número de geração. A versão ativa antiga é excluída permanentemente.
Ativado Desativada
Exclua a versão ativa de dog.png sem especificar o número de geração. A versão ativa se torna uma versão não atual e mantém o mesmo número de geração.
Exclua a versão ativa de dog.png especificando o número de geração. A versão ativa será excluída permanentemente.
Exclua uma versão não atual de dog.png especificando o número de geração. A versão não atual é excluída permanentemente.
Substitua dog.png por uma nova versão. A nova versão substitui a versão ativa e recebe um número da nova geração. A versão ativa antiga se torna uma versão não atual e mantém o mesmo número de geração.
Copie uma versão não atual de dog.png sobre a versão ativa. Uma cópia da versão não atual substitui a versão ativa e recebe um novo número de geração. A versão ativa antiga se torna uma versão não atual e mantém o mesmo número de geração.
Ativado Ativado
Exclua a versão ativa de dog.png sem especificar o número de geração. A versão ativa se torna uma versão não atual e mantém o mesmo número de geração.
Exclua a versão ativa de dog.png especificando o número de geração. A versão ativa é excluída de forma reversível.
Exclua uma versão não atual de dog.png especificando o número de geração. A versão não atual é excluída de forma reversível.
Substitua dog.png por uma nova versão. A nova versão substitui a versão ativa e recebe um número da nova geração. A versão ativa antiga se torna uma versão não atual e mantém o mesmo número de geração.
Copie uma versão não atual de dog.png sobre a versão ativa. Uma cópia da versão não atual substitui a versão ativa e recebe um novo número de geração. A versão ativa antiga se torna uma versão não atual e mantém o mesmo número de geração.

1 Uma versão não atual pode existir se o controle de versões de objetos tiver sido ativado anteriormente.

Comportamento de restauração de arquivos

É possível restaurar com eficiência uma versão de objeto não atual para a versão atual ativa. Consulte Como restaurar versões de objetos não atuais para um guia passo a passo.

Quando isso é feito com o controle de versão de objeto ativado, se já houver uma versão ativa do objeto no bucket, o Cloud Storage substituirá a versão ativa atual, mas também a manterá como uma nova versão desativada. Nesse caso, o bucket conterá o objeto substituído (agora desativado) e duas cópias do objeto que estava desativado (uma cópia ativa e outra desativada), todos com custos de armazenamento. Para evitar cobranças desnecessárias, exclua a versão desatualizada que você usou para fazer a cópia ativa atualizada ou configure o Object Lifecycyle Management para remover objetos desatualizados quando atender às condições que você especificar.

A seguir