Precisei montar um servidor de backup para um servidor que não pode perder os dados e não pode ficar off line! A idéia é que o servidor de produção envie apenas os arquivos alterados de tempos em tempos, no meu caso eu configurei para enviar de hora em hora os arquivos que sofreram alteração, contrab. O backup diário é bom, mas no caso de uma empresa que inseri 500 notas fiscais por dia e só faz backup de madrugada, o servidor pode quebrar 10 minutos antes do iniciar o backup, então esse trabalho de inserir 500 NF vai para o lixo. Se feito de hora em hora pode ter perdas se quebrar, mas com certeza será menor.
Servidor A = servidor produção vai enviar os arquivos, 192.168.0.10
Servidor B = servidor Backup, recebe o backup, 192.168.0.20
Serviço necessário no servidor B: SSH
Vamos lá!
Servidor B, recomendo criar um usuário apenas para o backup.
Criar usario que ira receber o backup, coloque uma senha.
$ adduser --home /home/bkpremote --shell /bin/bash bkpremote
ssh localhost para configuar ambiente do novo usuário.
$ ssh bkpremote@192.168.0.10
$ mkdir ~/.ssh
$ chmod 700 ~/.ssh
Servidor A, Esse usuário tem que ter permissão para ler os arquivos que quer fazer backup, talvez usuário root.
Vamos para o home
$ cd
Se a chave não existe, vamos criar, tecle enter até o fim
$ ssh-keygen -t rsa -C "your_email@example.com"
Enviar a chave para servidor B, backup.
$ scp ~/.ssh/id_rsa.pub bkpremote@192.168.0.20:~/.ssh/.
Servidor B:
$ ssh bkpremote@192.168.0.10
Adicionar chave confiável.
$ cd .ssh
Se essa é a primeira chave confiável então:
$ mv id_rsa.pub authorized_keys
# se já existe então:
$ cat id_rsa.pub >> authorized_keys
Para testar, faça um conexão do servidor A para B, não é para pedir senha!
$ ssh bkpremote@192.168.0.10
Agora que temos a conexão pronta, vamos para o rsync.
Aqui estamos enviando o /home do servidor A (produção) para a raiz do conta bkpremote servidor B (backup)
$ rsync -avz -progress -partial -e "ssh -p 22" /home bkpremote@192.168.0.20:~/.
Para os noiado em segurança, você pode colocar mais umas coisas:
IP de origem da conexão ssh antes da chave no arquivo autorezed_keys, ex:
$ vim autorized_keys
from="192.168.0.10" ssh-rsa AAAAB3NzaC.....
Importante o uso do aspas duplas, abre e fecha!
Problemas encontrados:
Se o home do usuario não for /home/USER pede senha! Aparentemente não funciona se não for esse caminho mesmo usando . ssh/authorized_keys com a chave pública, testado em Debian Squeeze.
Se o acesso ssh deve ser restrito a um cliente/backup, você pode restringir que ele adicione outras chaves, basta mudar as permissões do .ssh e autorized_key.
No meu caso o cliente não pode mexer nesse arquivo, então:
$ chown root.root /home/USER/.ssh -R
$ chmod 755 /home/USER/.ssh -R
Faça bom uso!
Mantenha o autor em caso de publicação!