diff options
author | Thomas Schwinge <tschwinge@gnu.org> | 2008-09-30 16:38:36 +0200 |
---|---|---|
committer | Thomas Schwinge <tschwinge@gnu.org> | 2008-09-30 16:38:36 +0200 |
commit | eea3078111965f7129a26c937f1816ff9a0142ef (patch) | |
tree | 78f8d9d38b91cfce8dd79cfcdec20731498c0533 /hurd/running/debian/creating_image_tarball/anonftpsync-ports | |
parent | 88c7e435dd287e8cedb94bfd209be0642d29ed2a (diff) |
[[hurd/running/creating_image_tarball]] -> [[hurd/running/debian/creating_image_tarball]] and split out shell script.
Diffstat (limited to 'hurd/running/debian/creating_image_tarball/anonftpsync-ports')
-rw-r--r-- | hurd/running/debian/creating_image_tarball/anonftpsync-ports | 180 |
1 files changed, 180 insertions, 0 deletions
diff --git a/hurd/running/debian/creating_image_tarball/anonftpsync-ports b/hurd/running/debian/creating_image_tarball/anonftpsync-ports new file mode 100644 index 00000000..0988dbde --- /dev/null +++ b/hurd/running/debian/creating_image_tarball/anonftpsync-ports @@ -0,0 +1,180 @@ +#! /bin/sh +set -e + +# This script originates from http://www.debian.org/mirror/anonftpsync +# modified by Martin Zobel-Helas <zobel@debian.org>, 2005-01-16 +# these modifications are published under the terms of the GNU GPL +# Modifications: +# + some more documentation about variables +# + added ARCH_EXCLUDE +# + mirror in a safe way, first /pool, then /dists and the rest +# modified by Aurelien Jarno <aurel32@debian.org>, 2007-12-02 +# these modifications are published under the terms of the GNU GPL +# + modifications to mirror debia,-ports.org +# Version: $Id: anonftpsync,v 1.18 2005/10/28 15:25:54 aba Exp $ + + +# Note: You MUST have rsync 2.0.16-1 or newer, which is available in slink +# and all newer Debian releases, or at http://rsync.samba.org/ + +# Set the variables below to fit your site. You can then use cron to have +# this script run daily to automatically update your copy of the archive. + +# Don't forget: +# chmod 744 anonftpsync + +# TO is the destination for the base of the Debian mirror directory +# (the dir that holds dists/ and ls-lR). +# (mandatory) + +TO=/home/foo/rsync-debian-ports + +# RSYNC_HOST is the site you have chosen from the mirrors file. +# (http://www.debian-ports.org/mirrors) +# (mandatory) + +RSYNC_HOST=rsync.debian-ports.org + +# RSYNC_DIR is the directory given in the "Packages over rsync:" line of +# the mirrors file for the site you have chosen to mirror. +# (mandatory) + +RSYNC_DIR=debian/ + +# LOGDIR is the directory where the logs will be written to +# (mandatory) + +LOGDIR=/var/log/rsync-debian-ports + +# ARCH_EXCLUDE can be used to exclude a complete architecture from +# mirrorring. Please use as space seperated list. +# Possible values are: +# armel hurd-i386 kfreebsd-amd64 kfreebsd-i386 +# +# There is one special value: source +# This is not an architecture but will exclude all source code in /pool +# +# eg. +# ARCH_EXCLUDE="hurd-i386" +# +# With a blank ARCH_EXCLUDE you will mirror all availible architectures +# (optional) + +ARCH_EXCLUDE="armel kfreebsd-amd64 kfreebsd-i386 m68k" + +# EXCLUDE is a list of parameters listing patterns that rsync will exclude. +# The following example would exclude mostly everything: +#EXCLUDE="\ +# --exclude binary-hurd-i386/ --exclude binary-kfreebsd-i386/ +# --exclude *_hurd-i386.deb --exclude *_knetbsd-i386.deb \ +# --exclude stable/ --exclude testing/ --exclude unstable/ \ +# --exclude source/ \ +# --exclude *.orig.tar.gz --exclude *.diff.gz --exclude *.dsc \ +# --exclude /base/ --exclude /bochs/ --exclude /obsolete/ \ +# " + +# With a blank EXCLUDE you will mirror the entire archive. +# (optional) + +EXCLUDE="--exclude binary-kfreebsd-i386/ --exclude *_knetbsd-i386.deb \ + --exclude source/ --exclude *.orig.tar.gz --exclude *.diff.gz \ + --exclude /bochs/ --exclude /obsolete/ \ + --exclude *kfreebsd* --exclude *m68* --exclude *sh* \ + " + +# MAILTO is the address to send logfiles to; +# if it is not defined, no mail will be sent +# (optional) + +MAILTO= + +# There should be no need to edit anything below this point, unless there +# are problems. + +#-----------------------------------------------------------------------------# + +# Check for some environment variables +if [ -z $TO ] || [ -z $RSYNC_HOST ] || [ -z $RSYNC_DIR ] || [ -z $LOGDIR ]; then + echo "One of the following variables seems to be empty:" + echo "TO, RSYNC_HOST, RSYNC_DIR or LOGDIR" + exit 2 +fi + +if ! [ -d ${TO}/project/trace/ ]; then + # we are running mirror script for the first time + mkdir -p ${TO}/project/trace +fi + +# Note: on some non-Debian systems, hostname doesn't accept -f option. +# If that's the case on your system, make sure hostname prints the full +# hostname, and remove the -f option. If there's no hostname command, +# explicitly replace `hostname -f` with the hostname. +HOSTNAME=`hostname -f` + +LOCK="${TO}/Archive-Update-in-Progress-${HOSTNAME}" + +# Exclude architectures defined in $ARCH_EXCLUDE +for ARCH in $ARCH_EXCLUDE; do + EXCLUDE=$EXCLUDE"\ + --exclude binary-$ARCH/ \ + --exclude disks-$ARCH/ \ + --exclude installer-$ARCH/ \ + --exclude Contents-$ARCH \ + --exclude Contents-$ARCH.gz \ + --exclude *_$ARCH.deb \ + --exclude *_$ARCH.udeb \ + --exclude pool-$ARCH/" + if [ "$ARCH" == "source" ]; then + SOURCE_EXCLUDE="\ + --exclude *.tar.gz \ + --exclude *.diff.gz \ + --exclude *.dsc " + fi +done + +# Logfile +LOGFILE=$LOGDIR/debian-mirror-ports.log + +# Get in the right directory and set the umask to be group writable +# +cd $HOME +umask 002 + +# Check to see if another sync is in progress +if lockfile -! -l 10800 -r 0 "$LOCK"; then + echo ${HOSTNAME} is unable to start rsync, lock file exists + exit 1 +fi +# Note: on some non-Debian systems, trap doesn't accept "exit" as signal +# specification. If that's the case on your system, try using "0". +trap "rm -f $LOCK > /dev/null 2>&1" exit + +set +e + +# First sync /pool-* +rsync --recursive --links --hard-links --times --verbose \ + $EXCLUDE $SOURCE_EXCLUDE \ + $RSYNC_HOST::$RSYNC_DIR/pool-* $TO >> $LOGFILE 2>&1 +result=$? + +if [ 0 = $result ]; then + # Now sync the remaining stuff + rsync --recursive --links --hard-links --times --verbose --delete-after \ + --exclude "Archive-Update-in-Progress-${HOSTNAME}" \ + --exclude "project/trace/" \ + --exclude "/pool-*/" \ + $EXCLUDE \ + $RSYNC_HOST::$RSYNC_DIR $TO >> $LOGFILE 2>&1 + + date -u > "${TO}/project/trace/${HOSTNAME}" +else + echo "ERROR: Help, something weird happened" | tee -a $LOGFILE + echo "mirroring /pool-* exited with exitcode" $result | tee -a $LOGFILE +fi + + +if ! [ -z $MAILTO ]; then + mail -s "debian ports archive synced" $MAILTO < $LOGFILE +fi + +savelog $LOGFILE |