On Monday 14 October 2002 12:37, Erez Boym wrote:
I use this not too sofisticated script:


#!/bin/bash
#
# Creates backups of essential files. After the completion, sends log to 
predefined address.
# Full backup is made at Saturday ("Shabbat"). Incremental backups are made 
every weekday.
# In order for this script to work:
#       1 appropriate crontabentry should be made
#       2 THE FIRST RUN OF THIS SCRIPT SHOUD BE ON SATURDAY
#       3 status directory should be created. This directory serves for time 
trakking, so biweekly cleanup
#         is performed
#       4 a little bit of luck :-)
#


BACKUPDIR="/backup"
TEMPDIR="/tmp"
STATUSDIR="/backup/status"

DATA="/home /root"
CONFIG="/etc /var/lib "


#DATA="/home/bgbg/backuptest/data_test"
#CONFIG="/home/bgbg/backuptest/conf_test"

LIST="$TEMPDIR/backlist_$$.txt"
NOLIST="$TEMPDIR/nolist_$$.txt"
ERRORFILE="$TEMPDIR/backuperrors_$$.txt"
LOGFILE="$TEMPDIR/backuplog_$$.txt"
MAILTO="root" # any mail address

# let's start
echo "Backup script started on `date`">$LOGFILE

chmod -R 700 $BACKUPDIR
chmod -R 700 $STATUSDIR

#############################################################
############### NOLIST files and directories that should not be backuped 
######################################
#############################################################
#we don't backup files in trash, temp, tmp, cache directories (case 
insensitive)
# in fact, any directory that has a name that ends with those strings will be 
excluded

find $DATA -depth | grep -iE 'temp/
trash/
tmp/
cache/
music/
mp3/
downloads/
dontbackup/'>$NOLIST


STATUS=`ls -l $STATUSDIR/ | wc -l`
let "STATUS = STATUS -1"
set $(date)
#
if test "$1" = "Sat" ; then
        # weekly full backup of all data and config. settings:
        #
        if test $STATUS = 14; then
                #biweekly cleanup
                echo "Biweekly cleanup. SKIPPED `date`">>$LOGFILE
                rm -f $BACKUPDIR/data_full* 2>>$ERRORFILE
                rm -f $BACKUPDIR/config_full* 2>>$ERRORFILE
        fi

        echo "weekly a full backup of all data and config. settings 
`date`">>$LOGFILE
        tar cfz "$BACKUPDIR/data_full_$6-$2-$3.tgz" $DATA -X $NOLIST 
2>>$ERRORFILE
        #
        tar cfz "$BACKUPDIR/config_full_$6-$2-$3.tgz" $CONFIG -X $NOLIST 
2>>$ERRORFILE

        if test $STATUS = 14; then
                #biweekly cleanup
                echo "Biweekly cleanup. Removing incremental backups 
`date`">>$LOGFILE
                rm -f $BACKUPDIR/data_diff* 2>>$ERRORFILE
                rm -f $BACKUPDIR/config_diff* 2>>$ERRORFILE

                echo "!!!!!!!!!!!!   DON'T FORGET TO TRANSFER THE FULL BACKUP 
TO CD !!!!!!!!!!!">>$LOGFILE
                rm -f $STATUSDIR/* >>$ERRORFILE
                echo status a $STATUS
                let "STATUS = 0"
                echo status a $STATUS
        fi
else
        # incremental backup:
        #
        echo "incremental backup: `date`">>$LOGFILE
        find $DATA -depth -type f \( -ctime -1 -o -mtime -1 \) -print > $LIST
        tar cfzT "$BACKUPDIR/data_diff_$6-$2-$3.tgz" "$LIST" -X $NOLIST 
2>>$ERRORFILE
        rm -f "$LIST" 2>>$ERRORFILE
        #
        find $CONFIG -depth -type f  \( -ctime -1 -o -mtime -1 \) -print > 
$LIST
        tar cfzT "$BACKUPDIR/config_diff_$6-$2-$3.tgz" "$LIST" -X $NOLIST 
2>>$ERRORFILE
        rm -f "$LIST" 2>>$ERRORFILE
fi
rm -f "$NOLIST" 2>>$ERRORFILE
let "STATUS = STATUS  + 1"
touch $STATUSDIR/$STATUS >>$ERRORFILE

#close backup and status directories for eddiding
chmod -R 500 $BACKUPDIR
chmod -R 500 $STATUSDIR


echo "Ended at `date`">>$LOGFILE
echo "-----------------" >>$LOGFILE
echo "ERROR log">>$LOGFILE
echo >>$LOGFILE
cat $ERRORFILE >>$LOGFILE
echo >>$LOGFILE
echo "END OF ERROR LOG">>$LOGFILE
#tell to the friends
mail $MAILTO  -s "Backup log on `hostname`, `date`" <$LOGFILE


################################## END #######################3333
-- 
Boris Gorelik
Mon, 14/Oct/2002, 8 Heshvan 5763
-------------------------------------------------
! Molecular Modelling Group !
! Pharmacy School, Hadassa Faculty of medicine !
! The Hebrew University of Jerusalem !
! http://www.md.huji.ac.il/models/group.html !
!
!------------------------------------------------


=================================================================
To unsubscribe, send mail to [EMAIL PROTECTED] with
the word "unsubscribe" in the message body, e.g., run the command
echo unsubscribe | mail [EMAIL PROTECTED]

Reply via email to