simpler mirroring script
authorThierry Parmentelat <thierry.parmentelat@inria.fr>
Sat, 20 Jun 2015 09:10:47 +0000 (11:10 +0200)
committerThierry Parmentelat <thierry.parmentelat@inria.fr>
Sat, 20 Jun 2015 09:10:47 +0000 (11:10 +0200)
fedora-mirror2.sh [new file with mode: 0644]

diff --git a/fedora-mirror2.sh b/fedora-mirror2.sh
new file mode 100644 (file)
index 0000000..01db09e
--- /dev/null
@@ -0,0 +1,54 @@
+#!/bin/sh
+# 
+# using fedora's mirrormanager (hence report_mirror)
+# inspired by
+# http://www.techrepublic.com/blog/linux-and-open-source/create-a-local-fedora-mirror-system-and-get-blazing-fast-updates/
+
+current_versions="20 21 22"
+upstream_url=rsync://mirror2.hs-esslingen.de/fedora/linux
+
+###
+fdest="/mirror/fedora"
+# xxx not sure if useful
+excludes_file=/mirror/fedora/fedora-excludes.txt
+
+lock=".rsync_updates.lock"
+options="$@"
+
+# for safety - clear lock if older than 4 hours
+GRACE=240
+is_old=$(find $lock -mmin +$GRACE 2> /dev/null)
+if [ -n "$is_old" ] ; then
+    msg "$lock is older than $GRACE minutes - removing"
+    rm -f $lock
+fi
+
+if [ -f ${lock} ]; then
+    echo "Updates via rsync already running."
+    exit 0
+fi
+
+for version in $current_versions; do
+    if [ -d ${fdest}/releases/${version}/Everything ]; then
+        echo "Synchronizing Fedora ${version}"
+        pushd ${fdest}/releases/${version} >& /dev/null
+            rsync -avH ${upstream_url}/releases/${version}/Everything . --exclude-from=${excludes_file} ${options} \
+                --numeric-ids --delete --delete-after --delay-updates
+        popd >& /dev/null
+        if [ "${version}" == "14" ]; then
+        echo "Synchronizing Fedora updates for version ${version}"
+        pushd ${fdest}/updates/${version} >& /dev/null
+            rsync -avH ${upstream_url}/updates/${version}/ . --exclude-from=${excludes_file} ${options} \
+                --numeric-ids --delete --delete-after --delay-updates
+        popd >& /dev/null
+        fi
+    else
+        echo "Target directory ${fdest}/${releases}/${version}/ not present."
+    fi
+done
+
+# report to fedora's infra
+/usr/bin/report_mirror
+
+#clear lock
+/bin/rm -f ${lock}