changeset 53:86965c7658a9

*** empty log message ***
author casties
date Wed, 19 Nov 2008 14:58:41 +0100
parents b762b5af6e42
children 8e19bc5ca86a
files cdli-archive-sync.sh
diffstat 1 files changed, 99 insertions(+), 0 deletions(-) [+]
line wrap: on
line diff
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/cdli-archive-sync.sh	Wed Nov 19 14:58:41 2008 +0100
@@ -0,0 +1,99 @@
+#!/bin/bash
+#
+# script to synchronize the CDLI archive at UCLA to MPIWG
+#
+# V0.4.3 (30.6.2006 ROC)
+
+DEBUG=1
+
+LOCKFILE=/var/tmp/cdli-archive-sync.lock
+LOGFILE=/var/tmp/cdli-archive-sync.log
+EXCLUDEFILE=/export/home/mirror/scripts/rsync-exclude.list
+
+MAILTO=casties@mpiwg-berlin.mpg.de
+
+MIRDIR=/mpiwg/mirror/CDLI/ARCHIVE
+REMOTEDIR=/Volumes/cdli_archives
+
+RSYNC=/usr/local/bin/rsync
+RSYNCHOST="mpiwgsav@backup.cdli.ucla.edu"
+RSYNCOPTS="--delete --exclude-from=$EXCLUDEFILE"
+
+
+function syncdir () {
+#
+# sync given directory
+#
+    DIR=$1
+    REMDIR=${2:-$REMOTEDIR}
+    if [ -n "$3" ] && [ ${3:1:1} == "-" ]
+    then
+	# if the third param starts with "-" it's the options
+	MOREOPTS=$3
+	shift
+    fi
+    LOCDIR=${3:-$MIRDIR}
+    echo "***** syncing $DIR on $(date)" >> $LOGFILE
+    if [ -n $DEBUG ] ; then echo "syncing $DIR on $(date)"; fi
+    if [ -n $DEBUG ] ; then echo "    $RSYNC -ave ssh $RSYNCOPTS $MOREOPTS \"$RSYNCHOST:$REMDIR/$DIR/\" \"$LOCDIR/$DIR/\" >> $LOGFILE 2>&1" >> $LOGFILE ; fi
+    $RSYNC -ave ssh $RSYNCOPTS $MOREOPTS "$RSYNCHOST:$REMDIR/$DIR/" "$LOCDIR/$DIR/" >> $LOGFILE 2>&1 
+    if [ $? != 0 ]
+    then
+	ERROR="${ERROR}ERROR syncing $DIR "
+    fi
+}
+
+
+
+#
+# check if script is already running
+#
+if [ -f $LOCKFILE ]
+then
+    if [ -n $DEBUG ] ; then echo "lockfile present! script seems to be running!"; fi
+
+    mail -t $MAILTO <<EOF
+Subject: CDLI-ARCHIVE-MIRROR: already running!
+
+`ls -l $LOCKFILE `
+EOF
+    exit 1
+fi
+
+touch $LOCKFILE
+
+echo "***** started `date`" > $LOGFILE
+
+#
+# sync
+#
+syncdir "cdli_archival"
+
+syncdir "cdli_general" "/Volumes/cdli_freeze" "--exclude=englund/personal/"
+
+syncdir "cdli_rawfiles" "/Volumes/cdli_freeze"
+
+#
+# send mail with error log if an error occurred
+#
+if [ -n "$ERROR" ]
+then
+    # don't send logs bigger than 1MB
+    LOGSIZE=`ls -l $LOGFILE |cut -c 32-40`
+    if [ "$LOGSIZE" -gt 900000 ]
+    then
+	LOG="LOGFILE too big to send: $LOGSIZE"
+    else
+	LOG=`cat $LOGFILE`
+    fi
+
+    mail -t $MAILTO <<EOF
+Subject: $ERROR
+
+$LOG
+EOF
+fi
+
+# remove lock
+
+rm $LOCKFILE