X-Git-Url: http://git.onelab.eu/?a=blobdiff_plain;f=vbuild-fedora-mirror.sh;h=716b9f3768dc719f0cec52eb6578b860fb957c48;hb=refs%2Fheads%2Fcoblitz;hp=feb511d237c9550f37e34aea771a475d94568bef;hpb=3e1844856eff96ffd5a4feb3b62065d7310c4618;p=build.git diff --git a/vbuild-fedora-mirror.sh b/vbuild-fedora-mirror.sh index feb511d2..716b9f37 100755 --- a/vbuild-fedora-mirror.sh +++ b/vbuild-fedora-mirror.sh @@ -1,38 +1,53 @@ #!/bin/bash # this can help you create/update your fedora mirror -# $Id$ COMMAND=$(basename $0) +LOGDIR=/var/log/fedora-mirroring +DATE=$(date '+%Y-%m-%d-%H-%M') +LOG=${LOGDIR}/${DATE}.log dry_run= verbose= +log= skip_core= root=/mirror/ + +dhozac_url=rsync://rpm.hozac.com/dhozac/centos/ + us_fedora_url=rsync://mirrors.kernel.org/fedora -# change this us_centos_url=rsync://mirrors.rit.edu/centos +us_epel_url=rsync://rsync.gtlib.gatech.edu/fedora-epel +# ircam's fedora8 repo has been turned off +#eu_fedora_url=rsync://mirrors.ircam.fr/fedora-linux +#eu_fedora_url=rsync://mirror.ovh.net/download.fedora.redhat.com/linux eu_fedora_url=rsync://ftp-stud.hs-esslingen.de/fedora/linux eu_centos_url=rsync://mirrors.ircam.fr/CentOS +eu_epel_url=rsync://mirrors.ircam.fr/fedora-epel + +pl_fedora_url=$eu_fedora_url +pl_centos_url=rsync://ftp.tpnet.pl/centos +pl_epel_url=rsync://ftp.icm.edu.pl/pub/Linux/fedora/linux/epel -# change this -jp_fedora_url="need-to-be-defined" -# change this -jp_centos_url="need-to-be-defined" +jp_fedora_url="jp_fedora_url-needs-to-be-defined" +jp_centos_url="jp_centos_url-needs-to-be-defined" +jp_epel_url="jp_epel_url-needs-to-be-defined" -default_distroname=f8 -all_distronames="f7 f8 f9 centos5.2" -default_arch=i386 +default_distroname="centos5.6" +all_distronames="f14 f16 centos5.6 epel5 epel6" +default_arch="i386" all_archs="i386 x86_64" case $(hostname) in - *.fr|*.de|*.uk) - fedora_url=$eu_fedora_url ; centos_url=$eu_centos_url ;; + blitz*|*.fr|*.de|*.uk) + fedora_url=$eu_fedora_url ; centos_url=$eu_centos_url ; epel_url=$eu_epel_url ;; + *.pl) + fedora_url=$pl_fedora_url ; centos_url=$pl_centos_url ; epel_url=$pl_epel_url ;; *.jp) - fedora_url=$jp_fedora_url ; centos_url=$jp_centos_url ;; + fedora_url=$jp_fedora_url ; centos_url=$jp_centos_url ; epel_url=$jp_epel_url ;; *) - fedora_url=$us_fedora_url ; centos_url=$us_centos_url ;; + fedora_url=$us_fedora_url ; centos_url=$us_centos_url ; epel_url=$us_epel_url ;; esac function mirror_distro_arch () { @@ -46,7 +61,7 @@ function mirror_distro_arch () { distro="Fedora Core" rsyncurl=$fedora_url ;; - f*[7-9]) + f*[7-9]|f1?) distroindex=$(echo $distroname | sed -e "s,f,,g") distro="Fedora" rsyncurl=$fedora_url @@ -56,6 +71,16 @@ function mirror_distro_arch () { distro="CentOS" rsyncurl=$centos_url ;; + epel[5-6]) + distroindex=$(echo $distroname | sed -e "s,epel,,g") + distro=epel + rsyncurl=$epel_url + ;; + dhozac) + distroindex=5 + distro="dhozac" + rsyncurl=$dhozac_url + ;; *) echo "WARNING -- Unknown distribution $distroname -- skipped" return 1 @@ -69,15 +94,8 @@ function mirror_distro_arch () { options="$options --exclude $e" done - if [ -n "$verbose" ] ; then - echo "root=$root" - echo "distro=$distroname" - echo "distroname=$distroname" - echo "distroindex=$distroindex" - echo "arch=$arch" - echo rsyncurl="$rsyncurl" - echo "rsync options=$options" - fi + echo ">>>>>>>>>>>>>>>>>>>> root=$root distroname=$distroname arch=$arch rsyncurl=$rsyncurl" + [ -n "$verbose" ] && echo "rsync options=$options" RES=1 paths="" @@ -89,9 +107,13 @@ function mirror_distro_arch () { paths="$paths core/updates/$distroindex/$arch/ extras/$distroindex/$arch/" RES=0 ;; - [7-9]) + 7|8|9|1?) [ -z "$skip_core" ] && paths="releases/$distroindex/Everything/$arch/os/" paths="$paths updates/$distroindex/$arch/" + # f8 and f9 have the additional newkey repo + case $distroindex in + 8|9) paths="$paths updates/$distroindex/${arch}.newkey/" ;; + esac RES=0 ;; esac @@ -109,13 +131,34 @@ function mirror_distro_arch () { localpath=centos ;; + epel*) + case $distroindex in + 5|6) + paths="$paths $distroindex/$arch/" + RES=0 + ;; + esac + localpath=epel + ;; + + dhozac*) + case $distroindex in + 5) + # leave off trailing '/' + paths="$paths $distroindex/vserver/$arch" + RES=0 + ;; + esac + localpath=dhozac + ;; + esac if [ "$RES" = 1 ] ; then echo "DISTRIBUTION $distro $distroindex CURRENTLY UNSUPPORTED - skipped" else for repopath in $paths; do - echo "============================== $distro -> $distroindex $repopath" + echo "===== $distro -> $distroindex $repopath" [ -z "$dry_run" ] && mkdir -p ${root}/${localpath}/${repopath} command="rsync $options ${rsyncurl}/${repopath} ${root}/${localpath}/${repopath}" echo $command @@ -123,6 +166,8 @@ function mirror_distro_arch () { done fi + echo "<<<<<<<<<<<<<<<<<<<< $distroname $arch" + return $RES } @@ -133,32 +178,50 @@ function usage () { echo "Options:" echo " -n : dry run" echo " -v : verbose" + echo " -l : turns on autologging in $LOGDIR" echo " -c : skips core repository" + echo " -C : force syncing core repository (default)" echo " -r root (default is $root)" echo " -u rsyncurl for fedora (default is $fedora_url)" echo " -U rsyncurl for centos (default is $centos_url)" - echo " -e : uses European mirrors $eu_fedora_url $eu_centos_url" - echo " -j : uses Japanese mirrors $jp_fedora_url $jp_centos_url" - echo " -f distroname - use vserver convention, e.g. fc6 and f7" + echo " -E rsyncurl for epel (default is $epel_url)" + echo " -s : uses standard (US) mirrors $us_fedora_url $us_centos_url $us_epel_url" + echo " -e : uses European mirrors $eu_fedora_url $eu_centos_url $eu_epel_url" + echo " -j : uses Japanese mirrors $jp_fedora_url $jp_centos_url $jp_epel_url" + echo " -f distroname - use vserver convention, e.g. f8 or centos5" echo " -F : for distroname in $all_distronames" echo " -a arch - use yum convention" echo " -A : for arch in $all_archs" exit 1 } +function run () { + RES=0 + for distroname in $distronames ; do + for arch in $archs; do + mirror_distro_arch "$distroname" "$arch" || RES=1 + done + done + return $RES +} + function main () { distronames="" archs="" - while getopts "nvcr:u:U:ef:Fa:Ah" opt ; do + while getopts "nvlcCr:u:U:E:sejf:Fa:Ah" opt ; do case $opt in - n) dry_run=--dry-run ; verbose=--verbose ;; + n) dry_run=--dry-run ;; v) verbose=--verbose ;; + l) log=true ;; c) skip_core=true ;; + C) skip_core= ;; r) root=$OPTARG ;; u) fedora_url=$OPTARG ;; U) centos_url=$OPTARG ;; - e) fedora_url=$eu_fedora_url ; centos_url=$eu_centos_url ;; - j) fedora_url=$jp_fedora_url ; centos_url=$jp_centos_url ;; + E) epel_url=$OPTARG ;; + s) fedora_url=$us_fedora_url ; centos_url=$us_centos_url ; epel_url=$us_epel_url;; + e) fedora_url=$eu_fedora_url ; centos_url=$eu_centos_url ; epel_url=$eu_epel_url ;; + j) fedora_url=$jp_fedora_url ; centos_url=$jp_centos_url ; epel_url=$jp_epel_url ;; f) distronames="$distronames $OPTARG" ;; F) distronames="$distronames $all_distronames" ;; a) archs="$archs $OPTARG" ;; @@ -166,17 +229,19 @@ function main () { h|*) usage ;; esac done + shift $(($OPTIND-1)) + [[ -n "$@" ]] && usage [ -z "$distronames" ] && distronames=$default_distroname [ -z "$archs" ] && archs=$default_arch - RES=0 - for distroname in $distronames ; do - for arch in $archs; do - mirror_distro_arch "$distroname" "$arch" || RES=1 - done - done - - exit $RES + # auto log : if specified + if [ -n "$log" ] ; then + mkdir -p $LOGDIR + run &> $LOG + else + run + fi + exit $? } main "$@"