| 12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152 |
- #!/bin/bash
- set -euo pipefail
- CONFIGDIR=/etc/mirrors
- CONFIGFILE=${CONFIGDIR}/config
- source ${CONFIGFILE}
- LOCKFILE=${LOCKDIR}/$(basename ${0}).lock
- [[ -f "${LOCKFILE}" ]] && {
- echo "Lock file $LOCKFILE found, skipping.."
- exit 0
- }
- #touch ${LOCKFILE}
- trap "/bin/rm -f ${LOCKFILE}" EXIT SIGHUP SIGINT SIGTERM
- # Show progress if argument is info
- # [[ "$1" == "info" ]] && ROPTS="$ROPTS --info=progress2 -h"
- for R in "${MIRRORS[@]}" ; do
- RR=( ${R//|/ } )
- MIRROR=${RR[0]}
- EXCLUDEFILE=$CONFIGDIR/${RR[1]}
- TARGETDIR=$TARGET/${RR[2]}
-
- [[ -r "${EXCLUDEFILE}" ]] || {
- echo "Exclude file ${EXCLUDEFILE} for mirror ${MIRROR} not found"
- continue
- }
- [[ -d "${TARGETDIR}" ]] || {
- echo "Creating target dir ${TARGETDIR} for mirror ${MIRROR}"
- mkdir -p ${TARGETDIR}
- }
- [[ -r "${TARGETDIR}" ]] || {
- echo "Target dir ${TARGETDIR} for mirror ${MIRROR} not found"
- continue
- }
- if [[ $MIRROR == rsync* ]]; then
- rsync ${ROPTS} -f "merge ${EXCLUDEFILE}" ${MIRROR}/ ${TARGETDIR}/
- elif [[ $MIRROR == http* ]]; then
- EXCLUDE=`cat ${EXCLUDEFILE}`
- wget ${WOPTS} -R "'${EXCLUDE//[$'\t\r\n']/,}'" -P ${TARGETDIR} ${MIRROR}
- else
- echo "Unknown mirror URL: ${MIRROR}"
- fi
- done
- sync
- exit 0
|