summaryrefslogtreecommitdiffstats
path: root/mirrorsync
diff options
context:
space:
mode:
Diffstat (limited to 'mirrorsync')
-rw-r--r--mirrorsync77
1 files changed, 50 insertions, 27 deletions
diff --git a/mirrorsync b/mirrorsync
index 002b840..2ceb9d1 100644
--- a/mirrorsync
+++ b/mirrorsync
@@ -32,20 +32,6 @@
# SOFTWARE.
#
-# Find rsync in default path
-rsync_run(){
- if command -v rsync >/dev/null; then
- command rsync "$@";
- else
- command -p rsync "$@";
- fi;
-}
-
-# You can change v to q if you do not want detailed logging
-# You may also add additional excludes if you don't want to provide certain
-# repositories or architectures.
-opts=(-avSH --exclude="*.~tmp~" --delete-delay --delay-updates)
-
# Please use a mirror geographically close to you for initial sync,
# or if you are hosting a private mirror (not publicly available).
#
@@ -57,24 +43,52 @@ opts=(-avSH --exclude="*.~tmp~" --delete-delay --delay-updates)
# A complete list of mirrors can be found at
# https://rpms.remirepo.net/
-# Enterprise repo source
-src1="rsync://rpms.remirepo.net/enterprise"
-# Fedora repo source
-src2="rsync://rpms.remirepo.net/fedora"
-
+##### TO BE ADAPTED TO YOUR CONFIGURATION #####
+# sync from primary mirror only allowed to official mirrors
+src="rsync://rpms.remirepo.net"
# Your local path. Change to whatever fits your system.
+dst=/mnt/RepoSync
# $mirrormodule is also used in syslog output.
+# ${dst}/${mirrormodule}/enterprise MUST exists
+# ${dst}/${mirrormodule}/fedora MUST exists
mirrormodule="Remi"
-dst1="/mnt/RepoSync/${mirrormodule}/enterprise"
-dst2="/mnt/RepoSync/${mirrormodule}/fedora"
+# You can change v to q if you do not want detailed logging
+# You may also add additional excludes if you don't want to provide certain
+# repositories or architectures.
+opts=(-avSH --exclude="*.~tmp~" --delete-delay --delay-updates)
+##### END OF TO BE ADAPTED #####
+
+# Enterprise repo
+src1="${src}/enterprise"
+dst1="${dst}/${mirrormodule}/enterprise"
+# Fedora repo
+src2="${src}/fedora"
+dst2="${dst}/${mirrormodule}/fedora"
datefile="date"
lockfile="$0.lockfile"
logfile="$0.log"
+# Find rsync in default path
+rsync_run(){
+ if command -v rsync >/dev/null; then
+ command rsync "$@";
+ else
+ command -p rsync "$@";
+ fi;
+}
+
+if [ ! -d ${dst1} ]; then
+ echo "${dst1} directory does not exist"
+ exit 1
+fi
+if [ ! -d ${dst2} ]; then
+ echo "${dst2} directory does not exist"
+ exit 1
+fi
# Always pull the index.html to ensure the latest. curl/wget would still use same bandiwdth to check if the page changed even
# if we aren't going to save a new copy
-wget https://rpms.remirepo.net/index.html -O /mnt/RepoSync/${mirrormodule}/index.html
+wget https://rpms.remirepo.net/index.html -O ${dst}/${mirrormodule}/index.html >> "$logfile" 2>&1
# Check if the datefile has changed on upstream mirror
# and exit cleanly if it is still the same
@@ -106,19 +120,28 @@ fi
# The actual syncing part
printf '%s\n' "$$" > "$lockfile"
printf "Started update at %(%c)T\n" -1 >> "$logfile" 2>&1
-logger -t rsync "Updating ${mirrormodule}"
-
# Sync src1/dst1 if there are changes
if [[ -n "$checkresult1" ]]; then
- rsync_run "${opts[@]}" "${src1}/" "${dst1}/" >> "$logfile" 2>&1
+ logger -t rsync "Updating ${mirrormodule} for ${dst1}"
+ if rsync_run "${opts[@]}" "${src1}/" "${dst1}/" >> "$logfile" 2>&1; then
+ logger -t rsync "Succeed updating ${mirrormodule}"
+ else
+ logger -t rsync "Failed updating ${mirrormodule} see ${logfile}"
+ rm -f ${dst1}/${datefile}
+ fi
fi
# Sync src2/dst2 if there are changes
if [[ -n "$checkresult2" ]]; then
- rsync_run "${opts[@]}" "${src2}/" "${dst2}/" >> "$logfile" 2>&1
+ logger -t rsync "Updating ${mirrormodule} for ${dst2}"
+ if rsync_run "${opts[@]}" "${src2}/" "${dst2}/" >> "$logfile" 2>&1; then
+ logger -t rsync "Succeed updating ${mirrormodule}"
+ else
+ logger -t rsync "Failed updating ${mirrormodule} see ${logfile}"
+ rm -f ${dst1}/${datefile}
+ fi
fi
-logger -t rsync "Finished updating ${mirrormodule}"
printf "End: %(%c)T\n" -1 >> "$logfile" 2>&1
rm -f "$lockfile"