Поводом для написания этого поста стало то, что сервер, с которого я всегда синхронизировался сильно отстал (около недели) и я не смог обновить свой Firefox до версии 3.5. Меня же, конечно, такая ситуация не устраивает и я решил найти другой сервер, с куда более актуальной информацией. Изыскания по этому поводу привели меня совсем к неожиданным результатам.
Первый вопрос, который мне нужно было решить - найти новый сервер, но как его найти, если в интернете их может быть море? Какое из них лучше подойдет для меня? Есть ли на них rsync? На последний вопрос ответим несколько позже, пока же нас интересует подходящее по скорости зеркало. Здесь очень сильно выручает программа, о которой я слышал давно, но пришлось воспользоваться сегодня впервые. Встречаем, rankmirrors. Так как мануала не нашлось, воспользумся ключом -h и узнаем о возможных функциях и о том, как его использовать. Повторюсь, так как серверов может быть море, а нам все они не нужны, используем другой ключ для указания выводимого количества серверов. Почему-то меня привлекла цифра 15, поэтому я использовал её, итак, натравляем на официальный /etc/pacman.d/mirrorlist:rankmirrors -n 15 /etc/pacman.d/mirrorlist
Как показала практика, 15 - это слишком много, поэтому можно в следующий раз поставить меньше. По результатам работы программы, был предложен список из наиболее быстрых для меня 15 зеркал, и соответственно лучше всего мне подходящих. Далее идем в вики Arch Linux, чтобы узнать о том, поддерживает ли rsync выбранное вами зеркало:http://wiki.archlinux.org/index.php/Mirrors
Из моего списка, зеркало, оказавшееся на 4 месте предоставляло такую возможность, поэтому им можно заменить ранее используемое. После того, как зеркало выбрано, необходимо обновить алиас, но у меня с этим беда, хоть убей, но без перезагрузки он не обновляется, не знаю, что с ним сделать. Выходом стал иной подход, а именно создание скрипта и указание его запуска в алиасе (всё равно придется перезагружать, но это последний раз), таким образом все изменения в скрипте доступны сразу без обновления алиаса. Мой старый скрипт слишком избыточный и непонятный, он выглядит примерно также, как алиас из первой части. И я решил его переписать, добавил переменные $repo, $server, $srcdir и $destdir для определения репозитория, сервера, каталога на сервере и каталога назначения. Теперь скрипт выглядит локанично, понятно и может быть изменён в любое время, вот он:server='example.com'
srcdir='archlinux'
destdir='/media/sdb6/arch/'
echo "Server: $server; Source dir: $srcdir; Destination dir: $destdir"
for repo in {core,extra,community} ; do rsync -avz --delete --exclude=os/x86_64 $server::$srcdir/$repo $destdir ; done
Сохраняем, делаем исполняемым. После чего алиас mirsync заменяем на 'sh /путь/к/скрипту/mirsync.sh'. Итак, на выходе мы получим одну единственную команду, которая синхронизирует локальный репозиторий с самым быстрым зеркалом конкретно для вас. Кстати, я пока отказался от синхронизации x86_64.

Комментарии (0)
Отправить комментарий