diff mpiwg-all-sync.sh @ 0:a8eac765e94d default tip

first checkin of mirror scripts.
author casties
date Thu, 16 Mar 2017 18:39:21 +0100
parents
children
line wrap: on
line diff
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/mpiwg-all-sync.sh	Thu Mar 16 18:39:21 2017 +0100
@@ -0,0 +1,99 @@
+#!/bin/bash
+#
+# script to synchronize the MPIWG fileserver
+#
+# V0.0.3l (7.4.2015 ROC)
+
+DEBUG=1
+
+LOCKFILE=/tmp/mpiwg-all-sync.lock
+LOGFILE=/var/tmp/mpiwg-all-sync.log
+#EXCLUDEFILE=/usr/local/sbin/rsync-exclude.list
+
+MAILTO=casties@mpiwg-berlin.mpg.de,jsteinhoff@mpiwg-berlin.mpg.de
+
+MIRDIR=
+REMOTEDIR=
+
+RSYNC=/usr/bin/rsync
+RSYNCHOST="foxridge2"
+#RSYNCOPTS="-e rsh --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 ${RSYNCOPTS[@]} $MOREOPTS \"$RSYNCHOST:$REMDIR/$DIR/\" \"$LOCDIR/$DIR/\" >> $LOGFILE 2>&1" >> $LOGFILE ; fi
+    $RSYNC "${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 -s "$( hostname ): MPIWG-ALL-MIRROR: already running!" <<EOF
+
+`ls -l $LOCKFILE `
+EOF
+    exit 1
+fi
+
+touch $LOCKFILE
+
+echo "***** started `date`" > $LOGFILE
+
+#
+# sync
+#
+
+RSYNCOPTS=(-avAX --delete -e 'ssh -i /root/.ssh/foxridge1-sync-mpiwg')
+syncdir "mpiwg"
+
+# /usr/local/mpiwg as well
+RSYNCOPTS=(-avAX --delete -e 'ssh -i /root/.ssh/foxridge1-sync-usrlocal')
+syncdir "mpiwg" "/usr/local" "/usr/local"
+
+#
+# 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 -d' ' -f 5`
+    if [ "$LOGSIZE" -gt 900000 ]
+    then
+	LOG="LOGFILE too big to send: $LOGSIZE"
+    else
+	LOG=`cat $LOGFILE`
+    fi
+
+    mail -t $MAILTO -s "foxridge1 mpiwg-all-sync: $ERROR" <<EOF
+
+$LOG
+EOF
+fi
+
+echo "***** done `date`" >> $LOGFILE
+
+# remove lock
+rm $LOCKFILE