Add orionroutes.py
[public/mirror.git] / csc-sync-debian
index d3503b4..7310c9d 100755 (executable)
@@ -1,4 +1,4 @@
-#! /bin/sh
+#! /bin/bash
 
 if [[ $# < 3 ]]; then
   echo 'Usage: sync local_dir rsync_host rsync_dir [trace_host [trace_dir]]'
@@ -18,7 +18,7 @@ TRACE_DIR=project/trace
 if [ $# = 5 ]; then
     TRACE_DIR=$5
 fi
-LOGDIR=/home/mirror/logs/$1_$2
+LOGDIR=/var/log/mirror/$1_$2
 ADDRESS=129.97.134.71
 
 mkdir -p $LOGDIR
@@ -170,7 +170,7 @@ for ARCH in $ARCH_EXCLUDE; do
 done
 
 # Logfile
-LOGFILE=$LOGDIR/debian-mirror.log
+LOGFILE=$LOGDIR/mirror.log
 
 # Get in the right directory and set the umask to be group writable
 # 
@@ -183,7 +183,7 @@ if [ -f "$LOCK" ]; then
   if [ "`find $LOCK -maxdepth 1 -amin -$LOCK_TIMEOUT`" = "" ]; then
 # Note: this requires the procps ps; for other ps', adjust as necessary
     if ps ax | grep '[r]'sync | grep -q $RSYNC_HOST; then
-      echo "stale lock found, but a rsync is still running, aiee!"
+      echo "stale lock found, but a rsync is still running, aiee!" > /dev/stderr
       exit 1
     else
       echo "stale lock found (not accessed in the last $LOCK_TIMEOUT minutes), forcing update!"
@@ -204,15 +204,14 @@ set +e
 
 # check if we need to sync
 if [[ "$TRACE_HOST" != "" ]]; then
-    TRACE_FILE=$TO/${TRACE_DIR}/${TRACE_HOST}
-    TRACE_PRE_DATE=`ls -al $TRACE_FILE`
-    rsync --recursive --times --verbose \
-        --address=$ADDRESS \
-        $RSYNC_HOST::$RSYNC_DIR/${TRACE_DIR}/ \
-        $TO/${TRACE_DIR}/ >> $LOGFILE 2>&1
-    TRACE_POST_DATE=`ls -al $TRACE_FILE`
-    if [ "$TRACE_PRE_DATE" = "$TRACE_POST_DATE" ]; then
-        LANG=C date -u > "${TO}/${TRACE_DIR}/${HOSTNAME}"
+    TRACE_OLD_TIME=`stat -c%Y $TO/$TRACE_DIR/$TRACE_HOST 2> /dev/null`
+    TRACE_NEW_FILE=/tmp/$RSYNC_HOST_$RSYNC_DIR_$RANDOM
+    nice rsync -tv --address=$ADDRESS \
+        $RSYNC_HOST::$RSYNC_DIR/$TRACE_DIR/$TRACE_HOST \
+        $TRACE_NEW_FILE >> $LOGFILE 2>&1
+    TRACE_NEW_TIME=`stat -c%Y $TRACE_NEW_FILE`
+    rm -f $TRACE_NEW_FILE
+    if [ "$TRACE_OLD_TIME" = "$TRACE_NEW_TIME" ]; then
         echo 'Trace file for' $RSYNC_HOST::$RSYNC_DIR \
             'unchanged, not rsyncing.' >> $LOGFILE
         exit 0
@@ -220,18 +219,18 @@ if [[ "$TRACE_HOST" != "" ]]; then
 fi
 
 # First sync /pool
-rsync --recursive --links --hard-links --times --verbose \
+nice rsync -rlHtv \
      $TMP_EXCLUDE $EXCLUDE $SOURCE_EXCLUDE \
-     --address=$ADDRESS \
+     --timeout=3600 --address=$ADDRESS \
      $RSYNC_HOST::$RSYNC_DIR/pool/ $TO/pool/ >> $LOGFILE 2>&1
 result=$?
 
 if [ 0 = $result ]; then
        # Now sync the remaining stuff
-       rsync --recursive --links --hard-links --times --verbose --delay-updates --delete-after \
+       nice rsync -rlHtv --delay-updates --delete-after \
             --exclude "Archive-Update-in-Progress-${HOSTNAME}" \
             --exclude "${TRACE_DIR}/${HOSTNAME}" \
-            --address=$ADDRESS \
+            --timeout=3600 --address=$ADDRESS \
             $TMP_EXCLUDE $EXCLUDE $SOURCE_EXCLUDE \
             $RSYNC_HOST::$RSYNC_DIR $TO >> $LOGFILE 2>&1