Controle de versões dos objetos

Configuração Uso

O Cloud Storage oferece o recurso de controle de versões de objetos para recuperar objetos que são excluídos ou substituídos. Nesta página, você verá esse recurso e as opções disponíveis.

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.

  • Exclua permanentemente as versões de objetos incluindo o número de geração na solicitação de exclusão ou usando o gerenciamento do ciclo de vida de objetos.

  • 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

  • O controle de versões de objetos não pode ser ativado em um bucket que tenha política de retenção.

  • 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.

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

Neste exemplo, você verá o que acontece com o arquivo cat.jpg em um bucket com controle de versão de objeto ativado conforme 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 armazenadas no bucket até que sejam excluídas manualmente ou usando o Gerenciamento do ciclo de vida de objetos.

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.

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 Ação Resultado
Desativada
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.
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.
Ativada
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.
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.

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