For a while now, I have been running a Debian mirror. When you manage as many hosts like I am part of a team do, you tend to think about how it all negatively affect the upstream providers, and really just the community in general.
So with out further ado, here is my take and steps on setting up a mirror, using Raphael Geissert's tool ftpsync.
First you need to create a user and ensure the switch to that user.
sudo adduser \
--shell /bin/bash \
--gecos 'User for FTPsync' \
sudo -i -u ftpsync
git clone https://github.com/rgeissert/ftpsync /home/ftpsync/
Next on the list if to create the configs. Generally people just copy sample config, but there is quite a few options, but you only need a hand few, so therefore I am just going to share what I have.
ARCH_EXCLUDE="alpha arm arm64 armel armhf hppa hurd-i386 ia64 kfreebsd-amd64 kfreebsd-i386 m68k mipsel mips powerpc s390 s390x sh sparc source ppc64el"
Next on the list is to have a cron entry to kick off you new shiny mirroring tool. And for that you can just crontab -e , as user ftpsync.
And then add:
5 * * * * /home/ftpsync/bin/ftpsync sync:all >/dev/null 2>&1
And that’s that. You now just need to sit and watch the location on where you defined your $TO variable grow.
One thing I would like too add, at the time of writing, mirroring just i386 and amd64 is using on my VM 373Gigs (Hence the reason why I only mirror these two architectures). Show maybe just make sure you enough space allocated.
Two last parts
You then need to install and configure nginx or apache to offer and share the docroute of '/var/www/mirror/'.
Next you need to edit (or create)
echo 'deb http://your.mirror.co.za/debian/ wheezy main contrib non-free' > /etc/apt/sources.list.d/debian.list
P.s. Remember there too are other repos. i.e.