Date: Wed, 03 Jan 1996 01:23:28 -0800 From: "Jordan K. Hubbard" <jkh@time.cdrom.com> To: David Dawes <dawes@rf900.physics.usyd.edu.au> Cc: hackers@freebsd.org Subject: Re: Mirror site maintainers! Please check... Message-ID: <4648.820661008@time.cdrom.com> In-Reply-To: Your message of "Wed, 03 Jan 1996 19:27:00 %2B1100." <199601030827.TAA07999@rf900.physics.usyd.edu.au>
next in thread | previous in thread | raw e-mail | index | archive | help
[Cc'd to -hackers as I attempt to explain the method to my madness herein]
> The au addresses point to the right place, but the path for
> ftp2.au.freebsd.org isn't right. It is /BSD/FreeBSD (or /FreeBSD).
Urk. I don't suppose I could convince you to put in a pub/FreeBSD
symlink? I'm not trying to be an archive fascist here, I'm really
not, I'm just trying to make things as orthogonal as possible.
In particular, what I'd really like to be able to do at some
point is probably best demonstrated by the following shell script,
let's call it `hosts':
---- cut here ----
#!/bin/sh
usage()
{
echo "Usage: $0 [-q] <domain>|top"
exit 1
}
if [ $# -lt 1 ]; then
usage
fi
if [ "$1" = "-q" ]; then
quiet=YES
shift
else
quiet=NO
fi
if [ $# -lt 1 ]; then
usage
elif [ $# -lt 2 ]; then
target=ftp
else
target=$2
fi
if [ "$1" != "top" ]; then
domain=$1.freebsd.org
else
domain=freebsd.org
fi
if [ "$quiet" != "YES" ]; then
echo Looking for $target servers in the $domain domain.
fi
# First look for the `base' server. If it doesn't exist, it's pretty much
# assured that there won't be any others.
if host $target.$domain > /dev/null 2>&1 ; then
echo $target.$domain
next=2
while [ $next -ne 0 ]; do
if host $target$next.$domain > /dev/null 2>&1 ; then
echo $target$next.$domain
next=`expr $next + 1`
else
success=NO
next=0
fi
done
fi
exit 0
---- cut here ----
Now we can do this to find all the FTP servers in Japan:
jkh@time-> ./hosts jp ftp
Looking for ftp servers in the jp.freebsd.org domain.
ftp.jp.freebsd.org
ftp2.jp.freebsd.org
ftp3.jp.freebsd.org
ftp4.jp.freebsd.org
ftp5.jp.freebsd.org
ftp6.jp.freebsd.org
Or all the WWW servers in Brazil:
jkh@time-> ./hosts br www
Looking for www servers in the br.freebsd.org domain.
www.br.freebsd.org
But where it really comes into its own (and why I need consistent
naming on the mirrors) is in something like this:
target=".. some file .."
domain=".. some domain, perhaps chosen from a menu .. "
success=NO
while [ "$success" = "NO ]; do
for host in `./hosts -q $domain`; do
if ncftp ftp://$host/pub/FreeBSD/$target; then
success=YES ;
break
fi
done
done
Voila - one auto-fetcher that automatically tries all the mirrors
in a given domain. You could even change it to:
for host in `./hosts -q $domain` `./hosts -q top`; do
To try all the regional ones first, followed by the main archive
U.S. sites.
Anyway, I'm sure you get the basic idea!
> I also notice that you don't have maintainer addresses for the sites
> in the *.freebsd.org domains. Is that intentional?
Yeah, basically I'm trying to get things to the point where we can
shift the load around at will as major sites change management or
otherwise get overtaken by others with better connectivity. To get to
that point, we need to start thinking of `ftp2.au.freebsd.org' less as
a machine and more as a carefully managed `slot' in Australia's ftp
coverage.
Jordan
Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?4648.820661008>
