Ejemplo: Backup en servidor local

#!/bin/bash
# backup script localhost - 08/02/08
#
# Author: Federico Pereira <fpereira@fmsistemas.com>
# Copyright 2008 Federico Pereira (LordBaseX)
# This script is licensed under GNU GPL version 2.0
#
# Descripción: Este script genera backups dependiendo de los parámetros que se le asignan y luego envía por mail un reporte del trabajo que realizo.
 
 
# crea los archivos log.
:> /tmp/backup-pro.log 
:> /tmp/backup-err.log 
:> /tmp/eporte.txt
 
# define variables.
DIR=$*
DESTINO="/home/fpereira/ejemplos/backups"
DIA="$(date +%Y%m%d)"
SOFT="$(which mail)"
SUBJECT="Reporte de backups"
EMAIL="federico@intranet.fmsistemas.com"
EMAILMESSAGE="/tmp/reporte.txt"
 
 
# Funcione (recorta parámetros para luego utilizarlo como nombre).
DIR_RECORTADO ()
{
cd $BACKUPS
FILE="$(pwd)"
NOMBRE="$(basename $FILE)"
}
 
 
# Entra en un ciclo (Loop) hasta que todas las acciones se cumplan (Parámetros)
for BACKUPS in $DIR
do
 
 
# Entra al directorio establecido por los parámetros, y con esto chequea si existe. 
        cd $BACKUPS  2>> /tmp/backup-pro.log        
 
 
# Si el resultado del chequeo, valor de retorno del comando anterior se cumple (es 0) 
# realiza el backup y suma a la variable CON_PRO+1 cada ves que se cumple la condición. Para luego enviarla por mail. 
        if [ $? != 1 ]                                
        then
 
                DIR_RECORTADO
 
                tar czf $DESTINO/"$NOMBRE"_"$DIA".tgz $BACKUPS 1>> /tmp/backup-err.log 2>>  /tmp/backup-pro.log
                CON_PRO=$(($CON_PRO+1))
 
        else
 
 
# Si el resultado del chequeo, valor de retorno del comando anterior no se cumple (es 1)
# No realiza el backup y suma a la variable CON_ERR+1 cada ves que se cumple la condición. Para luego enviarla por mail.
                CON_ERR=$(($CON_ERR+1))
        fi
 
done
 
# Envía por mail el reporte con la cantidad de procesos cumplidos y no cumplidos.
echo -e "Backups Realizados: \n\n" > $EMAILMESSAGE
echo "Completos =" $CON_PRO >> $EMAILMESSAGE
echo "Errores   =" $CON_ERR >> $EMAILMESSAGE
$SOFT -s "$SUBJECT-$DIA" "$EMAIL" < $EMAILMESSAGE
 
#FIN