#!/bin/sh # # Addapted from http://motoyuki.bsdclub.org/BSD/cvsup.html # # This script requires that $BASE/$COL exist and is owned by the user # ruinning the script. The $BASE and $COL are specified so there is # no interference with the hosts regular cvsup usage. export PATH=/bin:/usr/bin:/usr/local/bin export LANG=C SUPFILE=/etc/cvsup/freebsd-supfile LOCK=/var/spool/lock/freebsd-supfile.lock LOG=/var/log/cvsup.log BASE=/etc/cvsup COL=sup.client ADMIN="root@cvsup.straycat.dhs.org" S_HOUR=00 SUPHOST=${SUPHOST:="cvsup3.us.freebsd.org"} LOG="/var/log/cvsup.log" NUM_LOGS=6 random_server="no" if [ x`date "+%H"` = x$S_HOUR ]; then SFLAG= else SFLAG=-s fi # Create our own lock so cvsup can be run as a non-root user w/o # directory permission playing. if [ -f ${LOCK} ]; then echo "FreeBSD CVSup lock held by `cat ${LOCK}`" | mail -s "CVSup FreeBSD locked" $ADMIN exit 1 else echo $$ > ${LOCK} fi # Log rotation. From FreeBSD cvsup-mirror update.sh for i in $(/usr/bin/jot ${NUM_LOGS} $((${NUM_LOGS}-1)) 0) do test -f ${LOG}.$i.gz && mv -f ${LOG}.$i.gz ${LOG}.$(($i+1)).gz done test -f ${LOG} && mv -f ${LOG} ${LOG}.0 && /usr/bin/gzip -9 ${LOG}.0 exec >${LOG} 2>&1 ( echo echo "========== CVSup $SFLAG started at `date`" if ! su -m cvsup -c "/usr/local/bin/cvsup \ ${SFLAG} -h ${SUPHOST} -g -L 2 -r 1 -b ${BASE} \ -c ${COL} ${SUPFILE}"; then tail ${LOG} | mail -s "CVSup FreeBSD failed" ${ADMIN} fi echo "========== CVSup ${SFLAG} ended at `date`" ) >> ${LOG} # Clean up after ourself rm -f ${LOCK}