você está aqui: Home  → Arquivo de Mensagens

Backup's remotos com tar, bzip2 e ssh com autenticação por chaves públicas.

Colaboração: Rubens Queiroz de Almeida

Data de Publicação: 14 de Dezembro de 2004

A maioria dos administradores de redes precisam utilizar alguma ferramenta de backup. No meu caso eu utilizo o comando tar para concatenar, juntamente com o bzip2 para compactar os arquivos e o ssh para fazer a transferência dos mesmos remotamente.

Este trio pode ser utilizado de várias formas, mas prefiro utilizar todos em uma linha única de comando.

*Apesar da facilidade tem que se levar em consideração que a autenticação por chaves assimétricas esteja configurada (sem utilização de senha) e funcionando no servidor que irá receber os backups.*

O macete é o seguinte: O comando tar tem uma opção que vc. pode utilizar para especificar um shell remoto para ele ( --rsh-command ), com isto ao invés de utilizarmos um shell inseguro como o rsh, usamos o ssh.

Vamos lá então:

Para compactar e enviar o arquivo para uma máquina remota:

  tar cjvf usuario@servidor.com.ssh:local_onde_guardara_o_backup.tar.bz2 /home --rsh-command=/usr/bin/ssh

pode-se aprimorar ainda mais isso, utilizando a opção —include-files e --exclude-files do tar, para um backup mais enxuto, digamos assim.

Veja um script de exemplo:

  #!/bin/bash
  < A NAME="note" HREF="#textnote">< SUP>< A NAME="note" HREF="#textnote">< SUP>< A NAME="note" HREF="#textnote">< SUP>< A NAME="note" HREF="#textnote">< SUP>< A NAME="note" HREF="#textnote">< SUP>< A NAME="note" HREF="#textnote">< SUP>< A NAME="note" HREF="#textnote">< SUP>< A NAME="note" HREF="#textnote">< SUP>< A NAME="note" HREF="#textnote">< SUP>< A NAME="note" HREF="#textnote">< SUP>< A NAME="note" HREF="#textnote">< SUP>< A NAME="note" HREF="#textnote">< SUP>< A NAME="note" HREF="#textnote">< SUP>< A NAME="note" HREF="#textnote">< SUP>< A NAME="note" HREF="#textnote">< SUP>< A NAME="note" HREF="#textnote">< SUP>< A NAME="note" HREF="#textnote">< SUP>< A NAME="note" HREF="#textnote">< SUP>< A NAME="note" HREF="#textnote">< SUP>#
  # Script bkp.sh                                                             #
  # Forma de execução:                                                        #
  #       $PATH/bkp.sh [USER] [HOST] [INCLUDE-FILE] [ABSOLUTE PATH SSH] & 2>&-#
  #                                                                           #
  # Breve descrição:                                                          #
  # Este script efetua o backup dos diretórios existentes no arquivo          #
  # [INCLUDE-FILE] para a o usuário e máquina especificado em [USER]          #
  # e [HOST] respectivamente.                                                 #
  # Aceita-se ainda o parâmetro [ABSOLUTE PATH SSH]. Caso ele não seja especi-#
  # ficado assume-se que o arquivo seja "usr/bin/ssh"                         #
  #                                                                           #
  # OBS: Este script usa autenticação por chaves públicas SSH sem senha       #
  #                                                                           #
  # by Edson Flávio de Souza edson.flavio@ufpr.br                             #
  # versão 1.0                                                                #
  < A NAME="note" HREF="#textnote">< SUP>< A NAME="note" HREF="#textnote">< SUP>< A NAME="note" HREF="#textnote">< SUP>< A NAME="note" HREF="#textnote">< SUP>< A NAME="note" HREF="#textnote">< SUP>< A NAME="note" HREF="#textnote">< SUP>< A NAME="note" HREF="#textnote">< SUP>< A NAME="note" HREF="#textnote">< SUP>< A NAME="note" HREF="#textnote">< SUP>< A NAME="note" HREF="#textnote">< SUP>< A NAME="note" HREF="#textnote">< SUP>< A NAME="note" HREF="#textnote">< SUP>< A NAME="note" HREF="#textnote">< SUP>< A NAME="note" HREF="#textnote">< SUP>< A NAME="note" HREF="#textnote">< SUP>< A NAME="note" HREF="#textnote">< SUP>< A NAME="note" HREF="#textnote">< SUP>< A NAME="note" HREF="#textnote">< SUP>< A NAME="note" HREF="#textnote">< SUP>#
  
  #set -x
  
  ###Usuário remoto que será usado para receber o backup
  USER=${1-usuario}
  
  ###Host remoto que será usado para receber o backup
  HOST=${2-host}
  
  ###Nome do arquivo remoto que será gerado o backup
  FILENAME=backup.$HOST.$(date +%d%m%Y).bkp
  
  ###Nome do arquivo onde fica a relação de diretórios a serem "backupeados"
  INCLUDE=${3:-include.txt}
  
  ###Local onde fica o binário do ssh
  SSH=${4:-/usr/bin/ssh}
  
  ###Local onde fica o binário do tar
  TAR=/bin/tar
  
  ###Parâmetros a serem usados para compactação com o tar (o "c" e o "f" são essenciais)
  ###Aqui estou usando o bzip opção "j"
  TARPARM=cjf
  
  ###Endereço para onde deve ser enviado e-mail's com erro
  EMAIL=root@localhot
  
  ### Efetuando o Backup
  
  $TAR $TARPARM $USER@$HOST:$FILENAME --rsh-command=$SSH -T $INCLUDE 2>&-
  
  if [ $? -ne 0 ]; then
  {
     mail -s "Erro no Backup da máquina $HOST em $(date +%d/%m/%Y)" $EMAIL
     exit 1
  }; fi
  
  ### Removendo arquivos de backups antigos
  
  $SSH $USER@$HOST '(cd ~/backups/; DATA=``date --date="15 days ago" +%d%m%Y``; rm *.$DATA.bkp)';
  
  
  if [ $? -ne 0 ]; then
  {
     mail -s "Erro remoção arq. ant. host $HOST em $(date +%d/%m/%Y)" $EMAIL
     exit 1
  }; fi


Veja a relação completa dos artigos de Rubens Queiroz de Almeida

 

 

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