OffshoreVps
Segurança25 set. 20266 min de leituraPor a equipe da OffshoreVps

Backup de um VPS com Restic ou Borg

Backups criptografados e deduplicados em um segundo servidor: comandos do restic e do borg, dumps de banco de dados, retenção, agendamento e teste de restauração.

Um backup que você consegue restaurar é a diferença entre uma tarde chata e a perda de um projeto. O guia básico de backup de VPS explica a ideia. Este vai além com o restic e o BorgBackup: duas ferramentas que fazem backups criptografados e deduplicados em um segundo servidor ou em armazenamento de objetos.

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

Por que restic ou borg em vez de cópias simples

  • Deduplicação. Só os dados alterados são armazenados, então os snapshots diários ficam pequenos.
  • Criptografia. Os dados são criptografados antes de saírem do seu servidor.
  • Snapshots. Você pode restaurar o estado de qualquer dia passado.
  • Verificação. As duas ferramentas podem verificar a integridade do repositório.

Escolha uma. O restic é simples e funciona com vários tipos de armazenamento, incluindo SFTP e armazenamento compatível com S3. O borg é muito eficiente e funciona por SSH com um servidor que tenha o borg instalado.

Para onde enviar os backups

Nunca guarde o único backup no mesmo servidor. Use um segundo VPS em outro local, um bucket compatível com S3 ou uma storage box. Um VPS pequeno com um disco grande é um destino de backup barato. Veja os planos de VPS.

Restic: configuração

sudo apt install -y restic
export RESTIC_REPOSITORY="sftp:backup@backup.example.com:/srv/restic/myserver"
export RESTIC_PASSWORD_FILE=/root/.restic-pass
restic init

Crie o arquivo de senha com uma senha longa e aleatória e guarde uma cópia offline. Sem essa senha, não é possível restaurar os backups.

restic backup /etc /home /var/www --exclude-caches
restic snapshots
restic forget --keep-daily 7 --keep-weekly 4 --keep-monthly 6 --prune
restic check
Os passos deste guia em ordem: 1. Por que restic ou borg em vez de cópias simples; 2. Para onde enviar os backups; 3. Restic: configuração; 4. Bancos de dados exigem cuidado; 5. Agende; 6. Teste uma restauração
Os passos deste guia, em ordem.

Borg: configuração

sudo apt install -y borgbackup
export BORG_REPO="ssh://backup@backup.example.com/srv/borg/myserver"
borg init --encryption=repokey-blake2
borg create --stats --compression zstd ::'{hostname}-{now:%Y-%m-%d}' /etc /home /var/www
borg prune --keep-daily 7 --keep-weekly 4 --keep-monthly 6
borg check

Exporte e guarde a chave do repositório com borg key export.

Bancos de dados exigem cuidado

Não copie arquivos de banco de dados em uso. Faça o dump primeiro e faça backup do dump:

mysqldump --single-transaction --all-databases | gzip > /var/backups/db.sql.gz
sudo -u postgres pg_dumpall | gzip > /var/backups/pg.sql.gz

Agende

Execute o backup a partir de um timer do systemd ou do cron. Uma linha simples de cron:

15 3 * * * root /usr/local/bin/backup.sh >> /var/log/backup.log 2>&1

Receba um alerta em caso de falha, por exemplo com um ping de monitoramento no fim do script.

Teste uma restauração

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

Teste uma restauração de verdade em uma máquina reserva de vez em quando. Um backup que você nunca testou é apenas uma esperança.