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
- sintaxe:
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
- sintaxe:
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.