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 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 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
- 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 versões de objetos automaticamente.
- Veja um exemplo de Gerenciamento do ciclo de vida de objetos que funciona com o controle de versões de objetos.