Controlo de versões de objetos

Configuração Utilização

A funcionalidade de controlo de versões de objetos preserva os objetos eliminados como objetos com controlo de versões e não atuais que permanecem acessíveis no seu contentor até serem removidos explicitamente. Esta funcionalidade é usada para monitorizar alterações a objetos e permitir a recuperação de versões específicas de um objeto. Esta página descreve a funcionalidade e as opções disponíveis quando a usa.

Recomendamos que use a eliminação temporária em vez do controlo de versões de objetos para se proteger contra a perda permanente de dados devido a eliminações acidentais ou maliciosas. Para saber mais sobre quando usar a eliminação temporária e o controlo de versões de objetos, consulte as Considerações.

Introdução

Ativa o controlo de versões de objetos para um contentor. Depois de ativado:

  • O Cloud Storage retém uma versão de objeto não atual sempre que substitui ou elimina uma versão de objeto atual, desde que não especifique o número de geração da versão atual.

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

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

  • Pode eliminar uma versão não atual de um objeto incluindo o número de geração no pedido de eliminação ou usando a Gestão do ciclo de vida de objetos.

  • Num contentor com a eliminação reversível ativada, quando elimina um objeto não atual, o Cloud Storage altera o respetivo estado para eliminado reversivelmente. Um objeto eliminado temporariamente é eliminado permanentemente após o período de retenção da eliminação temporária expirar.

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

Se desativar a criação de versões de objetos:

  • O contentor deixa de acumular novas versões não atuais de objetos.

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

Considerações

  • Não existe um limite predefinido para o número de versões de objetos que pode ter. Cada versão não atual de um objeto é cobrada à mesma taxa que tinha quando estava ativa.

  • A duração do armazenamento de uma versão de objeto removida de um contentor baseia-se na hora em que foi adicionada ao contentor e não na hora em que se tornou não atual.

  • Se ativar o controlo de versões, considere usar a Gestão do ciclo de vida de objetos, que pode remover versões mais antigas de um objeto após um período especificado ou à medida que as versões mais recentes se tornam não atuais. Para uma possível configuração, consulte o exemplo de configuração do ciclo de vida para eliminar objetos.

  • Para determinar se deve ativar a criação de versões de objetos ou a eliminação temporária no seu contentor, considere os seguintes pontos:

    • Se quiser evitar a perda permanente de dados devido a eliminações acidentais ou maliciosas, use a eliminação temporária em vez do controlo de versões de objetos. A eliminação temporária oferece proteção ao nível do contentor, retendo todos os objetos ativos ou não atuais eliminados recentemente. Também pode proteger contra eliminações ao nível do contentor.

    • Se tiver requisitos de faturação específicos e tiver configurado regras de gestão do ciclo de vida de objetos para reter um número especificado de versões não atuais, use a versão de objetos.

      Neste cenário, só recebe proteção parcial contra eliminações acidentais, uma vez que a criação de versões de objetos não protege contra eventos ao nível do contentor nem eliminações indesejadas de objetos não atuais.

    • Os objetos não atuais são acessíveis e legíveis, enquanto os objetos eliminados temporariamente são retidos offline e não são legíveis. A restauração de objetos eliminados temporariamente requer autorizações de IAM específicas que estão disponíveis para a função de IAM de administrador do armazenamento (roles/storage.admin).

      Se quiser aceder aos objetos eliminados mais recentemente e ter um elevado nível de proteção contra a perda permanente de dados devido a eventos de eliminação acidentais e maliciosos, pode ativar a criação de versões de objetos e a eliminação temporária no mesmo contentor. Pode configurar a política de gestão do ciclo de vida de objetos para eliminar automaticamente as versões não atuais após um número específico de dias e, em seguida, usar a eliminação reversível para fornecer uma camada de proteção adicional.

Metadados de objetos não atuais

As versões não atuais dos objetos têm os seus próprios metadados, que podem diferir dos metadados da versão publicada. Mais importante ainda, uma versão não atual retém as respetivas ACLs e não tem necessariamente as mesmas autorizações que a versão em direto.

Cada versão, quer seja atual ou não, tem um conjunto de metadados. Apenas o número de metageração mais recente se refere aos metadados. Não é possível usar números de metageração mais antigos para aceder a metadados que foram alterados desde então.

Pode atualizar os metadados de uma versão não atual de um objeto especificando o respetivo generation no seu pedido. Para garantir uma semântica de leitura-modificação-escrita segura, pode usar uma condição prévia de correspondência de metageração. A utilização desta pré-condição faz com que a atualização falhe se os metadados que está a tentar atualizar tiverem sido alterados entre o momento em que leu os metadados e enviou a atualização.

Exemplo de controlo de versões de objetos

Este exemplo mostra o que acontece ao objeto cat.jpg num contentor com a gestão de versões de objetos e a eliminação reversível ativadas à medida que substitui, atualiza e elimina o objeto.

Carrega uma nova imagem

Quando carrega cat.jpg pela primeira vez para o Cloud Storage, recebe um generation número e um metageneration número. Neste exemplo, o número de geração é 1360887697105000. Como o objeto é novo, o número de metageneration é 1.

cat.jpg recebe os números generation e metageneration, mesmo que a versão de objetos não esteja ativada. Pode obter estes números vendo os metadados do objeto.

Ativa a criação de versões de objetos

Neste ponto, decide ativar a criação de versões de objetos para o seu contentor. Esta ação não afeta os números generation nem metageneration de cat.jpg.

Altera os metadados da imagem

Atualiza os metadados de cat.jpg adicionando metadados personalizados: color:black. A atualização dos metadados faz com que o valor de metageneration de cat.jpg aumente, neste caso, de 1 para 2. No entanto, o objeto em si permanece inalterado, pelo que o Cloud Storage continua a armazenar apenas uma versão de cat.jpg, e a versão continua a ter um número generation de 1360887697105000.

Carrega uma nova versão da imagem

Carrega uma nova versão de cat.jpg para o seu contentor do Cloud Storage. Quando o faz, o controlo de versões de objetos move o objeto cat.jpg existente para um estado não atual. A versão não atual mantém a mesma classe de armazenamento e os metadados que tinha anteriormente. A versão não atual aparece apenas se fizer uma listagem com versões: não aparece em comandos de listagem normais. A versão não atual é agora referenciada como: cat.jpg#1360887697105000.

Entretanto, o cat.jpg carregado recentemente torna-se a versão publicada do objeto. Este novo cat.jpg recebe o seu próprio número generation. Neste exemplo, é 1360887759327000. Também recebe os seus próprios metadados e um metageneration número de 1, o que significa que não contém os metadados color:black a menos que os especifique. Quando acede ou modifica cat.jpg,, esta é a versão usada. Em alternativa, pode consultar esta versão de cat.jpg através do respetivo número generation. Por exemplo, quando usa a CLI do Google Cloud, refere-se a ela como cat.jpg#1360887759327000.

Elimina a versão publicada da imagem

Agora, elimina cat.jpg. Quando o faz, a versão com o número de geração 1360887759327000 torna-se não atual. O seu contentor tem agora duas versões não atuais de cat.jpg e nenhuma versão publicada. Pode continuar a consultar qualquer versão não atual através do respetivo número generation, mas se tentar aceder a cat.jpg sem um número generation, ocorre uma falha.

Da mesma forma, uma listagem de objetos normal do contentor não mostra cat.jpg como um dos objetos no contentor. Para obter informações sobre a listagem de versões não atuais de objetos, consulte o artigo Listar versões de objetos não atuais.

Desativa a criação de versões de objetos

Desativar o controlo de versões de objetos, o que impede que os objetos se tornem obsoletos. As versões não atuais existentes de objetos permanecem no Cloud Storage. Mesmo que o controlo de versões de objetos esteja desativado, os objetos cat.jpg#1360887697105000 e cat.jpg#1360887759327000 permanecem armazenados no seu contentor até os eliminar.

Restaura uma das versões não atuais

Mesmo com a funcionalidade de controlo de versões de objetos desativada, pode fazer uma cópia de uma das versões não atuais existentes, o que restaura efetivamente a versão. Depois de o fazer, o seu contentor tem três versões de cat.jpg: as duas versões não atuais e a versão publicada resultante da restauração.

Elimina uma das versões não atuais

Pode eliminar uma versão não atual de um objeto manualmente ou através da Gestão do ciclo de vida de objetos.

Quando elimina uma versão não atual, cat.jpg#1360887697105000, esta é eliminada temporariamente. Este objeto eliminado temporariamente é retido durante o período de retenção de eliminação temporária especificado na política de eliminação temporária do contentor. Após a expiração da duração da retenção, o Cloud Storage elimina permanentemente a versão eliminada temporariamente deste objeto.

Restaurar uma das versões de objetos eliminadas temporariamente

Mesmo com o controlo de versões de objetos desativado, pode restaurar uma versão eliminada temporariamente de um objeto não atual. É restaurada uma cópia de uma versão eliminada temporariamente como a versão ativa com novos metadados do objeto e uma nova data de criação. O objeto eliminado temporariamente original também permanece no contentor e é eliminado permanentemente após o prazo de retenção da eliminação temporária expirar.

Referência da gestão de versões de objetos

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

Estado do controlo de versões de objetos Estado de eliminação recuperável Ação Resultado
Desativado Desativado
Eliminar dog.png. dog.png é eliminado permanentemente.
Elimine uma versão não atual de dog.png especificando o respetivo número de geração.1 A versão não atual é eliminada permanentemente.
Substitua dog.png por uma nova versão. A nova versão substitui a versão ativa e recebe um novo número de geração. A versão publicada antiga é eliminada permanentemente.
Copie uma versão não atual de dog.png para substituir a versão publicada.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 publicada antiga é eliminada permanentemente.
Desativado Ativado
Eliminar dog.png. dog.png é eliminado temporariamente.
Elimine uma versão não atual de dog.png especificando o respetivo número de geração.1 A versão não atual é eliminada temporariamente.
Substitua dog.png por uma nova versão. A nova versão substitui a versão ativa e recebe um novo número de geração. A versão antiga em direto é eliminada de forma reversível.
Copie uma versão não atual de dog.png para substituir a versão publicada.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 antiga em direto é eliminada de forma reversível.
Ativado Desativado
Eliminar a versão em direto de dog.png sem especificar o número de geração. A versão ativa torna-se uma versão não atual e mantém o mesmo número de geração.
Elimine a versão publicada de dog.png especificando o respetivo número de geração. A versão publicada é eliminada permanentemente.
Elimine uma versão não atual do dog.png especificando o número da geração. A versão não atual é eliminada permanentemente.
Substitua dog.png por uma nova versão. A nova versão substitui a versão ativa e recebe um novo número de geração. A versão ativa antiga torna-se uma versão não atual e mantém o mesmo número de geração.
Copiar uma versão não atual de dog.png para substituir a versão publicada. 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 torna-se uma versão não atual e mantém o mesmo número de geração.
Ativado Ativado
Eliminar a versão em direto de dog.png sem especificar o número de geração. A versão ativa torna-se uma versão não atual e mantém o mesmo número de geração.
Elimine a versão publicada de dog.png especificando o respetivo número de geração. A versão publicada é eliminada de forma reversível.
Elimine uma versão não atual do dog.png especificando o número da geração. A versão não atual é eliminada temporariamente.
Substitua dog.png por uma nova versão. A nova versão substitui a versão ativa e recebe um novo número de geração. A versão ativa antiga torna-se uma versão não atual e mantém o mesmo número de geração.
Copiar uma versão não atual de dog.png para substituir a versão publicada. 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 torna-se uma versão não atual e mantém o mesmo número de geração.

1 Pode existir uma versão não atual se o bucket tiver o controlo de versões de objetos ativado anteriormente.

Comportamento de restauro

Pode restaurar eficazmente uma versão de objeto não atual para a versão atual em direto. Consulte o artigo Restaurar versões de objetos não atuais para ver um guia passo a passo para o fazer.

Quando o faz com o controlo de versões de objetos ativado, se já existir uma versão publicada do objeto no seu contentor, o Cloud Storage substitui a versão publicada existente, mas também a retém como uma nova versão não atual. Nesse caso, o contentor contém posteriormente o objeto substituído (agora não atual) e duas cópias do objeto que era anteriormente não atual (uma cópia ativa e uma cópia ainda não atual), que incorrem em custos de armazenamento. Para evitar cobranças desnecessárias, elimine a versão não atual que usou para criar a cópia dinâmica atual ou configure a gestão do ciclo de vida dos objetos para remover objetos não atuais quando cumprirem as condições que especificar.

O que se segue?