Skip to content

Sistema Backup Automatizado no Linux Usando SCP e SSH

Olá galera tudo na paz?
Hoje vou mostrar a vocês como fazer um esquema de Backup diário para servidores de arquivos (Samba)…. Quando o propósito é fazer Backup Completos (não incrementais) “sempre” uso o SCP como ferramenta principal, até prq é uma ferramenta rápida e segura (Usa o protocolo ssh como base. Se o intuido é fazer um sistema de backup que não tenha intervensão do Usuário/Administrador essa é uma solução rápida e eficaz, nesse how-to faremos um sistema de backup de um servidor de arquivos para um servidor da própria rede( mas em local seguro e escondido, diga-se #cofre..kkkkkkk), ou seja, se a empresa pegar fogo amanhã e queimar todos os computadores eu tenho um Backup pronto pra ser usado, o ideal mesmo seria um sistema em Nuvem(Cloud) para tal, mas como no Brasil esse tipo de serviço ainda não é dos mais baratos e em questão de restauração seria MUITO demorado,
Vocês poderam ver que nosso modelo é bastante eficiente (Backup e Restauração + rápidos), além de ser de fácil implantação e após implementado não mais precisará da intervensão do usuário/administrador para realizar a
função Backup.
Vamos lá…. Mas Doooguinha como você usará SCP (scp) se o mesmo pede senha para acesso ao destino?
Meu nobre, “Chave de confiança SSH”, esse é o nome do dito…. tornará possível a conexão do SOurce (FOnte de onde saem os Backups) para o Destino sem que seja preciso colocar senha.

SCP (scp) significa Secure Copy e é um protocolo de funciona sobre o protocolo SSH.
Vamos lá, para criar uma “Chave de Confiança” siga os passos a seguir e não tem erro.
Primeiro utilize o seguinte comando para gerar uma chave privada

root@appunix:~#ssh-keygen -b 1024 -t rsa
Generating public/private rsa key pair.
Enter file in which to save the key (/root/.ssh/id_rsa):
Enter passphrase (empty for no passphrase):
Enter same passphrase again:
Your identification has been saved in /root/.ssh/id_rsa.
Your public key has been saved in /root/.ssh/id_rsa.pub.
The key fingerprint is:
14:39:2c:93:67:3d:c5:68:d8:fb:de:64:d9:64:11:b6 root@netserver2
The key’s randomart image is:
+–[ RSA 1024]—-+
|       o.= +.  o.|
|      + B.* . …|
|       =.o o   E.|
|       .  .     o|
|        S  .   = |
|            . + .|
|           . +   |
|            . .  |
|                 |
+—————–+

 

Nas perguntas feitas apenas dê enter para proceguir.

Explicando o comando acima, -b indica o tamanho em bits da chave e -t indica o tipo da chave, por padrão essa chave gerada é armazenada na home do usuário  ~/.ssh que é um diretório oculto (arquivos/diretórios começados por “ponto” ficam ocultos em sistemas GNU Linux) com os nomes id_rsa (private key) e id_rsa.pub (public key). Agora basta copiar a chave pública para o servidor remoto, e isso pode ser feito com o comando

root@appunix:~#cat ~/.ssh/id_rsa.pub | ssh -p 55655 root@192.168.2.6 ‘cat – >> ~/.ssh/authorized_keys’

em nosso caso usamos ssh -p 55655 pois é a porta utilizada por nosso servidor SSH, mas se o seu servidor atende pela porta padrão 22 basta remover o -p 55655 do comando.

Vejam a saida do comando

The authenticity of host ‘[192.168.2.6]:55655 ([192.168.2.6]:55655)’ can’t be established.
RSA key fingerprint is c6:f8:78:81:39:f8:17:10:f8:b3:a9:d3:c7:30:fd:8c.
Are you sure you want to continue connecting (yes/no)? yes
Warning: Permanently added ‘[192.168.2.6]:55655’ (RSA) to the list of known hosts.

Responda yes na pergunta Are you sure you want to continue connecting (yes/no)?
→Pronto agora que já possuimos a confiança entre esses servidores, lembrando que a confiança está do nosso servidor appunix para o servidor 192.168.2.6 caso queira fazer o contrário terá que refazer o processo do servidor destino para o que nomomento  é o servidor Fonte. Você pode testar sua chave de confiança pelo ssh:

root@appunix:~#ssh -l root 192.168.2.6 -p 55655

Só lembrando que em nosso caso foi trocado por medidas de segunrança, a porta do servidor de SSH. Sem digitar nenhuma senha agora, se tudo foi feito conforme descrito acima voce já estará logado no servidor destino (sem utilização de senha). Agora se quiser também pode usar o mesmo procedimento para fazer isso em um servidor na Web, o que vai mudar é que você terá de copiar o conteúdo do arquivo id_rsa.pub (public key) para o arquivo authorized_keys (arquivos onde ficam as chaves publicas autorizadas a acessarem sem uso de senha) do servidor destino, em nosso caso usamos o cat para concatenar o conteúdo do arquivo id_rsa.pub no arquivo authorized_keys…. faça como achar melhor…. pode ser através do Putty (se você usa Window$ ) ou mesmo terminal Mac, acesse o servidor fonte e com o cat abrir o arquivo id_rsa.pub e com o vim abrir o authorized_keys e colocar após sua ultima linha tal conteudo (do id_rsa.pub)… resolverá… é uma solução menos prática que a concatenação mas também funcionará.
Voltemos ao que interessa. Após ter certeza através de testes que consegui acessar o servidor destino sem utilização de senha podemos passar ao uso do SCP (scp)para a tarefa de backup.Para facilitar na hora de restaurar os Backups contumo criar servidores de Backups IDÊNTICOS aos servidores principais.( por experiência isso facilita MUITO nossa vida caso o servidor dê algum problema mais grave como morte da MB ou Processador), na verdade quando monto um servidor de Backps procuro deixar idêntico ao servidor principal(inclusive todos os .confs, o único diferencial como poderia ser diferente é a questão dos Ips, pois em casos como sitei, as perdas e o tempo de restauração em questão de problemas são minimizadas… Fica somente faltando cetar na placa de rede do servidor de Backup o IP que era usado no servidor principal, pois nas máquinas clientes tudo já está feito (Mapeamentos, Usuários, etc), isso levando em conta que seus servidores (Principal e de Backup possuem configurações idênticas).

Sintaxe do comando SCP (scp)

root@appunix:~#scp -r /diretório/fonte/* usuário@computador_destino:/diretório/destino/

Exemplo:

root@appunix:~#scp -r /mount/adm/* root@192.168.2.6:/mount/adm/

O que significa que tudo que está no diretório /mount/adm/ do servidor principal será copiado para o diretório /mount/adm/ do servidor de Backup ( 192.168.2.6 )
Para automatizar esse sistema de Backups para toda noite (por exemplo) iremos utilizar o crontab (vulgo agendador de tarefas)
Vamos editar o cron com o comando:

root@appunix:~#crontab -e

Obs: Se for a primeira vez que utiliza o cron para agendar alguma rotina/tarefa verá isso no cabealho do arquivo

# m h  dom mon dow   command

onde você pode usar da maneira que achar melhor, em nosso caso vou ensinar a fazer Backups completos durante as noites/madrugadas usando SCP (scp)
Primeira coisa que faço antes de cada Backup é excluir excluir os dados do dia anterior (não é uma boa prática mas nunca tive problemas com isso, a não ser que sua empresa/casa pegue fogo entre o horário de exclusão e backup você não terá nenhum problema

00 21 * * * scp -r /mount/adm/* root@192.168.2.242:/mount/adm/

 

#essa linha diz que tudo que está no diretório /mount/adm/ do servidor appunix será copiado para o direttório /mount/adm/ do servidor de Backups todos os dias, meses e anos às 21:00

No servidor de Destino também utilizando o cron, faça o processo de exclusão do backup do dia anterior da seguinte forma

50 20 * * * rm -rf /mount/adm/*

# essa linha diz que todos os dias de todos os meses de todos os anos às 20:50 da noite tudo que está no diretório /mount/adm/será excluido para dar lugar ao novo Backup que começas às 21:00

Salve o arquivo (isso vai depender do seu editor, no VI ou VIM uso :wq!). Pronto, agora você tem um servidor de Backup Rápido e Eficiente, e que não precisa de nenhuma intervensão do usuário/Administrador da rede.
Espero ter ajudado.
Abraço a todos.:D

2 Comments

  1. eu gostaria de saber se tem como arrumar esse CÓDIGO para ele fazer backup de computadores da minha rede com windows????

  2. Obrigado pela visita Petros, Amigo no seu caso deverá usar algum software de backup(é mais indicado)… lhe indico o software Cobian backup… é um dos melhores da categoria no mundo windows… Abraço

Leave a Reply

Your email address will not be published. Required fields are marked *

This site uses Akismet to reduce spam. Learn how your comment data is processed.