Como fazer backup do Linux em um compartilhamento Windows

Como fazer backup do Linux em um compartilhamento Windows

Hoje de manha recebi um e-mail de uma amiga da MBA e percebi que ainda não havia postado aqui um script para backup de servidores Linux em um compartilhamento Windows.

Então, segue o script comentado:

  1. Crie um diretório backup dentro de /opt
    # mkdir /opt/backup
  2. Crie o arquivo bkp_files.list dentro do diretório backup
    # vi /opt/backup/bkp_files.list
  3. Coloque o caminho de todos os diretórios que você quer realizar o backup
    /usr/local/
    /var
    /etc
  4. Saia salvando e crie um arquivo bkp_files.sh dentro do diretório /opt/backup
    # vi /opt/backup/bkp_files.list
  5. Coloque o script a seguir dentro do arquivo, modificando de acordo com a sua necessidade (aconselho a baixar o arquivo clicando aqui)
    #!/bin/sh
    # Backup Linux v1.3
    # Autor: Vinicius Santoro
    # Site: http://www.viniciussantoro.com.br
     
    # Destinatario para enviar e-mail com o relatorio do backup
    ADMIN=contato@viniciussantoro.com.br# Nome do servidor a ser feito o backup
    SERVER=SERVERVN01
     
    # Arquivo com a lista de diretorios para realizar o backup
    LIST=$(cat /opt/backup/bkp_files.list | grep ^\/ | sort | uniq)# Log do backup
    LOG=/var/log/backup.log# Pega data atual
    DATE=`date +%d-%m-%Y-%a`
     
    # Monta uma unidade Windows para enviar o backup
    tomount() {
            mount -t cifs -o "username=DVN\backup,password=backup" "//SERVERVN02/bkplinux$" /mnt/SERVERVN02
            if [[ $? -eq 0 ]]; then
                    echo "Partition /mnt/SERVERVN02 has been mounted sussesfully" >> $LOG
                    backup
                    erase
            else
            echo "An error occurred while mounting the Partition /mnt/SERVERVN02" >> $LOG
            echo "------------- Finishing Backup date `date +%d/%m/%Y" "%H:%M` -------------" >> $LOG
            exit 1
            fi
    }
     
    # Funcao que dispara o e-mail com o log
    send_mail () {
    /usr/sbin/sendmail $ADMIN << FIMEMAIL
    Subject: Backup $SERVER $(date +%d-%m-%Y)
    Backup realizado no arquivo: /mnt/SERVERVN02/$SERVER-$DATE.tar.gz
    FIMEMAIL
    }
     
    # Funcao que realiza o backup e o compacta
    backup() {
    tar --totals --ignore-failed-read  -zcv -f /mnt/SERVERVN02/$SERVER-$DATE.tar.gz $LIST >> $LOG 2>&1
    }
     
    # Funcao que deleta os arquivos com mais de 7 dias
    erase() {
    find /mnt/SERVERVN02/$SERVER* -mtime +7 -exec rm -rf {} \;
    }
     
    # Monsta mensagem de log
    echo "------------- Starting Backup date `date +%d/%m/%Y" "%H:%M` -------------" >> $LOG
    tomount
    echo "------------- Finishing Backup date `date +%d/%m/%Y" "%H:%M` -------------" >> $LOG

    # Envia o e-mail
    send_mail
     
    # Desmonta a unidade
    umount /mnt/SERVERVN02

  6. Agora, temos que deixar o script com permissão de execução
    # chmod +x /opt/backup/backup_files.sh
  7. Vamos agendar para que o backup seja executado todos os dias as 23 horas
    # 0 23 * * * /opt/backup/bkp_files.sh

Pronto, nosso script de backup já deve estar funcionando e disparando e-mails.

Deixar uma Resposta

©2012 Vinícius Santoro