Como lidar com clientes que não estão sempre conetados

Eu uso o rsnapshot principalmente para fazer backup de estações de trabalho pessoais, e não de servidores. Não há garantias de que essas máquinas estejam sempre conectadas à minha LAN (algumas delas são laptops, por exemplo). Se o rsnapshot tentar
rodar quando uma delas estiver desconectada, ele vai simplesmente falhar durante o processo e não será feito mais nenhum backup. Isso não é legal, e alguns backups diários não serão feitos (não apenas backups da máquina que está desconectada, mas também
das outras que vêm depois dela no /etc/rsnapshot.conf).

Para essas máquinas, eu uso o login SSH sem senha de ida e volta que eu configurei, combinado ao pacote anacron, para criar um sistema “sinalizador”. Em vez de fazer com que o servidor de backup tente fazer o backup dessas máquinas de acordo com seu
próprio agendamento, as máquinas rodam um script que permite a elas pedir um backup quando estiverem prontas. Os backups resultantes são coletados junto com os outros na rotação diária/semanal/mensal do backup.

Como configurar o servidor para clientes que não estão sempre conectados

Para cada cliente de conexão inconstante, vamos usar um arquivo de configuração /etc/rsnapshot_myclient.conf separado. Esses arquivos são basicamente apenas cópias do arquivo de configuração principal, com algumas pequenas modificações. Eis um exemplo
para um host chamado myclient:

config_version 1.2
snapshot_root /backup/auto/
cmd_cp /bin/cp
cmd_rm /bin/rm
cmd_rsync /usr/bin/rsync
cmd_ssh /usr/bin/ssh
cmd_logger /usr/bin/logger
cmd_du /usr/bin/du
interval daily 30
verbose 2
loglevel 3
logfile /var/log/rsnapshot
lockfile /var/run/rsnapshot.pid
one_fs 1
sync_first 1
backup root@myclient:/home/ myclient/
backup root@myclient:/etc/ myclient/

Observe que no caso de clientes com conexões inconstantes, a opção “sync_first” é obrigatória. Como a sincronização do backup será assíncrona ao processo de rotação, os dois têm que acontecer em etapas separadas. Obviamente, esse arquivo lida apenas
com backups desse cliente em especial. Todos os outros clientes têm seus próprios arquivos.

Como configurar um trabalho do anacron nos clientes que não estão sempre conectados

O pacote anacron foi criado tendo em mente a ideia de operar computadores de maneira intermitente. Ele costuma ser o escolhido para lidar com laptops ou desktops que não estejam sempre em execução. Em vez de ser invocado em intervalos rígidos e
regulares, ele é simplesmente invocado de acordo com um grupo de condições: um dado número de minutos após o computador ter sido ligado, desde que sua última execução tenha ocorrido há um tempo mínimo determinado. Mais uma vez, se você quiser saber mais
sobre o funcionamento do anacron, indico a você a man page.

A invocação do backup é executada a partir do computador cliente, usando sua tabela do anacron. Um comando será executado, e por sua vez ele fará uma chamada remota ao servidor de backup e executará o rsnapshot lá. Depois disso, o trabalho corre
basicamente como de costume em backups iniciados a partir do servidor.

Para isso, basta adicionarmos a seguinte linha ao /etc/anacrontab:

1 60 backup ssh root@myserver /usr/bin/rsnapshot -c /etc/rsnapshot_myclient.conf sync

Esse comando é executado no máximo uma vez por dia, e só depois que o computador já estiver ligado há mais de uma hora. O comando se chama backup, e o verdadeiro comando a ser executado é uma conexão SSH ao servidor, que executa remotamente o
rsnapshot, com uma opção dizendo a ele para que use o arquivo de configuração correto para o cliente, e o argumento sync.

O argumento sync do rsnapshot cuida apenas da etapa de sincronização dos dados. Ele não inicia rotações de backup. Isso ocorre porque nós só queremos que o script insira os dados do cliente no diretório correto (que, aliás, é /backup/auto/.sync neste
exemplo) junto com os outros backups diários.

O comando daily do rsnapshot (que move os dados de backup para o diretório de backup apropriado, /backup/auto/daily.0) será executado pelo trabalho do cron do servidor (o cliente não exige nenhuma configuração especial para que isso funcione, exceto
que o sync_first esteja definido como 1 em todas as configurações do rsnapshot que forem utilizadas).

Algumas pegadinhas nos backups de clientes que não estão sempre conectados

É bom apontar alguns detalhes sobre como o sistema intermitente vai funcionar na prática.

Em primeiro lugar, observe que nenhum backup será feito se as máquinas não estiverem ligadas por mais tempo do que o limite especificado em /etc/anacrontab (sessenta minutos, no exemplo acima). Isso é útil, porque significa que se você só ligar o
laptop para conferir alguma coisa rapidinho ele não vai se ver amarrado ao backup logo de tacada. Por outro lado, se você quiser que o backup aconteça, vai ter que deixar o sistema ligado de vez em quando, para que os scripts tenham chance de rodar.

Além disso, a não ser que o sistema seja deixado ligado todos os dias para o backup, você não vai obter backups realmente diários. Isso não costuma causar maiores danos, já que se o computador não for ligado os dados não serão alterados, e você não vai
perder nada.

Ainda assim, os backups diários do sistema vão aparecer no sistema de backup mesmo nos dias em que o sistema estava desligado ou desconectado. Esses backups serão apenas cópias (oriundas de hardlinks) do último backup diário verdadeiro. Com isso, os
carimbos de data/hora nos diretórios do backup podem ser incorretos. Mas ao olhar com atenção, você vai notar que as datas de modificação dos arquivos estão corretas.

Sobre o Autor

Redes Sociais:

Deixe seu comentário

X