No artigo anterior, comentei o que uma solução de backup deveria ter. Passei pela solução que usava anteriormente (crashplan) e uma brevíssima introdução aos recursos do borg. Neste artigo, vamos configurar o repositório.
O esquema ficou desta forma:
O computador roda o borg e copia os arquivos (amarelo) para um repositório no roteador. Esse repositório é acessado por CIFS e aponta para um HD Externo conectado na USB. Em um segundo momento, um rsync sincroniza esse repositório com um destino remoto utilizando o rsync. O destino remoto também é um roteador com um HD Externo conectado, mas poderia ser qualquer destino com suporte a rsync. A comunicação do rsync é feita dentro de uma VPN, que interliga o roteador de origem e destino do repositório. Muito complicado? Nem tanto. Como diria Jack, "vamos por partes...".
Neste artigo vou abordar apenas a flecha vermelha. No próximo trato da verde.
Instalação
O primeiro passo para usar o borg é a instalação. A versão do repositório do ubuntu 17.10 é suficiente:
pc# apt install borgbackup
Ou baixe diretamente do projeto. Eu prefiro a segunda opção. Este é um arquivo "autosuficiente", só baixar, dar permissão de execução e usar.
Repositório
O destino do repositório será no roteador. Como não vou rodar o borg lá, terei que acessar o disco do roteador por um sistemas de arquivos em rede. Optei pelo CIFS (samba). No lado do cliente, eu gosto de usar o autofs:
pc# apt install autofs cifs-utils
Eu gosto de configurar o /cifs, que monta sob demanda compartilhamentos CIFS:
/etc/auto.master:
/cifs /etc/auto.smb --timeout=300
E dispare o serviço
pc# systemctl enable autofs
pc# systemctl start autofs
Seu roteador estará acessível em /cifs/router/<compartilhamento>/
Iniciando o repositório
Para criar um novo repositório, é só rodar:
pc# borg init /cifs/router/<compartilhamento>/borg
Os repositórios borg podem ser protegidos por uma chave. Para uso interativo, isso não é problema. Contudo, se o objetivo é fazer backup agendado, não será a melhor opção. O borg permite informar uma chave por variável ambiente. Crie um arquivo de senhas ou gere um aleatoriamente.
pc# mkdir -p /etc/borg
pc# openssl rand -base64 32 > /etc/borg/borg.key
pc# chmod 400 /etc/borg/borg.key
Eu pessoalmente prefiro senhas boas mas que possam ser decoradas. Mas gosto é gosto.
Você agora pode passar essa senha chamando o borg desta maneira:
pc# BORG_PASSCOMMAND="$(cat /etc/borg/borg.key)" borg ...
Ou também pode usar diretamente o BORG_PASSPHRASE com o conteúdo da senha:
pc# BORG_PASSPHRASE="naoconteparaninguem" borg ...
Fazendo backups
O backup é feito com uma chamada simples do borg. Um exemplo já passando a senha seria:
pc# BORG_PASSPHRASE="naoconteparaninguem" borg create /cifs/router/<compartilhamento>/borg /meu/dir1 /meudir2 ...
Não vou me estender nas diversas opções disponíveis. Porém, é indicado colocar isso em um script para facilitar a chamada.
Os backups no borg são rápidos e econômicos. Ele só copia as diferenças e faz isso de forma bem eficiente. Normalmente uma chamada de backup sem alteração é executada em menos de 30 segundos. Ele tem um cache local dos índices e um novo backup sem muitas alterações gera pouca carga sobre o repositório. Já que é tão barato, resolvi fazer uma vez por hora. A chamada do "borg create" foi colocada em um script em /etc/cron.hourly/meubackup. Quem quiser, alternativamente, pode editar a cron diretamente com 'crontab -e'.
Pronto! Temos uma rotina de backup!
Limpando o repositório
OK, tudo lindo e maravilhoso... mas vai ficar fazendo backup toda hora (literalmente) e nunca apagar nada? Bem, um novo backup sem alteração é bem econômico e fazer muitos deles realmente não é algo significativo. Porém, as diversas versões de arquivos alterados e apagados, e mesmo os metadados, eventualmente encheriam o disco. E, em alguns casos, eliminar permanentemente alguns dados pode ser salutar, em especial quando iniciar um novo relacionamento.
Para apagar, o borg pode executar o prune baseado em critérios como "mantenha todos os últimos backups desta semana, um backup por dia nos últimos 10 dias com backup, 6 backups semanais...". Eu, por exemplo, estou usando:
pc# BORG_PASSPHRASE="naoconteparaninguem" borg prune --keep-within 1d --keep-hourly 20 --keep-daily 30 --keep-weekly 53 --keep-yearly 20 /cifs/router/<compartilhamento>/borg
Pode parecer estranho pedir para manter todos os backups das últimas 24 horas, mas somente um backup por hora nas últimas 20 horas. Bem, como o computador nem sempre está ligado, os 20 backups horários podem ser mais antigos do que "todos os backups das últimas 24 horas". Tudo isso depende de cada caso.
Como esta operação pode demorar mais tempo do que um backup normal, eu rodo semanalmente. Contudo, fica a gosto do cliente.
No próximo artigo, a parte de sincronia remota do repositório. Se pintar uma dúvida, tem sempre o fórum deste blog.
Até a próxima!
Nenhum comentário:
Postar um comentário