2 # this can help you create/update your fedora mirror
5 LOGDIR=/var/log/fedora-mirror
6 DATE=$(date '+%Y-%m-%d-%H-%M')
7 LOG=${LOGDIR}/${DATE}.log
16 us_fedora_url=rsync://mirrors.kernel.org/fedora
17 eu_fedora_url=rsync://mirror1.hs-esslingen.de/fedora/linux
19 default_distroname="f29"
20 all_distronames="f27 f29"
25 fedora_url=$eu_fedora_url
27 function mirror_distro_arch () {
31 distroname=$(echo $distroname | tr '[A-Z]' '[a-z]')
34 distroindex=$(echo $distroname | sed -e "s,f,,g")
39 echo "WARNING -- Unknown distribution $distroname -- skipped"
44 excludelist="debug/ iso/ ppc/ source/"
46 [ -n "$(rsync --help | grep no-motd)" ] && options="$options --no-motd"
47 options="$options $dry_run $verbose"
48 options="$options -aH --numeric-ids"
49 options="$options --delete --delete-excluded --delete-after --delay-updates"
50 for e in $excludelist; do
51 options="$options --exclude $e"
54 echo ">>>>>>>>>>>>>>>>>>>> distroname=$distroname arch=$arch rsyncurl=$rsyncurl"
55 [ -n "$verbose" ] && echo "rsync options=$options"
58 [ -z "$skip_core" ] && paths="releases/$distroindex/Everything/$arch/os/"
59 if [ "$distroindex" -le 27 ]; then
60 paths="$paths updates/$distroindex/$arch/"
63 paths="$paths updates/$distroindex/Everything/$arch/ updates/$distroindex/Modular/$arch/"
67 for repopath in $paths; do
68 echo "===== $distro -> $distroindex $repopath"
69 [ -z "$dry_run" ] && mkdir -p ${root}/${localpath}/${repopath}
70 command="rsync $options ${rsyncurl}/${repopath} ${root}/${localpath}/${repopath}"
75 echo "<<<<<<<<<<<<<<<<<<<< $distroname $arch"
81 echo "Usage: $COMMAND [-n] [-v] [-l] [-c] [-e|-s|-u rsyncurl] [-f distroname|-F]"
84 echo " -v : turn off verbose"
85 echo " -l : turns on autologging in $LOGDIR"
86 echo " -c : also sync core repository (releases)"
87 echo " -s : uses US mirror $us_fedora_url"
88 echo " -e : uses EU mirror $eu_fedora_url"
89 echo " -u <url> : use this (rsync) for fedora (default is $fedora_url)"
90 echo " -f distroname - default is $default_distroname"
91 echo " -F : do on all distros $all_distronames"
97 for distroname in $distronames ; do
98 for arch in $archs; do
99 mirror_distro_arch "$distroname" "$arch" || RES=1
108 while getopts "nvlcu:sef:Fh" opt ; do
110 n) dry_run=--dry-run ;;
114 u) fedora_url=$OPTARG ;;
115 s) fedora_url=$us_fedora_url ;;
116 e) fedora_url=$eu_fedora_url ;;
117 f) distronames="$distronames $OPTARG" ;;
118 F) distronames="$distronames $all_distronames" ;;
123 [[ -n "$@" ]] && usage
124 [ -z "$distronames" ] && distronames=$default_distroname
126 # auto log : if specified
127 if [ -n "$log" ] ; then
133 if [ "$?" == 0 ]; then
134 # report to fedora's infra
135 # can't get the config right...
136 #/usr/bin/report_mirror