simpler mirroring script
[build.git] / fedora-mirror2.sh
1 #!/bin/sh
2
3 # using fedora's mirrormanager (hence report_mirror)
4 # inspired by
5 # http://www.techrepublic.com/blog/linux-and-open-source/create-a-local-fedora-mirror-system-and-get-blazing-fast-updates/
6
7 current_versions="20 21 22"
8 upstream_url=rsync://mirror2.hs-esslingen.de/fedora/linux
9
10 ###
11 fdest="/mirror/fedora"
12 # xxx not sure if useful
13 excludes_file=/mirror/fedora/fedora-excludes.txt
14
15 lock=".rsync_updates.lock"
16 options="$@"
17
18 # for safety - clear lock if older than 4 hours
19 GRACE=240
20 is_old=$(find $lock -mmin +$GRACE 2> /dev/null)
21 if [ -n "$is_old" ] ; then
22     msg "$lock is older than $GRACE minutes - removing"
23     rm -f $lock
24 fi
25
26 if [ -f ${lock} ]; then
27     echo "Updates via rsync already running."
28     exit 0
29 fi
30
31 for version in $current_versions; do
32     if [ -d ${fdest}/releases/${version}/Everything ]; then
33         echo "Synchronizing Fedora ${version}"
34         pushd ${fdest}/releases/${version} >& /dev/null
35             rsync -avH ${upstream_url}/releases/${version}/Everything . --exclude-from=${excludes_file} ${options} \
36                 --numeric-ids --delete --delete-after --delay-updates
37         popd >& /dev/null
38         if [ "${version}" == "14" ]; then
39         echo "Synchronizing Fedora updates for version ${version}"
40         pushd ${fdest}/updates/${version} >& /dev/null
41             rsync -avH ${upstream_url}/updates/${version}/ . --exclude-from=${excludes_file} ${options} \
42                 --numeric-ids --delete --delete-after --delay-updates
43         popd >& /dev/null
44         fi
45     else
46         echo "Target directory ${fdest}/${releases}/${version}/ not present."
47     fi
48 done
49
50 # report to fedora's infra
51 /usr/bin/report_mirror
52
53 #clear lock
54 /bin/rm -f ${lock}