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.

Backup de sistemas

Colaboração: Rubens Queiroz de Almeida

Data de Publicação: 14 de outubro de 2010

Em caso de problemas com sistemas é sempre recomendável ter uma estratégia de recuperação rápida. Muitos administradores preferem reinstalar tudo. Esta estratégia, embora interessante, é demorada e propensa a falhas. Todos os aplicativos precisam ser reconfigurados, as coisas podem não funcionar imediatamente, enfim, problemas não faltarão.

Uma estratégia que uso há muitos anos, e com vários tipos de sistemas operacionais, como aix (comando mksysb), SunOS, Solaris, etc. é fazer um arquivo contendo os binários do sistema operacional. Este arquivo precisa ser atualizado apenas quando instalamos produtos novos ou fazemos algum tipo de manutenção. Em plataforma intel, é conveniente também fazer uma cópia do MBR (Master Boot Record), que contém, entre outras coisas, informações de particionamento do disco.

O script backupsys, de autoria de Martin Matusiak, pode ser usado para esta finalidade. Além do script em si, você precisa criar um arquivo contendo a lista dos diretórios a serem excluídos de seu backup. O nome deste arquivo possui o sufixo lst, e contém algo como:

  /
  --exclude=/cdrom/*
  --exclude=/home/*
  --exclude=/media/*
  --exclude=/mnt/*
  --exclude=/proc/*
  --exclude=/root/*
  --exclude=/sys/*
  --exclude=/tmp/*
  --exclude=/backup/*
  --exclude=/var/log/*

O nome dos arquivos gerados terá como prefixo (basename) o nome do sufixo adotado para o arquivo lst. Por exemplo, se o arquivo lst se chamar snoopy.lst todos os arquivos gerados terão o prefixo snoopy.

Neste backup, que é feito para uma recuperação rápida, não vale a pena incluir arquivos de log, fila de emails, etc, pois seu objetivo é apenas restaurar o sistema rapidamente. Os dados e outras informações, devem ser armazenados de outra forma.

O script backupsys que usamos, com modificações para realizar o backup do mbr, está reproduzido a seguir:

  #!/bin/bash
  #
  # Author: Martin Matusiak <numerodix@gmail.com>
  # Licensed under the GNU Public License, version 3.
  #
  # Modified: Diego
  # - MBR backup
  
  backup_dir=/home/backup
  num_backups=2	# Max number of backups (if it has more than that, the older is deleted)
  
  
  verbose="$@"
  lists=$backup_dir/*.lst
  ext=tgz
  date_params="%Y-%m-%d-%H%M"
  nice_val="nice -n20"
  
  # colors
  wh="\e[1;37m"
  pl="\e[m"
  ye="\e[1;33m"
  cy="\e[1;36m"
  re="\e[1;31m"
  
  if [[ "$verbose" && "$verbose" != "-v" ]]; then
  	echo "Usage:  $0 [-v]"
  	exit 1
  fi
  
  if [ ! -d $backup_dir ]; then
  	echo -e "${re}Backup dir $backup_dir does not exist.${pl}"; exit 1
  fi
  
  for list in $(ls $lists); do
  	name=$(basename $list .lst)
  	file_root=$backup_dir/$name.$(date +$date_params)
  	
  	stdout="1> /dev/null"
  	stderr="2> $file_root.$ext.err"
  	if [ "$verbose" ]; then
  		stdout=""
  	fi
  
  	echo -n "Making MBR backup... "
  	dd if=/dev/sda of=$file_root.mbr bs=512 count=1
  	if [ $? -eq 0 ]; then
  		echo "OK"
  	else
  		echo "FAIL"
  	fi	
  	
  	cmd="cat $list | $nice_val xargs tar zlcfv \
  		$file_root.$ext $stderr | tee $file_root.$ext.log $stdout"
  
  	trap 'echo -e "${re}Received exit signal${pl}"; exit 1' INT TERM
  
  	echo " * Running \`$name\` job..."
  	if [ "$verbose" ]; then echo -e ${ye}$cmd${pl}; fi
  	echo -en $cy; bash -c "$cmd" ; echo -en $pl
  	status_code=$?
  
  	if [ $status_code -gt 0 ]; then
  		# Dump error log
  		echo -en $re ; cat $file_root.$ext.err
  		echo -en $pl ; echo "Tar exit code: $status_code"
  	else
  		# Kill error file
  		rm $file_root.$ext.err
  	fi
  
  	# Evict old backups we don't want to keep
  	num=$num_backups
  	for evict in $(ls -t $backup_dir/$name.*.$ext); do
  		if [ $num -le 0 ]; then 
  			rm -f "$evict"
  		else
  			num=$(($num-1))
  		fi
  	done
  
  	# Report number of files in backup
  	echo -n "$(wc -l < $file_root.$ext.log) files"
  	echo ", $(ls -l $file_root.$ext | awk '{ print $5 }') bytes"
  
  done

Ao final da execução teremos os seguintes arquivos:

hostname.2010-10-05-0843.tgz.log arquivo contendo o log de execução do script
hostname.2010-10-05-0843.mbr arquivo contendo o MBR do servidor
hostname.2010-10-05-0843.tgz arquivo compactado com o sistema operacional

O valor hostname será substituido pelo prefixo do arquivo terminado em lst. Leia também o artigo original, easy peasy full system backup. Veja também o script original.

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

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 2.98/5
  • 1
  • 2
  • 3
  • 4
  • 5

Avaliação: 3.0 /5 (836 votos)

Opinião dos Leitores

André
25 Out 2010, 11:37
Verdade, na hora de restaurar ele dá o comando tar mas não joga os diretórios e arquivos conforme particionamento:

EX:

/dev/sda1 /boot
/dev/sda2 /
/dev/sda3 /var/backups

Terei que descompactar tudo na raís (/) e depois criar os diretórios manualmente e mover os arquivos e pastas para seus respectivos locais?
Alysson
18 Out 2010, 11:26
Supondo um sistema com 10gb de dados, qual seria o tamanho do backup?
ou melhor, qual a taxa de compactação? (eu sei que varia de arquivo para arquivo, mas qual seria a media geral?)
Jairus
14 Out 2010, 15:24
Parabéns pelo script, pois é um assunto de inteira importância. Mas a minha pergunta é a mesma do José Ramos, e para efetuar a restauração ?

Abraços
Jairus Lopes
José Ramos
14 Out 2010, 13:35
E para efetuar a restauração???
Abs
*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
Treinamentos, Consultorias e Soluçoes em TI. Baseados em softwares livres e padrões abertos para ambientes de missão crítica

Submarino.com.br

Objective-C Fundamental