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"
66 for repopath in $paths; do
67 echo "===== $distro -> $distroindex $repopath"
68 [ -z "$dry_run" ] && mkdir -p ${root}/${localpath}/${repopath}
69 command="rsync $options ${rsyncurl}/${repopath} ${root}/${localpath}/${repopath}"
74 echo "<<<<<<<<<<<<<<<<<<<< $distroname $arch"
80 echo "Usage: $COMMAND [-n] [-v] [-l] [-c] [-e|-s|-u rsyncurl] [-f distroname|-F]"
83 echo " -v : turn off verbose"
84 echo " -l : turns on autologging in $LOGDIR"
85 echo " -c : also sync core repository (releases)"
86 echo " -s : uses US mirror $us_fedora_url"
87 echo " -e : uses EU mirror $eu_fedora_url"
88 echo " -u <url> : use this (rsync) for fedora (default is $fedora_url)"
89 echo " -f distroname - default is $default_distroname"
90 echo " -F : do on all distros $all_distronames"
96 for distroname in $distronames ; do
97 for arch in $archs; do
98 mirror_distro_arch "$distroname" "$arch" || RES=1
107 while getopts "nvlcu:sef:Fh" opt ; do
109 n) dry_run=--dry-run ;;
113 u) fedora_url=$OPTARG ;;
114 s) fedora_url=$us_fedora_url ;;
115 e) fedora_url=$eu_fedora_url ;;
116 f) distronames="$distronames $OPTARG" ;;
117 F) distronames="$distronames $all_distronames" ;;
122 [[ -n "$@" ]] && usage
123 [ -z "$distronames" ] && distronames=$default_distroname
125 # auto log : if specified
126 if [ -n "$log" ] ; then
132 if [ "$?" == 0 ]; then
133 # report to fedora's infra
134 # can't get the config right...
135 #/usr/bin/report_mirror