Old Mirror
![]() |
Please help improve this article or section by expanding it. Further information might be found on the talk page. (This article has been tagged since: October 3, 2007). |
Hostname: | mirror.clarkson.edu |
Status: | Running |
Mirror is an open source projects mirror that mirrors different Linux distributions (see below) and the Linux kernel itself. It can be accessed through a web interface or by anonymous FTP.
Mirrored Software
- ArchLinux
- Fedora (ON HOLD)
- Kernel.org
- Ubuntu
Scripts
Mirror is maintained by many small scripts, this page documents them all. The following are located in the directory: /etc/mirrorscripts
rsyncVars
This scriptlet defines all the variables used in the scripts that actually do the mirroring.
<source lang="bash">## Master Include File for the Mirror Rsync Scripts
- DISTRO MUST BE DEFINED BEFORE SOURCING THIS FILE!
- Define program paths
TOUCH=/usr/bin/touch DATE=/bin/date RSYNC=/usr/bin/rsync CHGRP=/bin/chgrp RM=/bin/rm
- Define File Paths
LOGFILE=/var/log/mirrorlogs/${DISTRO}-$(${DATE} +%m-%d-%y) LOCKFILE=/var/lock/${DISTRO}.lck DEST=/aoedisk/${DISTRO}
- Rsync Options
RSYNCOPTS='-avrH --partial --stats --delay-updates --delete --delete-after' </source>
template
This is the master template for all the new mirror scripts (meaning that Archlinux's and Kernel.org's don't follow this exactly). Just plugin URL and DISTRO and you are good to go.
<source lang="bash">#!/bin/bash -
- Template Mirror Script for mirror.clarkson.edu
- Copyright 2007 Chris Peterman <petermcv@clarkson.edu>
- Licensed under the GPLv2
- Define which distro we are mirroring here
DISTRO=
- Define the URL which we rsync from
URL=
- Load all the variable from the master include file
source /etc/mirrorscripts/rsyncVars
- Make sure another instance of this script isn't running right now
if [ ! -e ${LOCKFILE} ] then
## No one else is running, put down a lockfile so no one interupts us ${TOUCH} ${LOCKFILE}
## Begin the Rsync, send all output to the logfiles ${RSYNC} ${RSYNCOPTS} ${URL} ${DEST} > ${LOGFILE}
## Change the group ownership of the log files to Mirrorlogs ${CHGRP} mirrorlogs ${LOGFILE}
## Remove the lockfile, we are done ${RM} ${LOCKFILE}
## Send a good exit code exit 0
else
## Someone else was running. Not really an error so we exit with a successful error code exit 0
fi </source>
archlinux
This is Archlinux's rsync script. It was created before the prototype, and is a little different than others.
<source lang="bash">#!/bin/bash -
- Define which distro we are mirroring
DISTRO=archlinux
- Load all the variables from the master include file
source /etc/mirrorscripts/rsyncVars
- Make sure another instance of this script isn't running right now
if [ ! -e ${LOCKFILE} ] then ## No one else is running, put down a lockfile to make sure no one interrupts us ${TOUCH} ${LOCKFILE} ## Begin the Rsync, send all output to the logfiles ${RSYNC} ${RSYNCOPTS} distro.ibiblio.org::distros/archlinux/ ${DEST} > ${LOGFILE} ## Change the group ownership of the log files to Mirrorlogs ${CHGRP} mirrorlogs ${LOGFILE} ## Remove the lockfile, we are done ${RM} ${LOCKFILE} ## Send a good exit code exit 0 else ## Someone else was running. Not really an error so we exit with a successful error code exit 0 fi </source>
linux
This is the script for Kernel.org. It is notable because we actually rsync two different modules at once.
<source lang="bash">#!/bin/bash -
- Define which distro we are mirroring
DISTRO=linux
- Load all the variables from the master include file
source /etc/mirrorscripts/rsyncVars
- Make sure another instance of this script isn't running right now
if [ ! -e ${LOCKFILE} ] then ## No one else is running, put down a lockfile to make sure no one interrupts us ${TOUCH} ${LOCKFILE}
## Begin the Rsync, send all output to the logfiles ${RSYNC} ${RSYNCOPTS} ftp.uofo.lkams.kernel.org::ftp/pub/linux/ ${DEST} > ${LOGFILE} ${RSYNC} ${RSYNCOPTS} ftp.uofo.lkams.kernel.org::ftp/pub/software/ /aoedisk/software >> ${LOGFILE}
## Change the group ownership of the logs to Mirrorlogs ${CHGRP} mirrorlogs ${LOGFILE}
## We are done, remove the lockfile ${RM} ${LOCKFILE}
## Send a clean exit code exit 0 else ## Another copy of the script was running, not really an error on our part, so send a successful error code exit 0 fi </source>
mirrorLogRotate
This is located in /etc/cron.monthly and rotates the logs in /var/log/mirrorlogs
<source lang="bash">
- !/bin/bash -
- Log Rotation Script for mirror.clarkson.edu's rsync logs
- Copyright 2007 Chris Peterman <petermcv@clarkson.edu>
- Licensed under the GPLv2
- Set month number to LAST month
(( month = $(/bin/date +%m) - 1 ))
- Account for January being 1 and December being 12. There is no month
- 0, at least as returned by /bin/date
if [ ${month} -eq 0 ] then month=12 fi
- Set the year
year=$(/bin/date +%y)
- Set the mirror log directory
logDir=/var/log/mirrorlogs
for distro in archlinux fedora ubuntu centos gentoo debian do ## Archive the logs from last month, then delete them (NOT the Archive) /bin/tar -czvf /tmp/${distro}-${month}-${year}.tgz ${logDir}/${distro}-${month}-*-${year} && /bin/rm -v ${logDir}/${distro}-${month}-*-${year}
## Move the log Tarball back to the logdir /bin/mv /tmp/${distro}-${month}-${year}.tgz ${logDir} done
exit 0 </source>