#!/bin/sh
RSYNC_RSH=rsh
MAXATTEMPTS=5
TMOUT1=500
TMOUT2=15
SRCROOT=rsync://rsync.altlinux.org/ALTLinux	# 2003-04-15
#SRCROOT=rsync://ibiblio.org/Linux/distributions/altlinux	# 2002-12-07
#SRCROOT=rsync://ftp.leo.org/ALTLinux	# 2002-12-09
DESTROOT=~ftp/pub/Linux/ALT
#LIST="updates Sisyphus Mozilla OpenOffice Daedalus"
#LIST="updates Sisyphus Mozilla Daedalus people/shrek"
LIST="updates Sisyphus backports Mozilla Daedalus"
#LIST="updates"
RSYNC=/usr/bin/rsync
RSYNCARGS="-rltgoDuz --partial --timeout=$TMOUT1 --delete --delete-after --exclude='*/2.0/*"
#RSYNCARGS="-rltgoDuz --partial --timeout=$TMOUT1 --delete "
RSHOME=~/rsync
MAINTAINER=mike@altlinux.org.ua

for mirror in $LIST; do
	OK=
	attempt=1
	LOG=$RSHOME/rsync-$mirror.log
	LOCK=$RSHOME/lock.$mirror
	FLAG=$DESTROOT/$mirror/__SYNCING__
	date >> $LOG
	[ -f $LOCK ] && {
		ps auxww | grep rsync | mail -s "OSDN: $mirror: lockfile exists" $MAINTAINER
		echo "Lockfile for $mirror exists, quitting" >> $LOG
		continue
	}
	trap "rm -f $LOCK; exit 1" INT
	touch $LOCK $FLAG
	while [ -z "$OK" -a $attempt -lt $MAXATTEMPTS ]; do 
		$RSYNC $RSYNCARGS $* $SRCROOT/$mirror/ $DESTROOT/$mirror \
			>> $LOG 2>&1 && OK=1
		sleep $TMOUT2
		attempt=$(($attempt+1))
	done
	[ -z "$OK" ] && {
		tail $LOG | mail -s "OSDN: $mirror trouble" $MAINTAINER
	} || {
		rm -f $FLAG
	}
	rm -f $LOCK
	date >> $LOG
done

# quick addition
#$RSYNC $RSYNCARGS rsync.altlinux.org::beta/pub/Sisyphus-branch-3.0/ ~/ALTLinux/beta/Sisyphus-branch-3.0/ >/dev/null

nice symlinks -dr $DESTROOT >&/dev/null
