[root@server repo-updt.d]# cat sync_mirror
Код: Выделить всё
#! /bin/bash
mirrors=$(ls mirror* | \
LANG=C sed -e '/mirror-[A-Za-z0-9\._-]\+$/ { s/^mirror-//g;s/[0-9]/ &/}' | \
LANG=C sort -k 1,1 -k 2n | \
LANG=C sed 's/ //')
rc=0
echo $mirrors
#FILES="/etc/sysconfig/network-scripts/route-$1"
for i in $mirrors; do
for file in mirror-$i; do
if [ -f "$file" ]; then
{ cat "$file"; echo; } | while read line; do
#echo $line
if [ -z "$line" ]; then continue; fi
if [ `echo $line | grep 'baseURL'` ]; then
baseURL=`echo $line | sed "s/baseURL=//"`
continue;
fi
if [ `echo $line | grep 'basePATH'` ]; then
basePATH=`echo $line | sed "s/basePATH=//"`
continue;
fi
if [ `echo $line | grep 'proto'` ]; then
proto=`echo $line | sed "s/proto=//"`
continue;
fi
suffix=`echo $line | sed "s ^$baseURL "`
mkdir -p "$basePATH$suffix"
rsync -alHr --progress --delete $proto://$line $basePATH$suffix
done
fi
done
done
скрипт ищет все файлы в его каталоге, начинаюшиеся на "mirror-", парсит их построчно, находит там описания переменных и список url для синхронизации
[root@server repo-updt.d]# cat mirror-Mandriva_2010.0_i586
Код: Выделить всё
baseURL=ftp.chg.ru/mandriva/official/2010.0/i586/media/
basePATH=/var/ftp/mirror/Mandriva_2010.0_i586/official/
proto=rsync
ftp.chg.ru/mandriva/official/2010.0/i586/media/main/release/
ftp.chg.ru/mandriva/official/2010.0/i586/media/contrib/release/
ftp.chg.ru/mandriva/official/2010.0/i586/media/non-free/release/
ftp.chg.ru/mandriva/official/2010.0/i586/media/main/updates/
ftp.chg.ru/mandriva/official/2010.0/i586/media/contrib/updates/
ftp.chg.ru/mandriva/official/2010.0/i586/media/non-free/updates/
ftp.chg.ru/mandriva/official/2010.0/i586/media/main/backports/
ftp.chg.ru/mandriva/official/2010.0/i586/media/contrib/backports/
ftp.chg.ru/mandriva/official/2010.0/i586/media/non-free/backports/
ftp.chg.ru/mandriva/official/2010.0/i586/media/main/testing/
ftp.chg.ru/mandriva/official/2010.0/i586/media/contrib/testing/
ftp.chg.ru/mandriva/official/2010.0/i586/media/non-free/testing/
baseURL=ftp.free.fr/pub/Distributions_Linux/plf/mandriva/2010.0/
basePATH=/var/ftp/mirror/Mandriva_2010.0_i586/plf/
proto=ftp
ftp.free.fr/pub/Distributions_Linux/plf/mandriva/2010.0/free/release/binary/i586/
ftp.free.fr/pub/Distributions_Linux/plf/mandriva/2010.0/non-free/release/binary/i586/
ftp.free.fr/pub/Distributions_Linux/plf/mandriva/2010.0/free/backports/binary/i586/
ftp.free.fr/pub/Distributions_Linux/plf/mandriva/2010.0/non-free/backports/binary/i586/
это пример файла с описанием источников.
baseURL нужен для того, чтобы отсечь его от URL и добавить к basePATH, то есть сформировать автоматически путь назначения для файлов.
proto - указывает по какому протоколу rsync будет качать данные с сервера.
в конце каждого url обязательно писать слеш /, иначе будут глюки в папке назначения.
Пустые строки скрипт игнорирует, а вот комментарии я не заложил
Спасибо большое Subj за помощь в написании скрипта