File:  [Repository] / foxridge-archiver / cdli-archive-sync.sh
Revision 1.1: download - view: text, annotated - select for diffs - revision graph
Wed Nov 19 13:58:41 2008 UTC (15 years, 7 months ago) by casties
Branches: MAIN
CVS tags: HEAD
*** empty log message ***

    1: #!/bin/bash
    2: #
    3: # script to synchronize the CDLI archive at UCLA to MPIWG
    4: #
    5: # V0.4.3 (30.6.2006 ROC)
    6: 
    7: DEBUG=1
    8: 
    9: LOCKFILE=/var/tmp/cdli-archive-sync.lock
   10: LOGFILE=/var/tmp/cdli-archive-sync.log
   11: EXCLUDEFILE=/export/home/mirror/scripts/rsync-exclude.list
   12: 
   13: MAILTO=casties@mpiwg-berlin.mpg.de
   14: 
   15: MIRDIR=/mpiwg/mirror/CDLI/ARCHIVE
   16: REMOTEDIR=/Volumes/cdli_archives
   17: 
   18: RSYNC=/usr/local/bin/rsync
   19: RSYNCHOST="mpiwgsav@backup.cdli.ucla.edu"
   20: RSYNCOPTS="--delete --exclude-from=$EXCLUDEFILE"
   21: 
   22: 
   23: function syncdir () {
   24: #
   25: # sync given directory
   26: #
   27:     DIR=$1
   28:     REMDIR=${2:-$REMOTEDIR}
   29:     if [ -n "$3" ] && [ ${3:1:1} == "-" ]
   30:     then
   31: 	# if the third param starts with "-" it's the options
   32: 	MOREOPTS=$3
   33: 	shift
   34:     fi
   35:     LOCDIR=${3:-$MIRDIR}
   36:     echo "***** syncing $DIR on $(date)" >> $LOGFILE
   37:     if [ -n $DEBUG ] ; then echo "syncing $DIR on $(date)"; fi
   38:     if [ -n $DEBUG ] ; then echo "    $RSYNC -ave ssh $RSYNCOPTS $MOREOPTS \"$RSYNCHOST:$REMDIR/$DIR/\" \"$LOCDIR/$DIR/\" >> $LOGFILE 2>&1" >> $LOGFILE ; fi
   39:     $RSYNC -ave ssh $RSYNCOPTS $MOREOPTS "$RSYNCHOST:$REMDIR/$DIR/" "$LOCDIR/$DIR/" >> $LOGFILE 2>&1 
   40:     if [ $? != 0 ]
   41:     then
   42: 	ERROR="${ERROR}ERROR syncing $DIR "
   43:     fi
   44: }
   45: 
   46: 
   47: 
   48: #
   49: # check if script is already running
   50: #
   51: if [ -f $LOCKFILE ]
   52: then
   53:     if [ -n $DEBUG ] ; then echo "lockfile present! script seems to be running!"; fi
   54: 
   55:     mail -t $MAILTO <<EOF
   56: Subject: CDLI-ARCHIVE-MIRROR: already running!
   57: 
   58: `ls -l $LOCKFILE `
   59: EOF
   60:     exit 1
   61: fi
   62: 
   63: touch $LOCKFILE
   64: 
   65: echo "***** started `date`" > $LOGFILE
   66: 
   67: #
   68: # sync
   69: #
   70: syncdir "cdli_archival"
   71: 
   72: syncdir "cdli_general" "/Volumes/cdli_freeze" "--exclude=englund/personal/"
   73: 
   74: syncdir "cdli_rawfiles" "/Volumes/cdli_freeze"
   75: 
   76: #
   77: # send mail with error log if an error occurred
   78: #
   79: if [ -n "$ERROR" ]
   80: then
   81:     # don't send logs bigger than 1MB
   82:     LOGSIZE=`ls -l $LOGFILE |cut -c 32-40`
   83:     if [ "$LOGSIZE" -gt 900000 ]
   84:     then
   85: 	LOG="LOGFILE too big to send: $LOGSIZE"
   86:     else
   87: 	LOG=`cat $LOGFILE`
   88:     fi
   89: 
   90:     mail -t $MAILTO <<EOF
   91: Subject: $ERROR
   92: 
   93: $LOG
   94: EOF
   95: fi
   96: 
   97: # remove lock
   98: 
   99: rm $LOCKFILE

FreeBSD-CVSweb <freebsd-cvsweb@FreeBSD.org>