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="f39"
20 all_distronames="f37 f39"
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"
50 options="$options --partial"
51 for e in $excludelist; do
52 options="$options --exclude $e"
55 echo ">>>>>>>>>>>>>>>>>>>> distroname=$distroname arch=$arch rsyncurl=$rsyncurl"
56 [ -n "$verbose" ] && echo "rsync options=$options"
59 [ -z "$skip_core" ] && paths="releases/$distroindex/Everything/$arch/os/"
60 if [ "$distroindex" -le 27 ]; then
61 paths="$paths updates/$distroindex/$arch/"
64 paths="$paths updates/$distroindex/Everything/$arch/ updates/$distroindex/Modular/$arch/"
68 for repopath in $paths; do
69 echo "===== $distro -> $distroindex $repopath"
70 [ -z "$dry_run" ] && mkdir -p ${root}/${localpath}/${repopath}
71 command="rsync $options ${rsyncurl}/${repopath} ${root}/${localpath}/${repopath}"
76 echo "<<<<<<<<<<<<<<<<<<<< $distroname $arch"
82 echo "Usage: $COMMAND [-n] [-v] [-l] [-c] [-e|-s|-u rsyncurl] [-f distroname|-F]"
85 echo " -v : turn off verbose"
86 echo " -l : turns on autologging in $LOGDIR"
87 echo " -c : also sync core repository (releases)"
88 echo " -s : uses US mirror $us_fedora_url"
89 echo " -e : uses EU mirror $eu_fedora_url"
90 echo " -u <url> : use this (rsync) for fedora (default is $fedora_url)"
91 echo " -f distroname - default is $default_distroname"
92 echo " -F : do on all distros $all_distronames"
98 for distroname in $distronames ; do
99 for arch in $archs; do
100 mirror_distro_arch "$distroname" "$arch" || RES=1
109 while getopts "nvlcu:sef:Fh" opt ; do
111 n) dry_run=--dry-run ;;
115 u) fedora_url=$OPTARG ;;
116 s) fedora_url=$us_fedora_url ;;
117 e) fedora_url=$eu_fedora_url ;;
118 f) distronames="$distronames $OPTARG" ;;
119 F) distronames="$distronames $all_distronames" ;;
124 [[ -n "$@" ]] && usage
125 [ -z "$distronames" ] && distronames=$default_distroname
127 # auto log : if specified
128 if [ -n "$log" ] ; then
134 if [ "$?" == 0 ]; then
135 # report to fedora's infra
136 # can't get the config right...
137 #/usr/bin/report_mirror