−25%

no Windows com pagamento anual, até 31/10. Ver planos

EQVPS

Como fazer backup de um VPS com restic (criptografado, externo)

Backups de VPS criptografados e deduplicados com restic: repositório em storage compatível com S3 ou outro servidor, timer systemd, retenção e teste de restauração.

Todo mundo tem backup até tentar restaurar um. A pasta está vazia, o cron morreu em março, ou o arquivo está no mesmo disco que acabou de falhar. O restic resolve quase tudo isso: criptografa do seu lado, guarda cada dado uma vez só e torna a restauração de um único arquivo tão fácil quanto o backup do servidor inteiro.

Aqui está uma configuração em que confiaríamos de verdade, no Ubuntu ou Debian.

1. Instale o restic

apt update && apt install -y restic
restic self-update

Os pacotes da distribuição ficam para trás; o self-update baixa a versão atual.

2. Escolha onde fica o repositório

O repositório não pode ficar no servidor que você está protegendo. Duas escolhas comuns:

3. Guarde as credenciais

Mantenha tudo num único arquivo que só o root lê, para o timer e o seu shell usarem as mesmas configurações:

cat > /root/.restic-env <<'EOF'
export RESTIC_REPOSITORY="s3:https://s3.example.com/my-bucket/web1"
export RESTIC_PASSWORD_FILE="/root/.restic-pass"
export AWS_ACCESS_KEY_ID="your-key-id"
export AWS_SECRET_ACCESS_KEY="your-secret"
EOF
openssl rand -base64 32 > /root/.restic-pass
chmod 600 /root/.restic-env /root/.restic-pass

Agora copie o conteúdo de /root/.restic-pass para o seu gerenciador de senhas. Sem ele, os backups não podem ser descriptografados — nem por você, nem por ninguém.

4. Inicialize e rode o primeiro backup

source /root/.restic-env
restic init
restic backup /etc /home /root /srv /var/www \
  --exclude-caches --exclude '/root/.cache'
restic snapshots

Ajuste os caminhos para onde seus dados realmente estão. Volumes Docker ficam em /var/lib/docker/volumes; dados de aplicação costumam estar em /srv ou /opt.

5. Bancos de dados: dump primeiro, backup depois

Não faça backup dos arquivos brutos de um banco em execução. Faça o dump logo antes do backup:

mkdir -p /var/backups/db
sudo -u postgres pg_dump -Fc mydb > /var/backups/db/mydb.dump

Adicione /var/backups/db aos caminhos do backup. Nosso guia de PostgreSQL fala mais sobre dumps.

6. Agende com systemd

Aqui um timer é melhor que o cron: registra no journal e recupera a execução se o servidor estava desligado na hora marcada.

# /etc/systemd/system/restic-backup.service
[Unit]
Description=restic backup

[Service]
Type=oneshot
ExecStart=/bin/bash -c 'source /root/.restic-env && restic backup /etc /home /root /srv /var/www /var/backups/db --exclude-caches && restic forget --keep-daily 7 --keep-weekly 4 --keep-monthly 6 --prune'
# /etc/systemd/system/restic-backup.timer
[Unit]
Description=Daily restic backup

[Timer]
OnCalendar=*-*-* 03:30:00
Persistent=true

[Install]
WantedBy=timers.target
systemctl daemon-reload
systemctl enable --now restic-backup.timer
systemctl list-timers restic-backup.timer

forget --prune mantém 7 snapshots diários, 4 semanais e 6 mensais e apaga o resto. Se você tem uma etapa de dump do banco, coloque-a numa linha ExecStartPre=.

7. Restaure alguma coisa de verdade

É este passo que transforma "temos backup" em fato. Traga um diretório de volta para uma pasta temporária e olhe:

source /root/.restic-env
restic restore latest --target /tmp/restore-test --include /etc/nginx
ls -la /tmp/restore-test/etc/nginx
restic check

Faça isso uma vez agora e de novo a cada poucos meses. restic check verifica a estrutura do repositório; a restauração prova que os dados estão mesmo lá.

restic e Managed Backups

Eles não competem. Os Managed Backups criam todo dia um ponto de restauração do servidor inteiro, que você restaura pelo painel — a solução rápida depois de uma atualização que deu errado. Custam $2 por mês e vêm grátis em qualquer plano anual. O restic dá cópias por arquivo, externas, num storage que você controla, o que importa quando o problema é um arquivo apagado na terça passada ou quando você quer uma cópia totalmente fora da nossa infraestrutura.

Se você guarda dados sensíveis, combine isso com criptografia de disco completo, ou veja o caso de uso de armazenamento criptografado para ter seu próprio destino de backup. Um plano Micro basta para a maioria dos servidores pequenos e seus backups.

Perguntas frequentes

O que acontece se eu perder a senha do restic?

Os backups se perdem para sempre. O restic criptografa tudo no cliente e não existe chave de recuperação. Guarde a senha num gerenciador de senhas, não só no servidor de que você faz backup.

Onde o repositório deve ficar?

Em qualquer lugar menos no próprio servidor: storage de objetos compatível com S3, outro VPS via SFTP ou uma máquina em casa. Um backup no mesmo disco morre junto com ele.

Como faço backup de um banco de dados com restic?

Faça o dump primeiro e guarde o dump — no PostgreSQL 'pg_dump -Fc', no MySQL 'mysqldump --single-transaction'. Copiar os arquivos de um banco em execução pode gerar um backup que não sobe.

Quanto espaço os backups ocupam?

Menos do que você imagina. O restic divide os arquivos em blocos e guarda cada bloco uma vez só, então snapshots diários de um servidor que muda pouco somam apenas os dados alterados.

Ainda preciso dos Managed Backups?

Eles resolvem problemas diferentes. Os Managed Backups dão pontos de restauração diários do servidor inteiro, que você restaura pelo painel. O restic dá cópias por arquivo, externas e sob seu controle. Muita gente usa os dois.

Comentários

Nenhum comentário ainda. Seja o primeiro.

Deixe um comentário

Os comentários são moderados antes de aparecerem.