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