Unconfigured Ad Widget

Collapse

Anúncio

Collapse
No announcement yet.

Backup de sistemas

Collapse
X
 
  • Filter
  • Tempo
  • Show
Clear All
new posts

  • Font Size
    #1

    Artigo Backup de sistemas

    Backup de sistemas



    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.


    Apenas usuários registrados e ativados podem ver os links., Clique aqui para se cadastrar...
    Apenas usuários registrados e ativados podem ver os links., Clique aqui para se cadastrar...
    Créditos e Edição: Rubens Queiroz de Almeida
    Last edited by Lord Beni-Aretz; 25-07-2011, 08:49.
    Não Acha Estranha Essa Frase:
    Eu Sou Hacker e Uso Windows XP!

    Use Débian, Aprenda Slackware e Brinque Muito Com Back|Track


    Fã ->Nickguitar.dll


    Quer ajudar nossso fórum e não sabe como?
    Então click na imagem e ajude-nos com os links off
X
Working...
X