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, quando você exclui um objeto não atual, o Cloud Storage altera o estado dele para esse tipo de exclusão. 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:
Se você quiser 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 oferece proteção no nível do bucket ao manter todos os objetos ativos ou não atuais excluídos recentemente. 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 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 upload
cat.jpg
para o Cloud Storage pela primeira vez, ele recebe um número degeneration
e ummetageneration
número de . Neste exemplo, o número de geração é1360887697105000
. Como o objeto é novo, o númerometageneration
é1
.cat.jpg
recebe númerosgeneration
emetageneration
, 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
oumetageneration
decat.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 valormetageneration
decat.jpg
aumente, neste caso, de1
a2
. No entanto, o objeto permanece inalterado, de modo que o Cloud Storage continua armazenando apenas uma versão decat.jpg
, e a versão continua a ter um númerogeneration
de1360887697105000
.- 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 objetocat.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 imagemcat.jpg
recebe seu próprio número degeneration
, que neste exemplo é1360887759327000
. Ela também recebe seus próprios metadados e um númerometageneration
de1
, o que significa que ele não contém os metadadoscolor:black
, a não ser que você especifique. Quando você for acessar ou modificar a imagemcat.jpg,
, é esta versão que será usada. Outra opção é consultar essa versão dacat.jpg
usando o númerogeneration
. Por exemplo, ao usar a Google Cloud CLI, você se referirá a ela comocat.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ção1360887759327000
se tornará não atual. Agora, o bucket contém duas versões não atuais decat.jpg
e nenhuma versão ativa. Ainda é possível consultar qualquer versão não atual usando o número degeneration
. No entanto, se tentar acessarcat.jpg
sem um número degeneration
, 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
ecat.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
- Saiba como ativar o controle de versão de objetos.
- Trabalhar com objetos não atuais.
- Saiba mais sobre as propriedades de objeto geração e metageneração.
- Saiba mais sobre o Gerenciamento do ciclo de vida de objetos, que permite gerenciar automaticamente as versões dos objetos.
- Veja um exemplo de Gerenciamento do ciclo de vida de objetos que funciona com o controle de versões de objetos.