No need for --delay-updates in standard rsync
[public/mirror.git] / csc-sync-debian
index 28136d3..a1313ee 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]]'
@@ -113,8 +113,10 @@ LOCK_TIMEOUT=360
 # uncomment the following lines (and edit the other file).
 
 # . ftpsync.conf
-# export RSYNC_PASSWORD
-# RSYNC_HOST=$RSYNC_USER@$RSYNC_HOST
+export RSYNC_PASSWORD
+if [[ "$RSYNC_USER" != "" ]]; then
+    RSYNC_HOST=$RSYNC_USER@$RSYNC_HOST
+fi
 
 #-----------------------------------------------------------------------------#
 
@@ -170,7 +172,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
 # 
@@ -204,15 +206,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
+    rsync --times --verbose --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