#! /bin/sh
set -e

# This script originates from http://www.debian.org/mirror/anonftpsync

# 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).

TO=/home1/ftp/debian

# RSYNC_HOST is the site you have chosen from the mirrors file.
# (http://www.debian.org/mirror/list-full)

RSYNC_HOST=61.156.20.125
#RSYNC_HOST=ftp.de.debian.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.

RSYNC_DIR=debian
EXCLUDE="--exclude binary-sparc/ --exclude binary-hppa/ --exclude binary-s390/ --exclude *_sparc.deb  --exclude *_s390.deb  --exclude *_hppa.deb "
# EXCLUDE is a list of parameters listing patterns that rsync will exclude.
# The following example would exclude mostly everything:
EXCLUDE="\
  --exclude *-alpha/ --exclude *-arm/ \
  --exclude *-m68k/ --exclude *-powerpc/ --exclude *-sparc/ \
  --exclude *-ia64/ --exclude *-mipsel/ --exclude *-mips/ \
  --exclude *-hppa/ \
  --exclude *-sh/ --exclude *-s390/ \
  --exclude *-hurd-i386/ \
  --exclude *_alpha.deb --exclude *_arm.deb \
  --exclude *_m68k.deb --exclude *_powerpc.deb --exclude *_sparc.deb \
  --exclude *_ia64.deb --exclude *_hppa.deb --exclude *_sh.deb \
  --exclude *_mips.deb --exclude *_mipsel.deb --exclude *_s390.deb \
  --exclude *_hurd-i386.deb \
  --exclude stable/ --exclude testing/ --exclude unstable/ \
  --exclude kernel-*-2.2* --exclude kernel-*-2.4* \
  --exclude source/ \
  --exclude *.orig.tar.gz --exclude *.diff.gz --exclude *.dsc \
  --exclude *.tar.gz --exclude *woody* --exclude *sid* --exclude *.udeb \
 "

# With a blank EXCLUDE you will mirror the entire archive.

#EXCLUDE=

# There should be no need to edit anything below this point, unless there
# are problems.

#-----------------------------------------------------------------------------#

# 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`

LOCK="${TO}/Archive-Update-in-Progress-${HOSTNAME}"

# 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 43200 -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
rsync --recursive --links --hard-links --times --verbose --compress --delete \
--exclude "Archive-Update-in-Progress-${HOSTNAME}" \
--exclude "project/trace/${HOSTNAME}" \
$EXCLUDE \
$RSYNC_HOST::$RSYNC_DIR $TO > /tmp/rsync.log 2>&1
date -u > "${TO}/project/trace/${HOSTNAME}"
# Note: if you don't have savelog, use any other log rotation facility, or
# comment this out, the log will simply be overwritten each time.
savelog /tmp/rsync.log > /dev/null 2>&1
			
