Ejemplo: Backup en servidor local #!/bin/bash # backup script localhost - 08/02/08 # # Author: Federico Pereira # 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