#! /bin/sh set -e ## Make sure we're running as the right user. case $(id -un) in mirror) ;; *) exec userv -fstdin=/dev/null mirror run "$@";; esac ## Set up a plausible environment. HOME=/var/lib/mirror-admin; export HOME; cd MIRRORS=/mnt/mirrors; export MIRRORS PATH=$HOME/bin:/usr/bin:/usr/sbin:/bin:/sbin:/usr/local/bin:/usr/local/sbin export PATH umask 002 ## Make sure we're running with a lock file. case "${MIRROR_LOCKED-nil}" in nil) exec env MIRROR_LOCKED=t locking -f var/mirror.lock "$0" "$@" ;; esac ## Hack for mad Kerberized NFS. if [ -r etc/krb5.keytab ]; then kinit -k -t etc/krb5.keytab mirror fi ## Before we start, rotate the logs. (Doing things this way means that we ## can be sure we don't lose new logs, even if the log rotation goes ## completely mental. logrotate -s var/logrotate.state etc/logrotate.conf ## Let SIGINT take out the children only. trap "" INT ## By default run all of the scripts. case $# in 0) set "*" ;; esac ## Now do the various mirroring things. for file in $(run-parts --list etc/mirrors.d); do [ -x "$file" ] || continue matchp=nil leaf=$(echo "$file" | sed 's:^.*/::; s/^[0-9]\+[-_.]//') for pat in "$@"; do case "$leaf" in $pat) matchp=t; break ;; esac done case $matchp in nil) continue ;; esac base=${file##*/}; base=${base#[0-9]*-} ( echo echo "***--------------------------------------------------" echo "*** Running $base at $(date +%Y-%m-%dT%H:%M:%S)" echo set +e; (trap - INT; exec "$file"); rc=$?; set -e echo echo "*** Finished $(date +%Y-%m-%dT%H:%M:%S); rc = $rc" if [ -d etc/post-$base.d ]; then for i in $(run-parts --list etc/post-$base.d); do s=${i##*/} echo echo "*** Running post-script $s at $(date +%Y-%m-%dT%H:%M:%S)" set +e; (trap - INT; exec "$i"); rc=$?; set -e echo echo "*** Finished post-script $s $(date +%Y-%m-%dT%H:%M:%S); rc = $rc" done fi ) >>log/$base.log 2>&1 done