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

 

  1. Agora, temos que deixar o script com permissão de execução
    # chmod +x /opt/backup/backup_files.sh
  2. 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.