53
|
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
|