Backup e Restauração de uma VPS da Contabo usando Google Drive, Dropbox etc

Este artigo partiu de uma necessidade recente que tive após pesquisar como mudar a região de uma VPS da Contabo.

Eu estava com a opção United Kingdom e queria migrar para European Union, por não ter custos:

  • European Union - No Location Fee
  • United States (Central) - $ 0.95 per month
  • United States (East) - $ 1.35 per month
  • United States (West) - $ 1.15 per month
  • Asia (Singapore) - $ 2.25 per month
  • Asia (Tokyo) - $ 2.25 per month
  • United Kingdom - $ 0.95 per month
  • Australia (Sydney) - $ 1.90 per month

Porém, a Contabo cobra uma taxa para fazer essa migração:

  • Live Migration No data on your server will be deleted or affected. This will lead to a downtime of up to 12 hours. An one-time service fee of $38.50 will be charged.
  • New Deployment All data of your current VPS will be deleted and a new instance will be created in a desired Region. This method is free of charge.

Ou seja, pra migrar sem apagar meus dados, teria que desembolar 38 dólares. E pra fazer a migração gratuita, a única opção seria fazer um novo deploy, mas aí perderia meus dados.

Até pensei em copiar as configurações da máquina (Ubuntu) e depois restaurar etc, mas procurei uma alternativa e encontrei a que tá disponível na fonte deste artigo.

Em resumo, vou detalhar como você pode obter uma imagem de disco de um VPS da Contabo e, via rclone, restaurá-la em outra VM completamente diferente. A imagem pode ser armazenada no Dropbox, Onedrive ou Google Drive, para citar apenas 3 dos mais de 30 provedores de armazenamento em nuvem.

Passo 1: salve o rclone na sua máquina (Windows, Linux etc)

Faça o download em https://rclone.org/downloads. No meu caso, salvei na unidade C: do Windows e depois adicionei o caminho no ambiente de variáveis, para poder executar pelo prompt de comando.

para mais detalhes, veja esta parte do vídeo: https://youtu.be/gPYZ2fqLNHU?si=cMXjWWKm7z5251SF&t=207

Passo 2: ativar o modo rescue system na Contabo

Nesta parte, você precisará definir uma senha para o usuário root, após a máquina reiniciar no modo de recuperação

trecho do vídeo de como ativar a opção rescue system: https://youtu.be/gPYZ2fqLNHU?si=ZUvWNBOLEjetyzVb&t=326

Passo 3: configurando o rclone

Após a máquina da Contabo reiniciar, acesse utilizando o software de emulação de terminal preferido e execute os comandos a seguir.

O comando abaixo atualiza a lista de pacotes disponíveis, baixa e executa um script de instalação do rclone, cria um diretório para montagem de armazenamento em nuvem e inicia o processo de configuração do rclone.

apt-get update && curl https://rclone.org/install.sh | sudo bash && mkdir /mnt/clouddir && rclone config

todos os detalhes da configuração você pode conferir a partir deste trecho do vídeo: https://youtu.be/gPYZ2fqLNHU?si=qklAe33_4N2srT-j&t=427

os comandos de configuração para diversos serviços você encontra no link https://rclone.org/

Passo 4: montando a diretório

O comando abaixo irá montar um diretório local (/mnt/clouddir/) como se fosse o conteúdo de um serviço de armazenamento em nuvem chamado "gdrive".

rclone mount gdrive: /mnt/clouddir/ --daemon 

Agora, vamos criar o diretório dentro de /mnt/clouddir e listar na tela:

mkdir -p /mnt/clouddir/rclone-disk-images && ls -la /mnt/clouddir/rclone-disk-images

trecho do vídeo: https://youtu.be/gPYZ2fqLNHU?si=PFO12fd-t1DEIHBW&t=711

Passo 5: criando e testando a imagem

Com os comandos a seguir, iremos criar a imagem e depois testar se tudo deu certo.

  • Criando a imagem do disco
    • sintaxe: dd if=/dev/sda status=progress| xz --compress -0 -T0 > {Disk-Image-File}
    • exemplo: dd if=/dev/sda status=progress| xz --compress -0 -T0 > /mnt/clouddir/rclone-disk-images/eur-50gb-w2022-nvme-176-57-189-176.xz

aprenda como utilizar o comando dd no Linux: https://linuxlivre.com/comando-dd-no-linux-aprenda-como-utilizar/

  • Testando a imagem do disco
    • sintaxe: xz --test -T0 --verbose {Disk-Image-File}
    • exemplo: xz --test -T0 --verbose /mnt/clouddir/rclone-disk-images/eur-50gb-zorin-nvme-176-57-189-176.xz

trecho do vídeo: https://youtu.be/gPYZ2fqLNHU?si=GFdeU4RwnrVb9Mm4&t=842

Passo 6: restaurando a imagem

Para restaurar uma imagem de disco, utilize o comando a seguir: (NOTA: TODOS OS DADOS ARMAZENADOS NO DISCO RÍGIDO SERÃO PERDIDOS!!)

  • sintaxe: xz --decompress --stdout -T0 {Disk-Image-File} | dd of=/dev/sda status=progress
  • exemplo: xz --decompress --stdout -T0 /mnt/clouddir/rclone-disk-images/eur-50gb-zorin-nvme-176-57-189-176.xz | dd of=/dev/sda status=progress

trecho do vídeo: https://youtu.be/gPYZ2fqLNHU?si=-eoMVBr3-M3KuWGv&t=1013

É isso! Espero que possa ajudar outros usuários.

Se vocês conhecerem outras formas, deixem nos comentários.

Eu já vi fazerem com rsync, mas não é tão seguro quanto criar uma imagem do disco. Nesse processo eu só substituiria o xz pelo zstd (Zstandard). Você vai ter arquivo um pouco maior, mas com uma velocidade de descompressão bem maior. O Archlinux substituiu xz por zstd, o Fedora também. zstd vem amplamente sendo usado. É o que uso por padrão para backups. Tem a opção do lz4 (Mesmo criador do zstd), mas é mais usado quando se leva em consideração a latência. Compressão do cache de uma aplicação, por exemplo. Na dúvida vai de zstd.

Vejam também https://www.tabnews.com.br/gpoleszuk/cve-2024-3094
Estou sabendo. Li artigos na internet logo que começou a repercurtir. Fui logo verificar se os servidores estavam vulneráveis e por enquanto nenhum está. É um ataque bem sofisticado. Lembrei também dessa questão de qual biblioteca de compressão usar.