Nesta postagem, mostramos como usar o controle de
versão de um objeto no Cloud Storage do Google Cloud. |
O que é Cloud Storage?
Fornece, a nível mundial, um
armazenamento de objetos altamente durável que escalona para exabytes de dados.
É possível acessar dados instantaneamente de qualquer classe de armazenamento,
integrar o armazenamento aos seus aplicativos com uma API exclusiva unificada e
otimizar o preço e desempenho de forma fácil.
O que é e por que usar o controle de
versão no Cloud Storage?
Controle de versões
de objetos é um recurso do Cloud Storage que permite o “versionamento” de itens
dentro de um bucket.
Ao utilizar esse
recurso evitamos grandes dores de cabeça se um arquivo for excluído ou
substituído por acidente.
No momento só é
possível recuperar arquivos de um bucket ativo, ou seja, não é possível
recuperar objetos de um bucket excluído, mesmo que nele tivesse o controle de
versões de objetos ativado.
Ao subir um objeto
que já exista no Cloud Storage, uma versão não atual é criada, assim
o último upload vira a versão ativa.
Para identificar a
versão de um objeto são utilizadas duas propriedades:
·
generation:
É o número identificador
da criação de conteúdo do nosso objeto. É atualizado quando ocorre uma
atualização no conteúdo desse objeto.
·
metageneration:
Esta propriedade é usada em conjunto com a anterior, ela identifica a geração dos metadados do objeto e aumenta sempre que os metadados são atualizados.
Passo a Passo - Linha de comando
1. O primeiro passo a fazer é o login
em sua conta do GCP, para este tutorial você vai precisar de uma conta que
possua um projeto.
2. Vá até a barra superior e clique no ícone do Cloud Shell, igual a imagem abaixo.
3. Selecione o projeto a ser utilizado.
gcloud config set project [SEU_PROJECT_ID]
4. Crie um novo bucket com o nome de
teste_versionamento_[seu_project_id] na região de sua preferência.
gsutil mb -l [regiao] gs://teste_versionamento_[SEU_PROJECT_ID]
5. Habilite o versionamento no bucket,
após executar o comando o Cloud Storage vai armazenar as versões antigas de um
objeto sempre que houver um novo upload.
gsutil versioning set on gs://teste_versionamento_[SEU_PROJECT_ID]
Observação: As vezes pode demorar um pouco para essa opção ser ativada,
geralmente demora 30 segundos.
6. Verifique se o versionamento foi
ativado:
gsutil versioning get gs://teste_versionamento_[SEU_PROJECT_ID]
7. Crie um arquivo chamado teste.txt em seu
bloco de notas, preencha o arquivo conforme abaixo:
“Este é primeiro upload deste arquivo.”
8. Dentro do Cloud Shell, faça o upload do seu
arquivo.
9. Copie seu arquivo para seu bucket.
gsutil cp teste.txt gs://teste_versionamento_[SEU_PROJECT_ID]
10. Verifique seu arquivo no bucket.
gsutil ls -a gs://teste_versionamento_[SEU_PROJECT_ID]
Observação: O retorno deverá ser neste formato:
gs://[BUCKET]/[OBJETO]#[GENERATION]
Exemplo: gs://teste_versionamento_virtual-dog-26262/teste.txt#1596052922150974
11. Faça alguma alteração no arquivo e siga os
passos 8,9 e 10 novamente para fazer upload, após a listagem vai ter duas
versões do arquivo, conforme exemplo abaixo:
gs:// teste_versionamento_virtual-dog-26262/teste.txt#1596052922150974
gs:// teste_versionamento_virtual-dog-26262/teste.txt#1596113673793136
12. Mesmo após gerar uma nova versão é possível
ler o conteúdo de uma antiga, basta colocar o número de geração após o nome do
objeto, usarei o comando cat como exemplo:
gsutil cat gs://teste_versionamento_[SEU_PROJECT_ID]/teste.txt#[GENERATION]
Observações:
Para copiar este objeto para outro bucket use o
comando conforme sintaxe abaixo:
gsutil cp gs://teste_versionamento_[SEU_PROJECT_ID]/teste.txt#[GENERATION]
gs://[BUCKET_DESTINO]/[NOME_DO_OBJETO_NO_DESTINO]
Para remover uma versão específica de um objeto
use o comando conforme sintaxe abaixo:
gsutil rm gs://teste_versionamento_[SEU_PROJECT_ID]/teste.txt#[GENERATION]
13. Para desativar o versionamento do Bucket utilize
o comando abaixo:
gsutil versioning set off gs://teste_versionamento_[SEU_PROJECT_ID]
Referências
· Object Versioning
https://cloud.google.com/storage/docs/object-versioning
· Using Object Versioning
https://cloud.google.com/storage/docs/using-object-versioning