OffshoreVps
Segurança8 out. 20268 min de leituraPor a equipe da OffshoreVps

Como fazer backup de um VPS com restic: automatizado e criptografado

A regra 3-2-1, o que incluir no backup, uma configuração criptografada do restic, um script cron e por que você precisa testar uma restauração. Os snapshots do provedor não bastam.

Um VPS pode falhar, ser apagado por engano ou ser quebrado por uma atualização ruim. A única proteção é um backup que você tenha testado. Este guia configura backups simples, automatizados e criptografados com ferramentas gratuitas.

Janela de terminal em um VPS mostrando os comandos usados para fazer backup de um VPS, começando com “sudo apt install -y restic”
O tipo de comandos que você executará no servidor neste guia.

A regra 3-2-1

Mantenha 3 cópias dos seus dados, em 2 tipos diferentes de armazenamento, com 1 cópia em outro lugar totalmente diferente. Para um VPS, isso normalmente significa os dados ativos, um snapshot local e uma cópia externa em outro provedor ou em outro país.

O que incluir no backup

  • Arquivos do site e uploads (/var/www).
  • Bancos de dados, primeiro exportados para um arquivo (nunca copie arquivos de banco de dados em uso).
  • Configuração: /etc/nginx, alterações em /etc, arquivos do Docker Compose e volumes.
  • Tarefas cron e quaisquer scripts personalizados.

Você pode reinstalar o sistema operacional em minutos. O que você não pode reinstalar são os seus dados e as suas configurações.

Use o restic para backups criptografados e deduplicados

sudo apt install -y restic
export RESTIC_REPOSITORY=sftp:backup@other-server:/backups/vps1
export RESTIC_PASSWORD_FILE=/root/.restic-pass
restic init

Crie o arquivo de senha com uma string longa e aleatória e guarde uma cópia em um lugar seguro. Se você perder essa senha, os backups não poderão ser abertos. O restic também suporta armazenamento compatível com S3, então você pode enviar para qualquer armazenamento de objetos.

Os passos deste guia em ordem: 1. A regra 3-2-1; 2. O que incluir no backup; 3. Use o restic para backups criptografados e deduplicados; 4. Um script de backup; 5. Teste uma restauração; 6. Snapshots ajudam, mas não bastam
Os passos deste guia, em ordem.

Um script de backup

#!/bin/bash
set -e
export RESTIC_REPOSITORY=sftp:backup@other-server:/backups/vps1
export RESTIC_PASSWORD_FILE=/root/.restic-pass

mysqldump --single-transaction --all-databases | gzip > /var/backups/db.sql.gz
restic backup /var/www /etc /var/backups/db.sql.gz
restic forget --keep-daily 7 --keep-weekly 4 --keep-monthly 6 --prune

Salve como /usr/local/bin/backup.sh, torne-o executável e agende-o:

sudo chmod +x /usr/local/bin/backup.sh
echo "30 3 * * * root /usr/local/bin/backup.sh >> /var/log/backup.log 2>&1" | sudo tee /etc/cron.d/backup

Teste uma restauração

restic snapshots
restic restore latest --target /tmp/restore-test --include /etc/nginx

Um backup que você nunca restaurou é apenas uma esperança. Teste uma vez por trimestre e sempre depois de mudar qualquer coisa.

Snapshots ajudam, mas não bastam

Os snapshots do provedor são rápidos e úteis antes de mudanças arriscadas, mas ficam no mesmo provedor e na mesma conta. Trate-os como uma conveniência e mantenha uma cópia externa independente.