shell-script-pt
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Script comentado


From: Jose Valdir Gama
Subject: Script comentado
Date: Sun, 4 Nov 2007 14:16:19 -0200

Pessoal,  não querendo abusar da lista, mas estou no inicio do
aprendizado em shell script, e peguei um script de backup  o qual caiu
como uma luva para min, fiz dois ou três alterações para poder usar
aqui no sistema.

Mas o que eu queria mesmo se alguém tem paciência de comentar algumas
linhas aom fundo deste script abaixo,  pois assim eu acredito que  eu
assimilária melhor os comandos.

OBS:  Tem muitas linhas que sei exatamente o que o script faz,  mas
tem umas que gostaria de aprofunda  por exemplo:


  LISTA=$(cat $PREFIX/etc/list.conf | grep ^\/ | sort | uniq)

 o que este  ^V | sort | uniq   faz?

Agora esta linhas o que cada uma faz?

LINHAS=$(cat $CONFIG | grep ^[0-9] | wc -l)

         [ $LINHAS -eq $((DIAS+1)) ] && VOLTA=1

         FIRST=$(cat $CONFIG | grep ^[0-9]- | head -1)

         LAST=$(cat $CONFIG | grep ^[0-9]- | tail -1)

         OLD=$(echo $LAST | cut -f1 -d"-")

         OLD=${OLD:-0}

         BACKUP_OLD=$(echo $FIRST | cut -f1 -d"-")

         FILE_OLD=$(echo $FIRST | cut -f- -d"-")

         if [ $OLD -eq $DIAS ] ; then

                 NUMERO=1

                 mv -f $INC $INC.bak

         else

                 NUMERO=$((OLD+1))



Este é o script de backup completo, veja que tem linhas que diz mais o
menos o que faz.  as quando chega nas expressões ai a porca torce o
rabo.


#!/bin/bash
#
# Identificações dos arquivos

  IDENTIFICA=Backup

  # Numero de dias do ciclo de backup

  DIAS=7

  # E-mail do administrador

  ADMIN=address@hidden

  # A partir de onde ficarão os arquivos

  PREFIX=/var

  # Onde os arquivos de backup e logs ficarão armazenados

  DIR_DESTINO=/home/backup/arquivos

  # Lista de arquivos a não serem backupeados

  EXCLUDE=$PREFIX/etc/exclude.list

  # Arquivos temporário do script

  TEMP=/tmp/.backup.$$

  # Arquivos de controle do GNU/Tar

  INC=$PREFIX/etc/incremental.conf

  # Formato da data

  DATA=$(date +%d-%m-%Y-%a)

  # Arquivo com a lista de diretorios a serem backupeados

  LISTA=$(cat $PREFIX/etc/list.conf | grep ^\/ | sort | uniq)

  # Arquivos gerado pelo script para controle de incremento

  CONFIG=$PREFIX/etc/backup.conf

  VOLTA=0

  if [ ! -e $CONFIG ] ; then

         touch $CONFIG

         NUMERO=1

  else

         cp -f $CONFIG $CONFIG.bak

         LINHAS=$(cat $CONFIG | grep ^[0-9] | wc -l)

         [ $LINHAS -eq $((DIAS+1)) ] && VOLTA=1

         FIRST=$(cat $CONFIG | grep ^[0-9]- | head -1)

         LAST=$(cat $CONFIG | grep ^[0-9]- | tail -1)

         OLD=$(echo $LAST | cut -f1 -d"-")

         OLD=${OLD:-0}

         BACKUP_OLD=$(echo $FIRST | cut -f1 -d"-")

         FILE_OLD=$(echo $FIRST | cut -f- -d"-")

         if [ $OLD -eq $DIAS ] ; then

                 NUMERO=1

                 mv -f $INC $INC.bak

         else

                 NUMERO=$((OLD+1))

         fi

  fi

  DESTINO=$DIR_DESTINO/$IDENTIFICA-$NUMERO-$DATA

  #SEND_MAIL () {

   #postfix $ADMIN << FIMEMAIL
    #sendmail $ADMIN

 #Subject: Backup CL $(date +%d-%m-%Y)

  #Backup realizado no arquivo: $DESTINO.tar.gz

  #FIMEMAIL

  #}

  df -h > $DESTINO.log

  tar --totals --ignore-failed-read --exclude-from=$EXCLUDE -zcvg $INC
-f $DESTINO.tar.gz $LISTA >> $DESTINO.log 2>&1

  df -h >> $DESTINO.log

  #SEND_MAIL $DESTINO.log

  echo $NUMERO-$DATA >> $CONFIG

  if [ $VOLTA -eq 1 ] ; then


         rm -f $DIR_DESTINO/$IDENTIFICA-$FILE_OLD.tar.gz

         rm -f $DIR_DESTINO/$IDENTIFICA-$FILE_OLD.log

         sed 1d $CONFIG > $TEMP

         mv -f $TEMP $CONFIG

  fi
#Fim


Abraço

Valdir
Sumare- SP


reply via email to

[Prev in Thread] Current Thread [Next in Thread]