Acesso direto ao conteúdo
Logotipo Dicas-L, por Ricardo Burile

Busca

Visite também: Segurança Linux ·  UnderLinux ·  VivaOLinux ·  LinuxSecurity ·  NoticiasLinux ·  BR-Linux ·  SoftwareLivre.org ·  [mais]   
 

Você está aqui: Home  → Arquivo Dicas-L

 

Curso de Inglês Online

Assine a Lista Dicas-L

Receba diariamente por email as dicas
de informática publicadas neste site
Para se descadastrar, clique aqui.

Sistema simples de Backup via Scp(secure copy)

Colaboração: Aldemari Borges

Data de Publicação: 02 de Julho de 2009

Esta proposta visa criar um sistema de backup baseado em Shell Script, além dos comandos nativos do Linux.

Objetivos desta solução

  • ser simples de configurar
  • utilizar o protocolo scp(cópia remota criptografada)
  • utilizar o empacotador TAR e o compressor GZIP
  • haver mascaramento da data e hora que o backup foi gerado no arquivo gerado(.tar.gz)
  • Os Backups serão gerados em disco rígido inicialmente, mas podem ser gravados em outra mídia

Objetivos futuros(help)

  • enviar relatório de erros e acertos de backup's via email
  • haver alguma interface web(php, python, ruby ou perl) que faça a interação de definições das variáveis
  • Haver interface web(php, python, ruby ou perl) que gere relatórios dos arquivos gerados de acertos e erros
  • Haver algum recurso de reconhecimento de não crescimento de tamanho de determinado arquivo de backup
  • Enviar email quando o servidor de backup atingir 90% de utilização de seu espaço em disco
  • Haver possibilidade de gravação em Fitas DAT

ARQUITETURA

  • Cada cliente deverá possuir o shell script que deverá rodar agendado via cron
  • Cada cliente será encarregado de enviar o arquivo 'backupeado' para o serividor principal(repositório)
  • O servidor deverá adicionar em sua lista de autorização de chaves públicas, cada servidor cliente

Vamos ao passos:

1. Criação do usuário que fará a tarefa dos backups:

No servidor cliente(aquele que enviará seu próprio backup para o repositório remoto):

  root@clienthost:~# adduser backscp

Obs: Colocar senha bastante difícil, já que este usuário existirá em todas as máquinas.

Obs: Há a possibilidade de restringir o acesso via ssh por hosts e users(ver manual do openssh server)

2. Criação das chaves assimétricas:

Afim de criarmos uma solução independente das chaves do host criadas em /etc/ssh, iremos criar uma chave específica para o usuário em questão.

Estas chaves se localizarão no ~.ssh (diretório local do usuário backscp, na pasta oculta .ssh).

Digite o comando abaixo:

  backscp@clienthost:~$ ssh-keygen

Tecle 'Enter' até a finalização do processo de criação como abaixo:

  Generating public/private rsa key pair.
  Enter file in which to save the key (/home/backscp/.ssh/id_rsa):
  Created directory '/home/backscp/.ssh'.
  Enter passphrase (empty for no passphrase):
  Enter same passphrase again:
  Your identification has been saved in /home/backscp/.ssh/id_rsa.
  Your public key has been saved in /home/backscp/.ssh/id_rsa.pub.
  The key fingerprint is:
  fc:d5:81:59:96:cb:a7:e7:81:19:93:39:30:41:01:b3 backscp@borges
  The key's randomart image is:
  +--[ RSA 2048]----+
  |         oo+o o. |
  |          oo =.  |
  |         E  =.+. |
  |       .     Bo..|
  |        S   . Bo |
  |         . . o...|
  |          .    o.|
  |                .|
  |                 |
  +-----------------+

O comando acima gerou uma chave criptográfica de 2048 bits, utilizando o algoritmo RSA.

Temos então:

  • Chave privada(nesta não se mexe): ~.ssh/id_rsa
  • Chave pública: ~.ssh/id_rsa.pub

3. Enviar a chave pública para o servidor que será o repositório

  backscp@clienthost:~$ scp  .ssh/id_rsa.pub backscp@repositoriohost:~

No servidor remoto(REPOSITÓRIO):

com o usuário backscp (como sugestão apenas):

  backscp@repositoriohost:~$ mkdir ~.ssh
  backscp@repositoriohost:~$ cat id_rsa.pub »» .ssh/authorized_keys

PRONTO!!! Estabelecemos a relação de confiança entre as máquinas via ssh

Para testar:

No servidor remoto(repositoriohost) apague o ~/id_rsa.pub

No servidor cliente(clienthost) re-envie o arquivo do id_rsa.pub:

  scp .ssh/id_rsa.pub backscp@repositoriohost:~

Não deverá ser solicitada a senha, o arquivo deverá ser copiado de forma transparente.

OBSERVAÇÃO

Para cada clienthost (máquina que pretende-se backapear), deverá ser adicionado ao arquivo autorized_keys do servidor repositório (cat id_rsa.pub >> .ssh/authorized_keys)

Vantagens até o momento:

Poderíamos fazer mapeamentos NFS ou CIFS, no entanto, haveria sempre sessões abertas no cliente/servidor. O que de certa forma, para redes maiores, poderá afetar em alguns milisegundos. Com a solução de envio via scp (secure copy), apenas será aberta a sessão durante a sua real utilização.

Há a outra vantagem em relação a segurança, pois os dados trafegam criptografados.

Continuando.....

Criemos estes diretórios conforme abaixo em todas as máquinas clientes:

  root@clienthost:~# mkdir -p /backup/log
  root@clienthost:~# chown -R backscp /backup

Abaixo o shell script sugerido para fazer as cópias de segurança nos servidores clientes:

  #!/bin/sh
  # Script para realização de backup's completos
  # Por Aldemari Borges(aldemari@gmail.com»
  
  export PATH=$PATH:/bin:/usr/bin:/usr/local/bin
  
  # Definicao de data e horario
  DATA=`date +%a%d%m%y`
  HORA=`date +%Hh%Mm%Ss`
  
  # Máscara para o arquivo a ser gerado
  NOMESERVIDOR=portal
  
  # Diretório ou arquivo para ser 'backapeado'
  BACKORIGEM=/home/backscp/examples.desktop
  
  # Local remoto aonde os arquivos serão enviados(Lembre-se de criar o diretório de destino)
  BACKDESTINO=/home/backscp/$NOMESERVIDOR
  
  # Criação do pacote
  tar -zcf $NOMESERVIDOR.tar.gz $BACKORIGEM
  date » /home/backscp/log/$NOMESERVIDOR\-$DATA\-$HORA.log
  
  # Esta linha abaixo evita erros de manipulacao de horario no momento do backup
  mv $NOMESERVIDOR.tar.gz $NOMESERVIDOR\-$DATA\-$HORA.tar.gz
  
  # Copiando para o repositorio remoto
  scp $NOMESERVIDOR\-$DATA\-$HORA.tar.gz backscp@10.90.1.33:$BACKDESTINO
  
  # Remover arquivo local
  rm $NOMESERVIDOR\-$DATA\-$HORA.tar.gz

4. Visualizando os arquivos pela WEB

Para tanto, sugerimos a utilização do QuiXplorer:

4.1. Procedimentos:

  backscp@repositoriohost:~# apt-get install apache2-php5
  backscp@repositoriohost:~# cd /var/www
  
  backscp@repositoriohost:~# wget http://ufpr.dl.sourceforge.net/sourceforge/quixplorer/quixplorer_2_3_1.tar.bz2
  backscp@repositoriohost:~# tar -zxvf  tar -jxvf quixplorer_2_3_1.tar.bz2
  backscp@repositoriohost:~# mv quixplorer_2_3_1 phpexplorer

4.2. Configuração do quiXplorer

Vamos criar um virtual host no apache para facilitar sua visualização:

  backscp@repositoriohost:~# cd /etc/apache2/sites-available

Edite um arquivo e salve com o nome de phpexplorer, com o conteúdo abaixo(e suas respectivas alterações):

  <VirtualHost *:80>
      ServerAdmin sysadm@seudomain.com.br
      DocumentRoot /var/www/phpexplorer
      ServerName phpexplorer.seudomain.com.br
      ServerAlias phpexplorer.seudomain.com.br
      ErrorLog /var/log/apache2/phpexplorer-error_log
      CustomLog /var/log/apache2/phpexplorer-access_log combined
  </VirtualHost>

Após isto, vamos inserir o novo subdomínio em nosso sistema, como abaixo:

  backscp@repositoriohost:~# a2ensite phpexplorer
  backscp@repositoriohost:~# /etc/init.d/apache2 reload

OBS: Não equecer de fazer as modificações necessárias no servidor dns interno da sua rede.

Veja a relação completa dos artigos de Aldemari Borges

Formato PDF
Newsfeed RSS
Formato para impressão
PDF RSS Imprimir

Referências Adicionais

Referências adicionais sobre os assuntos abordados neste site podem ser encontradas em nossa Bibliografia.

Avalie esta dica

  • Currently 3.05/5
  • 1
  • 2
  • 3
  • 4
  • 5

Avaliação: 3.1 /5 (1445 votos)

Opinião dos Leitores

Seja o primeiro a comentar este artigo
*Nome:
Email:
Me notifique sobre novos comentários nessa página
Oculte meu email
*Texto:
 
  Para publicar seu comentário, digite o código contido na imagem acima
 


Powered by Scriptsmill Comments Script
Lan University

Submarino.com.br

Encontre imóveis, apartamentos e casas a venda no Imobilien
Saiba mais

 

 

Procure pela casa ou apartamento ideal à venda ou para aluguel na busca inteligente do Imohoo
Buscar imóveis